AndroidのUIテストの超基礎

久しぶりすぎて色々記憶が飛んでいるので,復習.
扱うのは王道(たぶん)のEspresso.リファレンスは以下.

Espresso  |  Android Developers
Espresso setup instructions  |  Android Developers

基本的に書いていることをそのまんまコピペすれば良いんだけど,
@RunWith(AndroidJunit4.class)の部分がdeprecatedになっていた.

こちらの記事の末尾によると,依存先を変えれば良いとのこと.
AndroidでContextが必要な機能のテストコードを簡単に書こうとしてとても時間がかかった話 - Qiita

// 修正前
androidTestImplementation 'androidx.test:runner:1.1.0'
// 修正後
androidTestImplementation 'androidx.test.ext:junit:1.0.0'

あとはGradleからconnectedAndroidTestで実行して
redなりgreenなりを示してくれればOK.

Matcherのラインナップとしては以下.
これらを使って色々なassertionを記述することになる.
ViewMatchers  |  Android Developers


というわけで,久々に何か作ろうと思います.

Androidを支える技術I 感想

Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plus)

Androidを支える技術〈I〉──60fpsを達成するモダンなGUIシステム (WEB+DB PRESS plus)

本当は上下巻構成なのだが,
中々のボリュームだったので,一旦上巻のみの感想.

スマートフォンのOSでiOSと双璧をなすAndroid
覚えてしまえば割と簡単にアプリを作成できるのだが,
如何せん根本部分のリファレンスが少なかったりする.
その結果として,
「仕組みはよく分からないけど,とにかくこれで動く」
という,おまじないがコードの大部分を占めがち.

そんな中,本書は「描画」にターゲットを絞りつつも,
ディスプレイのタッチ操作が内部でどのように処理されて
画面描写まで到達するのか,その流れを
非常に詳細なレベルで説明してくれている.

あまりに細かいので,5章以降のハードウェアよりの部分は
正直「なんとなく」レベルでしか理解できなかったが,
その手前の,入力がViewのdrawメソッドに到達するまでの流れは
まさに個人的にずっと知りたかったところ.
デバッグで何となく見かけていたクラスやメソッドが登場したときは,
「ああ,こいつそんなことしてたのか」
と,ちょっとした感動を覚えた.

どうやら著者が自力でAndroidのコードを読み解いたようで,
その徹底っぷりたるや恐れ入る.
「ここは読み解ききれませんでした」と正直に書いている部分もあるし,
おそらく間違えている箇所もあるとは思うが,
Androidの細かい部分を知りたい人にとって最適な書籍だと思う.


下巻も読了次第,感想書きたいが,仕事用書籍の割り込みが…….

甘々と稲妻 8-12巻 感想

めでたく最終巻を迎えたので感想.
ちなみに7巻までの感想は以下.

甘々と稲妻 1-7巻 感想 - NK5のノート

高校3年生になった小鳥は,進路について
「店を継ぎたい」
と述べるも,母から予想外の反対を食らい思い悩むようになる.
一方でつむぎは小学校に進学.
「給食」「新しい友達」「歯の生え変わり」など,
様々な変化に戸惑いながらも,日々成長を遂げていく.

つむぎが遭遇する問題や悩みの内容は
幼稚園時代と比較すると複雑になっていくけれど,
そんなつむぎを優しく諭す犬塚を見ていると,
1巻のときと比べて父親として成長したなと思う.

物語としては11巻の小鳥の高校卒業でほぼ完結しており,
最終12巻は,ほぼ全てがエピローグとなっている.
全5話に渡る番外編では
つむぎの独り立ちまでがダイジェストで描かれており,
ファンサービスとしては満点の内容だと思う.

いわゆる恋愛物としてみた場合は,
ほぼすべての関係が未決着で終わるんだけど,
まあ,そこは「読者の御想像にお任せ」ということで.


で,アニメのセカンドシーズンはまだですか?

Effective Java 感想

Effective Java 第3版

Effective Java 第3版

Java9に対応した第3版が出たので,購読.
まあ,そもそも第1版も第2版も読んだことないわけですが.

Javaに限らず,プログラミングにおいて,
それぞれの命令が何を意味し,裏で何が行われているか,
真の意味で理解している人って,あまり多くないと思う.
ほとんどの人は「なんとなく」でコーディングしがち.

その「なんとなく」が抱えるリスクを提示しつつ,
適切な対処法を突き詰めて提示してくれるのが,この1冊.
1テーマ4ページ前後から成り,全部で90テーマ用意されている.

「Java9対応」と書かれているが,メインはJava8で導入された
ラムダやストリームへの対応.
第2版とのマッピング表も用意されているので,
旧版からのアップデートを知りたい人はそこを参照すると良いかも.

とにかく1ページ1ページの密度が濃い.
頑張って読んだが,たぶん著者の伝えたかったことの
2割も理解できていない.
著者や訳者の説明力不足というより,完全に俺の技力の問題だろう.
むしろ訳文は,この手の技術書としてはかなり高品質だと思う.

Javaという言語の深さや難しさを理解し,
さらなる学びを決意する動機付けとしては,最適だと思う.
その意味で,中~上級者向けの書籍に当たるんじゃないかな.


久しぶりに何かJavaアプリ書こうかなぁ.

2018年の広島東洋カープの自由契約選手

12月2日付でNPBから発表されました.
自由契約選手 | 2018年度公示 | NPB.jp 日本野球機構
それぞれ簡単に紹介.

(1) 辻
育成枠で入団後,2016年に支配下選手登録.
150km/h超えの球速が持ち味で,割と期待の声も多かったのだが,
春先の肩の故障が,思いのほか重傷だったと思われる.

(2) オスカル
カープ名物の社会人野球出身の即戦力外投手,バージョン2018.
いや,もうほんと,結構です.
1年目で敗戦処理としてボコボコにされて,以後は結局出番なし.

(3) ジャクソン
2016年のカープ優勝の立役者.
剛速球と鋭く曲がるスライダーを武器に,
2017年の夏までは間違いなくリーグ屈指のリリーフだった.
見逃せばほぼ全てボールとバレてからは,不安定な投球続きに.
制球に目を瞑れば一級品なので,どこかがギャンブルで獲るかも.

(4) カンポス
ジャクソンの保険として獲得したものの,出番は1試合のみ.
その1試合も微妙な内容で,アッサリと解雇となった.

(5) 佐藤
カープとしては珍しく,トライアウトからの獲得.
2017年の終盤に一瞬だけ輝いたが,常にクビレース筆頭だった.

(6) 新井
まさかホームラン王に輝くとは思わんかったし,
まさかFAで出ていくとは思わんかったし,
まさか広島に復帰して優勝に貢献するとも思わんかった.
数行で語るのは無理.とにかくオンリーワンな選手だったと思う.
今年は代打でも冴えない場面が多く,引退を表明.

(7) エルドレッド
圧倒的なパワーで2014年にホームラン王を獲得.
クビの危機もあったりしたが,気づけば7年間も在籍していた.
日本に馴染もうと努力する姿勢も好印象で,ファンは多いと思う.
出来れば引退まで面倒を見てあげてほしかった……

(8) 青木
栗原2世とか言われていた,気がする.高卒3年目で解雇.
最近このチーム,若手を見切るのはやすぎじゃなかろうか…….

(9) 土生
外野手としては丸や鈴木に劣り,左の代打としては松山や西川に劣り.
どういう角度で見ても誰かの下位互換になってしまうという,
非常にかわいそうな選手ではあった.
もっと前に,さっさとトレードしてあげた方が良かったと思う.

(10) 天谷
暗黒カープを支えた戦士の1名.
打撃と走塁に優れ,1番打者としての素質は十分だったと思う.
SNSでやらかしたこともあったが,何だかんだで愛された選手だった.
厚さを増す外野の選手層に割り込めなくなり,ついに引退.


FA移籍の彼についてはノーコメント.

SSLサーバ証明書の仕組み

定期的に細部を忘れるので,備忘としてメモしておくことにした.
上述の目的なので,自分にわかる粒度で書いてます.
「初歩すぎだろ」って箇所も多々ありますがご容赦を.

まずは2つの前提知識

(1) 公開鍵暗号
公開鍵と秘密鍵のペアを使う暗号化方式を用いる
これらの鍵には特殊な性質があって,
秘密鍵で暗号化した情報は公開鍵でしか解読できない
・公開鍵で暗号化した情報は秘密鍵でしか解読できない
の2つを有する.
秘密鍵を,名前のとおり秘密にしておく形となる.
公開鍵は,名前のとおり公開されていて,誰でもゲットできる.

(2) 電子署名
これは上述の前者の性質を使う.
たとえば
"NK5から山田太郎さんへ……2018/11/24の18時に署名"
という文字列を,
俺が持っている秘密鍵で特定のアルゴリズムで暗号化することで,
"jiewaofawietjaieaow"
という文字列が出来上がる(文字列自体は適当).
有り体に言えばこれが署名.

この文字列は,前述の公開鍵を用いることでのみ,
"NK5から山田太郎さんへ……2018/11/24の18時に署名"
に復号化される.
ほかの公開鍵を用いても,別の意味不明な文字列に変換される.
この論理により,
「なるほど,この署名は間違いなくNK5が作ったものだな!」
と,この署名の正当性が保証される.

なお,署名(上記の例だと"jiewaofawietjaieaow")が
悪意のある他人に流用されても大丈夫なように
暗号前の平文に何かしらの工夫を施す.
例えば上記の場合は,宛先と署名日時を平文に含めているので,
後日犯罪者に流用されたとしても,復号化した時点で
「あれ?日付が違うぞ……?」
と気づくような感じ.実際は違うんだけどあくまでイメージとして.


で,本題に戻ると,
サーバ(鯖男とする)とクライアント(倉子とする)は
安全な通信を実現するために,
お互いだけが知る「合言葉」を共有する必要がある.

当然その合言葉はバレてはいけないので,鯖男は倉子に
「俺の公開鍵を使って,その合言葉を暗号化してよ」
と,公開鍵を渡しつつ申し出るわけである.

が,このやり方には1つ問題がある.
鯖男から倉子に鍵が渡されるまでのバトンリレーの途中で
悪意のある人が鍵をすり替える可能性がある.

そこで,鯖男は公開鍵だけでなく,「デジタル証明書」を送り付ける.
デジタル証明書にはこう書いてある.
「これは間違いなく鯖男氏の公開鍵です 認証局Aより」
ここに前述のデジタル署名が付与されているので,
倉子は認証局Aの公開鍵を用いることで,その正当性を検証できる.

が,倉子が慎重な性格であれば,
「この認証局Aの公開鍵が本物である保証はどこに……」
という,当然の疑問に行き着く.
ここで
「これは間違いなく認証局Aの公開鍵です 認証局Bより」
という別の証明書が登場するわけだが,
じゃあこの認証局Bの公開鍵は……という,無限ループに陥る.

で,最終的にこの連鎖を止めるために
「これは間違いなく俺の公開鍵です 俺より」
という,自己完結型の「ルート証明書自己署名証明書)」が登場する.
これの作成を許されるのは社会的に認められた組織(ルート認証局)のみで,
各ブラウザに標準でインストールされていたりする.
このルート証明書&公開鍵を基点とすることで,信頼の連鎖が成立する.

たとえば,認証局Bの公開鍵が
「これは間違いなく認証局Bの公開鍵です ルート認証局Xより」
という感じで保証されていれば,信頼の連鎖が成り立つわけだ.

ちなみに社会的に認められていない組織が作った自己署名証明書
一般に「オレオレ証明書」と呼ぶ.

ともあれ,倉子はこの証明書を検証することで,
「よし,これは間違いなく鯖男の公開鍵だな!」
と確信し,合言葉を暗号化して鯖男に送りつける.
復号化できるのは鯖男だけなので,無事にお互いだけが合言葉を共有できる.
以後はこの合言葉を使って秘密のやり取りを開始する.


という感じ,で,合ってるはず.

2018年の広島東洋カープの総括

82勝59敗2分で,まさかの3連覇!
日本シリーズは残念ながら敗退となりました.
まずは選手の皆さんはお疲れさまでした.

で,今気づいたけれど,そういえば今年は
開幕前に予想を語ってなかったんだね.単純に忘れてた.
ただ,今年は正直,最下位もあるかなと思っていた.
その辺の理由も含めて,振り返り.


今年を語る上で欠かせない人物は3名いるが,
何よりもまずはフランスア
先発として昇格してきたときは,ぶっちゃけ,
「速球に慣れられ次第,攻略されて消えるかな」
と予想していた.

まさかリリーフとして,ここまで機能するとは……
この配置換えを決めたこと自体は英断だと思う.
8月の使い方は最低だったけれど.

とはいえ,全体的にリリーフは低調.
中崎もそうだが,今村がいよいよ限界を迎えている.
ここは大幅なメスを入れないと,来年地獄を見ると思う.


が,それ以上にまずいのが先発.
俺が最下位予想をしていた理由がここの貧弱さ.
「毎年言ってるけど,どうにかなってるじゃねーか」
と言われるかもしれないが,
毎年誰かしらが確変を起こすことで辛うじて助かっているに過ぎない.

で,その今年の確変枠が,上述の2人目に当たる大瀬良.
コントロールが比較的よくなったのが表層的な理由だけど,
根本原因は正直わからん.二段モーションのおかげか?
なので,薮田の二の舞になる可能性も十分にあると思っている.

さて,大瀬良は一応昨年からローテには入っていたわけで,
「新たにローテーション入りする投手がゼロ」
という,チームとしては非常に良くない結果に至った.
その候補として期待された高橋昂也は
完膚なきまでにボコボコにされたので,数年は出てこないだろう.
加藤はもはや何やりたいのかわからんし.

それなのに2年連続でドラフト1位が野手……
いや,小園くんが素材としてドラ1クラスであることに異論はないが,
本当にどうする気なんだろう?俺としては正直お手上げ.


で,最後に,野手.
チームを支えた「タナキクマル」が完全崩壊したと言って良い.

まずは田中.昨年終盤の打撃に1番打者として開眼の兆しを見たんだが……
俺の勘違いだったらしい.何と言うか,粗さが目立った.
フルイニング問題も含め,起用は悪い意味で柔軟性を求められた.
続けて菊池.いよいよ動きの劣化が素人でもわかるようになってきた.
守備はポジショニングでカバーしているとはいえ,
こうなると打撃の貧弱さに目を瞑るのも難しくなってくる.
丸は躍進したが,残念ながらFA宣言.一旦退団したものとして扱う.

で,その丸の件も含めると,
今年野間がレギュラーとして相応の成績を残したというのは
一縷の望みを紡ぐという意味で非常に大きかった.
というわけで,3人目はこの男.
速球を打てないという弱点は相変わらず残っているんだが,
それに対して「ファールで食らいつく」という処世術を覚えた.
あと,単純に振りが強くなった気がする.露骨な内野安打狙いが減った.
来年,この男の出来次第で,チーム事情は大きく変わる.


というわけで,かなり暗い話題ばかり書いたんだけど,
チーム事情としてこれが紛れもない実態.
今年が現戦力で日本一になるラストチャンスだったと思っている.
今後は「新世代台頭までの時間稼ぎ」のフェーズになるだろう.

まずはセンターラインをゼロベースで考えることとなる.
二遊間で言うと,まずはセカンドで定期的に曽根を試して良いと思う.
世代交代はもちろんのこと,単純に菊池には定期休養が必要だろう.
センターはまずは野間で良いと思うが,
守備に多少目を瞑ってでも,色々な選択肢を試す必要がある.
下水流や高橋大の起用も考えるべきだろう.
もちろん丸が残るならそれに越したことはないが,
希望的観測で動いても何の得にならないと,このチームの歴史が証明している.

そして地味にまずいのがサード.
結局西川のサードレギュラーチャレンジは失敗と言って良いだろう.
来年から外野にコンバートという話もあるので,
現状はいよいよ安部1人にどうにかしてもらわざるを得なくなる.
ここに外国人枠を割くことも検討しなければならない.

あと新井の引退は,戦力とは別の面で結構痛い.
何だかんだで年長者であり,ムードメーカーでもあったので,
この男を立てる形で野手のヒエラルキーは安定していた感がある.
特に菊池をコントロールする者がこれでいよいよいなくなったのが怖い.
松山はぶっちゃけ舐められてるし,石原は正直影が薄いし.
新井のポジションに立てる男は間違いなく赤松なんだが,
流石に体調がまだ万全ではないようで,代走要員としても厳しい……
「誰がチームを引っ張るのか」
という点も大きなテーマとなる.


華々しい時代は終わって,これからは再び我慢の時代.
バブルが弾けたとして,それでもマツダスタジアム
足を運んでくれる新規ファンがどれだけいるか.
カープという球団の底力が試されるときである.

というわけで,また来年.