iOSDCでテストとDevice Farmについて登壇してきました
ご無沙汰しております。大学院入学前の最後の凪を楽しんでおります。
さて、9月5-7日に開催された iOSDC Japan 2019 で運良くプロポーザルが採択されたので 「実機の管理とおさらば!AWS Device FarmでiOSのテストをしよう!」 というトークで登壇させていただきました。
内容は主に次の通りです。
- XCTestを使ったUnit Test
- XCTest UIを使ったUI Test
- AWS Device Farmを使った自動テスト
- Circle CIと組み合わせてパイプラインの構築
自分はモバイル開発者としての経歴が長いものの、iOS開発は素人のようなものです。トークが採択されたときは喜びと同時に不安も大きかったですが、これをより詳しくなるためのよい潮と捉えて楽しんで資料を作り込むことができました。
当日は満員御礼+立ち見まで出るという盛況で、自分としてはかなりのプレッシャーになりました。数あるセッションの中から時間を割いて自分のそれを見に来てくださったわけですから、とにかく楽しんでいただけたことを祈るばかりです。何名かはその後のAsk the Speakerブースに足を運んでくださって色々お話しすることができました。本当によい経験になりました。
内容についてなのですが、UI Testについて1点だけ補足させていただくと、
Accessibility Identifier
で特定できるUIImageView
のUIImage
リソースがボタンタップによって変わることを確かめるUI Testで、Accessibility Label
を付け替えることで擬似的にUI Test側から変更を検知する例を紹介しています。自分としてはこれを推奨する意図というよりは、こういったテクニックもあるという程度だったのですが、やはり本来の「Accessibility」の観点を軽視するような面があったかもしれないなと反省しております。Labelとして、Voice Overされても意味のあるテキストを入れるなどフォローできれば良かったなと反省しました。
他にも質疑応答で鋭いご質問やご指摘をいくつももらいました。これこそが登壇の醍醐味であり、スピーカーもオーディエンスもともに学ぶことができるという最高のチャンスでした。機会を与えていただいたことに感謝します。
さて、iOSDCに限らず、自分にとっては記憶にある限りおそらく初めてのiOS系のカンファレンス参加となりました。率直な感想は「最高」です。 主催の長谷川さんのお人柄がスタッフの皆さんから会場の隅々に至るまで染み出しているような、暖かくフレンドリーで、それでも初めて参加する自分も変な内輪感で戸惑うというようなところの一切ない、本当に素晴らしいカンファレンスでした。また来年も是非何か応募したいですし、仮に採択されなくとも足を運びたくなりました。
また、普段Twitterのアイコンしか知らない人にたくさん会えたのも実に新鮮でした。よく参加しているAndroidの勉強会では逆に知っている人ばかりという環境だったので、これは本当によい気分転換となりました。
それから、僕がブログを読んで絶大な影響を受け、渡米したいと押しかけ相談までした堤修一さんと数年ぶりにお会いしてお話するチャンスを得たこと。また、アカデミックに対する熱い思いにこれまた多大な影響を受け、僕自身が大学院を受験する最大のモチベーションをいただいた佐野岳人さんとも久しぶりにお会いしてお話できたこともiOSDCという場があってこそと深く感謝します。
これからも新しい技術への興味を失わず貪欲に学んでいきたいと思います。ご指導ください!ほいでは。
JAISTの博士前期課程に進学します
TL;DR
2019年10月から北陸先端科学技術大学院大学(Japan Advanced Institute of Science and Technology: JAIST)の先端科学技術専攻、博士前期課程に進学します。フルタイムでの勤務を継続しつつ、修士(情報科学)の学位を目指します。
最大の動機
端的に言うと、この先40年現役でいるための力を養いたいと思ったからです。
以前のエントリに書きましたが、自分は文系学部の学士であり、ソフトウェア技術者として求められる技能はすべて業務内で身につけて来ました。これはそれなりにワークしているのですが、知識はいかにもツギハギであり、時に自分の理解の浅さに恐ろしくなることがあります。
たまに自分の無教養を恐怖に感じることがある。僕の「ある技術が多少わかる」とAさんのそれは、表面上同じでも、僕のそれはただ海面にボートが如く浮いており、氏のそれは氷山のように膨大な数学や物理学の層が重なって水面に出ている。これはまったく意味が違う。
— 父🌥️ (@fushiroyama) 2019年7月2日
この先の10年は、今までにも増して速いペースでイノベーションが勃興しては消えてゆくはずです。その中にあって、すでに人口に膾炙し書籍で解説されるような知識は競争力となりません。論文を調べて新しいアルゴリズムを自分で見つけ出して実装できるような、根源的かつアカデミックな能力を身につけないと早晩限界がくるなと危機感を覚えています。
それに、これからは人生100年・労働80年の時代が来るなと感じます。僕は今年36歳になりますが、仮に38歳で修士、41歳で博士になったとして1、労働80年時代ではまだ折り返しですらありません。ここでの学び直しという投資は十分すぎるリターンとして返ってくると期待しています。
JAISTについて
石川県に本部を置く国立大学です。
一般的な知名度はそれほど高くないかも知れませんが、情報系の人はLinuxディストリビューションのミラーサーバーで ftp.jaist.ac.jp
というドメインに見覚えがあるのではないかと思います。
僕は石川本校ではなく、東京の品川インターシティにあるサテライトキャンパスに通います。
なぜJAISTか
明確な理由がいくつかあります。順に書いていきます。
大学院大学
JAISTは「大学院大学」であり、学部を持ちません。このため大学院には幅広いバックグラウンドの生徒が集まります。これには僕のようないわゆる文系出身者や、社会人を経て再びアカデミックの場に戻ってくる人、外国人留学生などが多数含まれます。
大学説明会で見聞きした限り、これらの状況に対処するために修士1年生には比較的みっちりと基礎の足並みを揃えるための講義が集中しているようです。これは僕にとって望むところです。
また修士研究に重きを置いており、修士論文となる主テーマの研究の他に、主テーマと相互に補い合い相乗効果を得られるような副テーマも必修としています2。これは地に足の着いた研究力を養いたいと考えていた自分の志向と合致するところです。
社会人コース
JAISTは社会人コースを設けており、自分もこの区分です。東京キャンパスは品川駅から徒歩5分ほどの品川インターシティ内にあり、自分が進学する情報科学の場合、授業は金曜夜と土日にのみ開講しています。
これが良いか悪いかは個人によりそうです。平日夜に授業がほぼないということは残業が多めの社会人には助かりそうですが、僕の会社のように柔軟な働き方がゆるされ、かつ休日は家族との時間を大切にしているタイプにはチャレンジとなりえます。
とはいえ、授業のメインが平日昼間ではないという時点でたまらなく魅力的であり、時間をうまくやりくりできればフルタイムの社会人として経済的に安定したバックグラウンドを持ちながら修士・博士を目指せる大学は他にそうたくさんあるものではありません。
また、長期履修制度というものが設けられており、端的にいえば修士は2年分の学費で3年、博士は3年分の学費で4年間在籍することができます3。社会人で学位取得を目指す身としてはありがたい制度です。
その他
他にも、国立大学だから学費が安いとか、教育訓練給付制度対象なので標準年限で修了できる人は更に安く通うことができるとか4、友人のJAIST卒業生が皆一様に優秀であるとか5、色々あってJAISTが第一志望校となりました。合格通知が届いて本当に嬉しいです!!
まとめ
最後に、この決断を後押ししてくれたのは妻です。この先修了までには恐らく幾多の困難があると思います。応援してくれた家族に感謝しながら勉学に励みつつ、妻や子供たちとの時間もうまく確保できるように工夫していきたいと思います。先生方、在学生のみなさん、卒業生の方々、色々ご指導ください。
唐突にYAMAHAルータ愛を吐露する
こんにちは、お父さんです。日本に帰ってきて4月1日からとある多国籍企業で働いております。本当はその辺の話を書きたかったんですが、存外に社外発信について厳しいので面倒くさくなってしまい、職場のことは書かないと決めました。それで、唐突に僕のYAMAHAルータ愛を吐露したいと思います。
僕はYAMAHAのルータが大好きです。僕の技術者としてのキャリアのスタートはネットワークエンジニアでした。当時はまだオンプレの時代だったので、会社の1室にサーバルームがあったり、データセンタの一画にラックサーバを持ってるのが当たり前でした。社員10人以下の典型的SOHO1だったので、YAMAHAのRTX1100を使って小さなネットワークを制御していました。
YAMAHAのRTXシリーズはまさにこのSOHO向けVPNルータとして最強の存在でした。「VPNルータ」と冠していますが、いまやVPN機能を持ったルータは珍しくもなんともないですね。僕がRTXシリーズを好きな理由はたくさんありますが、少し列挙するならば
などがあります。やっぱり、家庭用とは比較にならない安定度ですね〜。ルータ起因でパケット詰まりとかは自分が関わってきた規模では記憶にないです。設定変更のたびに再起動がかかって30秒待つ…みたいなバカバカしいこともありません。即時反映です。ここで比較してるのはあくまで家庭用ですよ。CISCO vs YAMAHAみたいな戦争構図にもっていくつもりはありません😉
これだと単なるカタログのセールススライドみたいなので、もう少し具体的に自分が使ってて便利だった機能を書きましょうか。
マルチホーミング
複数プロバイダを契約して、片方が落ちたときに自動的にもう片方から迂回みたいなことが簡単にできます。 メインで使う高価で信頼性の高いプロバイダ1と、月500円で緊急時のバックアップに使うプロバイダ2を用意して、プロバイダ1のネットワークにkeepaliveしておき3、一定時間/回数応答がないとデフォルトゲートウェイをプロバイダ2のPPインタフェースに向けるというようなことがめっちゃ簡単にできます。
ip route default gateway pp 1 keepalive 1 gateway pp 2 weight 0 ip keepalive 1 icmp-echo 5 3 監視対象IP
ネットボランチDNS
RTXシリーズを使ってるだけで無料で利用できるポーリング不要のダイナミックDNSのようなものです。要は、ルータがインターネット側にもつグローバルIPを foo.bar.netvolante.jp
のように名前解決できるようになります。なんでこれが嬉しいか?
ひとつには、自宅サーバのようなことが固定IPなしで非常に簡単にできます。僕のように2000年代前半に自宅サーバをやってたおじさんとしては、このクラウド全盛期においても自分が持ってるグローバルIPは何か有効活用したいと思っちゃうんですけど、ネットボランチDNSで自宅のネットワークがなかば静的に解決できるとStatic NAT機能を使ってLAN内のRaspberry Piなりを一瞬でサーバとして公開できるんですよ。これはホームゲートウェイとしてsshdの入り口にしたり、httpdに向けて自分のパイロット版ウェブアプリを公開したり色んな使い途があります。
もうひとつ、もし外部にサービスを公開しなくても、VPNの対向側をネットボランチDNSで指定できるという絶大なメリットがあります。 僕は東京の家、四国の実家、そしてアメリカの家すべてにRTX1100を置いて拠点間VPNを構築していました。それぞれは固定IPなど持たない普通の家庭用プロバイダなんだけど、ネットボランチDNSでホスト名を指定できるのでPPPoEセッションが切断・再接続されても気にする必要がありません。僕はこれを利用して、アメリカの家では特定のLANポートに接続すると自動的にトンネル越しに日本側インターネットに出るようにしていました4。
中古価格が安い
上の方で「実売価格10万円以下」と書きましたけど、これは最新モデルの新品価格であって、僕をプロにしてくれたRTX1100は中古で3000円ぐらいで買うことができます。RTX1100はLAN側インタフェースすら100Mbpsという旧時代感がありますが、その後継モデルでギガビットイーサ対応のRTX1200も中古で1万円ちょっと。ホームネットワークを構築するには余りあるポテンシャルです。
いまはEdgeRouter Xのように廉価で非常に高機能なルータが出てきたので昔よりも色んな選択肢があるかと思うんですが、急に思い出したのでズアーッと書いてみました。ほいでわ👋
父、帰国
家族みんなで日本に帰って来ました。3月末付で現職の米国ラボから離れ、誠に勝手ながらそのまま退職する道を選びました。
改めて経緯を整理すると、最大の理由は家族(特に長女)の環境に対する拒絶感が想像より大きく、親として完全にサポートしてやることができませんでした。様々な不運が重なり、娘としては最悪の米国体験となってしまいました。これはたったひとつのサンプルであり、これをもって米国の何たるかを語るつもりはサラサラありません。他の皆さんの米国進出の妨げとならないことを願いつつ、こういうこともあるのだという体験のシェアはしておこうかなと思います。
我々はBurlingameというサンフランシスコ半島の中ほどにある美しい街に住みました。ここはこの辺りではかなり珍しく、白人比率が高くアジア人が少ない特異な街でした。娘のクラスも、アジア系は娘ともうひとりだけ1でした。人種としてマイノリティというのみならず、言葉が満足ではない子供が娘だけという環境下で彼女の絶望と苦労は想像を絶するものがあったと思います。申し訳ないことです。また、先生も本人のコメントによると教師になって2年目ということで、どう好意的にみようとしてもトラブル因子である娘をかなり邪険に扱っていました。これは最後までとても悔しかったです。
先生同士の引き継ぎが不十分で娘がひとりだけお弁当を食べられなかったり、他の子のイタズラのぬれぎぬを着せられたり、クラス内のパーティで娘にだけおやつが配られなかったりと、信じられないような扱いを受けました。怒り、悲しみ、混乱しました。親としてもツライですが、生まれて初めてこんなアンフェアな扱いを受けた娘を思うと夜も眠れなかったです。よく娘と抱き合って泣きながらベッドに入りました。校長も交えて話し合いも試みたのですが、結局のところ校長先生は「担任を信じたい」という立ち位置で、担任は「誤解や勘違い」というスタンスを崩さず、あまつさえ「証拠がない」とまで言い放つ始末で大きく失望しました。
単身赴任ではなく家族みんなで帰国という選択はこれまた極端にすぎると思われる向きもあるかもしれませんが、我が家ではこの点は一貫しています。つまり、パパと離れては暮らせないという長女の意見を常に尊重しました。
結局の所、米国に来たのも「パパと離れ離れになるぐらいなら嫌だけど米国に来る」というものでしたし、日本に帰るにあたっても「パパと離れて私だけは帰らない」という意見でした。このまま居たら娘の精神はどうにかなってしまいそうでしたし、こう言ってはなんですが、女の子が「パパと居たい」と言ってくれるのなんて、せいぜいあと5年でしょう。それならばパパも日本に帰るよということに決めました。
子どもたちは日本で心安く過ごしています。3月も終わり、妻も子どももそして僕も新しい生活が始まります。これからもどうかご指導ください。それでは近い内にまたどこかで。じゃあの。
高い高いの高さ
長女は5歳だが、いまでも「高い高いして〜🤭」とよく言ってくる。もう115cm/20kgぐらいあるので、かなり重たい。先日も高い高いをせがまれたが、ちょうど長女が次女の座るバンボを独り占めしていたので「次女ぴちにも座らせてあげないとパパは高い高いしてあげないよ〜」と次女だけを高い高いして遊んだ。
その時はどうということはなかったが、1時間ぐらいして急にソファーに寝転がってブランケットをかぶったまま出てこなくなってしまった。理由を訊いても「答えたくない…😢」と泣きながらうずくまっている。しばらく時間が空いていたので高い高いとの相関に確証がなく、「パパが何か間違ったことをしたかもしれない。次またしないようにちゃんと理由を知りたいから教えて欲しい」と辛抱強く交渉したが、「わたしが悪いからもういいの…😭」と強情だ。
「お父さんとお母さんもよく勘違いして喧嘩をする。どうでもいい人はそれっきりだけど、お母さんは大切な人だから腹が立ってもちゃんと話し合って解決するんだよ。パパは長女ちゃんとこの先も仲良しでいたいからどうしても理由が知りたい」とお願いしたら、ようやく「わたしも高い高いして欲しかった…😭でも次女ちゃんのおもちゃを取ってたからそれでも仕方ないと思って泣くしかなかった…」と明かしてくれた。
なんといじらしいことか…考えてみると、あと3年もしたらこっちからお願いしたって高い高いなんてさせてもらえないのだ。いまこの瞬間お父さんが必要とされる限り、無条件で受け入れてやればよいのかもしれない。それから、この子なりに「高い高いしてくれなくて悲しかったけど、わたしも悪いことをした」と反省しつつやりきれない気持ちをどうにもできなくて泣いているのが愛らしかった。この子はこういうところがある。幼いのに、自分の気持ちだけに100%純粋に欲望を求めることができない。相手を慮ってしまう。それができれば米国での暮らしもどれだけ楽だったろうと思わんでもない。でもそれでよいのだ。これはこの子の美徳であり長所だ。このまま伸ばしてあげたい。
長女が1歳になって初めて保育園に連れて行くときのことをよく覚えている。向こうから同じように娘を抱っこしたお父さんが歩いてきた。僕は60cmの女の子、向こうは120cmぐらいある女の子をそれぞれ大事そうに抱えていた。随分大きくなってもお父さんにしがみつくんだな〜😅と思ったものだが、ついにうちの娘がそうなり、それでもあの頃と変わらず美しい。これから大きくなるに従って、君から見える高さはお父さんに近づき、世界は相対的に小さく普通に見えていくだろう。それでも君がお父さんに近づきたいうちはいつでも肩の上に乗りに来て欲しい。
天津飯の思い出
今日はお昼に妻子に天津飯を作ってやった。好評だった。
それはそうだろう。天津飯は僕の得意料理だ。どのくらいの油の量とフライパンの熱で卵に火を入れるとフワッフワの芙蓉蛋の花が咲くか、体が知り尽くしている。
天津飯は京都時代によく作ったものだった。よく作ったどころではない、月末の主食だったと言って過言ではない。
僕は大学生から27歳までのおよそ10年間を京都で過ごした。大学を中退して小さなスタートアップに入社してからはずっと年収300万円で暮らさねばならなかった。若かりし頃というには長すぎる年月だ。
食材は吉祥院の業務スーパーで買い込んで自炊をしていたが、それでも月末になると鶏卵の大パックを買うのがやっとだった。
オムレツ、肉なし親子丼など卵料理ばかり得意になった。なかでも、炊きたての米とガラスープと卵があれば180秒で作れる天津飯は僕のお気に入りだった。
ガラスープと醤油と片栗粉を合わせてあんを作っておく。油はフライパンに大さじ2〜3とこれでもかと入れ、白い煙が立つほどチンチンに温める。
卵をさっくりと溶いて一気に流し込む。ほんの6秒。フライパンをするするすると揺すってご飯に載せる。あんをたっぷりかける。これだけ。
あれから年月が経ち、今日の天津飯には海老とキノコまで入っている。
娘が「パパおいしいね!パパはお料理上手だね☺️」と褒めてくれた。決してポジティブ一辺倒ではない自分の天津飯に対する思い出も、今日そう言ってもらえてよい思い出に昇華できたように思う。
子供が急に海外で暮らすということ
やっぱり、インターネットは成功者の話ばかりではなくて厳しい現実の話もあった方がいいと思うので、我が家のことをもう少し書きます。
我が家は僕の海外赴任に家族全員がついてくる形でカリフォルニアに来ています。長女は渡米時4歳、次女は10ヶ月でした。僕がアメリカに来たかった気持ちを100とすると、妻は19、長女は2ぐらいです。パパは来たくて来てるのでつらいことはありません。妻は大変苦しみましたが、素晴らしい友人に恵まれてどうにか折り合いをつけてくれました。次女は元々バブーなのでまだ自我はない。問題は長女です。
長女は日本語の習得が早く、2歳ぐらいで流暢にしゃべりはじめ渡米時にはほとんど大人顔負けの語彙でした。これは大変喜ばしかったのですが、換言すればこの時点で日本語で確たる自我を確立したのだと思います。このせいかどうか分かりませんが、この年齢にしては意外なほどに新しい環境や言葉の違いに対する拒否反応が大きく、順応は困難を極めました。
娘はたまたまTK*1に該当したので渡米後ほどなくして現地校に入れました。これは賛否あると思うんですが、日本人がいっぱいいると却ってその子たちとつるんでしまって言葉を覚えないかもしれないなと思って割と躊躇なくそうしました。ところが娘の場合はこれは完全に失敗でした。娘は誰とも話せない孤独からずっとふさぎ込むようになりました。夜は毎日しくしく泣きました。これは一時的なものだろう、誰でも最初はこうだと思いましたし、実際に同級生の保護者にもそう慰められました。ところが娘は3ヶ月経っても半年たっても良くなることはありませんでした。今なお、土曜の夜からもう月曜日のことを考えて泣くのです。日曜日にすらなっていないのに。時々パニックになってどうしようもない時もあります。
親の都合で自分の意志とは関係なく人生を歪められるというのは親として慚愧に堪えません。娘はまだ耐え難い状況にNO!を突きつけ独りで飛び出す力を持たないのです。こんな残酷なことはない。
あるいは、ある日突然に峠を超えるのかもしれない。その分水嶺を越えたらあれだけ苦しんだ日々は過去のものとなり、この美しく自由な大地を受け入れるのかもしれない。でも"こちら側"にいる我々にはそれがいつなのか分からない。それは永遠に続くかもわからないのだ。
大丈夫!僕は、我が家は大丈夫だった!その言葉に悪意はないのはよくわかっている。だけどその度に、あなたはうちの娘が僕に泣きながら取りすがってどれだけ学校が孤独で苦痛に満ちている場所か訴えてくる姿を知らないだろうと肩が震えるのをどうすることもできない。誰の言葉もわからない、誰にも頼れない。言葉がわからないから休み時間は独りでフラフラ歩いて過ごしてるんだよ〜と言われたときの胸がつぶれる音が聞こえるんですかと。自分が無実の娘を罰しており、そのことで僕が罰されているような行き場のない絶望感です。
このエントリは誰かを呪うために書いたわけではなく、海外に出るというのはやはりそれ相応の覚悟と代償を伴うものだということを書き残しておきたかった。やはりうまくいくばかりではない。我が家は、本当に素敵な友人に恵まれ、会社の上司の心遣いに恵まれ、なんとかこれ以上の悪化がないように努めています。TKは所詮義務教育ではないので、心を病むぐらいならば日本語学校なりホームチューターなりを選ぼうと思います。
このエントリを読んで、やっぱり日本人が多い街に住んだほうがいいだとか、最初は日本語学校に入れようとか、そのいずれが言いたいわけでもないです。だってこれは100%人によるのだから。だからこそ、それは事前にシミュレーションゲームのように完全に対策可能なものでもなければ後から簡単に修正可能なものではない、現実はかくも度し難いものなのだということだということぐらいが教訓だと思います。
胸くそ悪いものを読ませてすみませんでした。僕はこの世で一番美しい娘を抱きしめて眠ります。
*1:保育園の年中に相当する年次だが小学校に通えるプログラム。Pre-Kとも。