「VRはもう確定でしょ、まだやったことない人居るの?まじか〜」「京都は5年遅れてるから。あdisっちゃった(笑)」「シンギュラリティが…」
Netflixループの夢
異なる高校の生徒を集めた合宿中に、謎の怪生命体が発生して、生徒が襲われる。生命体は怪獣のようなロボットのような質感で、最初は人間ほどの大きさだが最終的にはビルくらいになる。様々な形になることができ、手足や触手をナイフやハンマーの形にして人を襲う。
我々はビルや橋を乗り越えて、本州からの脱出を目指す。
しかし合宿のチームメイト(さっき会ったばかりの男1女2)が死んでしまい、自分だけが残される。そこでループが発生して、時間が怪獣発生前に戻る。2ループ目からは怪獣を避けるように行動するが、もちろんまたみんな死んでしまう。
ループが発生する度にNetflixロゴが出る。
毎回チームメイトの天才少女と元気少女の掛け合いがあったような気がするが、内容はうろ覚え、もう一人の男子は何か居たような…というくらいの印象。
何回かループした後に、うまいことループの外側のメタ世界に移動することができ、脱出できた。
なぜか最後は実家に戻っていて、大学受験のためにZ会か予備校に行かせてくれと頼んで終わる。春から高三だしこのままじゃ浪人だ!と必死な気持ちで目が覚めた。
Web+DB総集編にiOSアプリ黎明期にお世話になったモジュールの記事を書いた
先日発売されたWeb+DB Press総集編に記事を寄稿した。お題が「記憶に刻む、あのコード」ということだったので、自分がiOSアプリ開発を始めた際にお世話になったImageStoreというOSSの画像ダウンローダーについて書いている。自分の記事は「初見で動きがわかるコード」という地味なタイトルだが、このソフトウェアが今の自分のコーディングに与えている影響を考えてみた結果、これがしっくりきた。
内容の詳細は誌面に譲るが、この記事を執筆するためにImageStoreの作者のPsychs氏にコンタクトを取り、当時のスクリーンショットの掲載許諾をお願いした。氏にはスクリーンショットの使用を快諾していただき、その後も献本などの関係で何通かメールのやりとりをした。
そのやりとりの中、Psychs氏からの返信メールにとても印象に残る言葉があったので、許可をいただいて引用する。
ぼくはコードを書くときに 「全体の動きを把握しやすくて、誰でもあとからハックしやすい」 ようになるように心がけているので、コードからそういうぼくの考えが少し 伝わったのかなと思ってすごくうれしかったです。 そういう風にしたほうが、どんなプロジェクトでも ・長期的なメンテナンスコスト ・問題が起きたときの原因究明のコスト ・新しいメンバーが入ったときの学習コスト といろんな面でコストが小さくなると思うんですよね。 今でもこの考え方は変わっていません。
自分はこれを読んだ瞬間頷いてしまった。これは自分にとっても目指すコードの形そのものである。
そして自分は10年前にImageStoreのコードから既にこのメッセージを受け取っていて、氏の言葉で今それが追認されたのだ…と一人納得したのだった。
自分の原点を振り返る機会をいただいた、Web+DB PressとPsychs氏に感謝したい。
WEB+DB PRESS総集編[Vol.1~102] (WEB+DB PRESS plusシリーズ)
- 作者: 川合史朗,秋葉拓哉,中嶋謙互,木村廉,酒井政裕,ninjinkun,渡辺訓章,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2018/04/26
- メディア: 単行本
- この商品を含むブログを見る
鴨川花見ラン
毎年鴨川の桜を楽しみにしている。今年は五条付近からランニングで上流の方まで行ってみた。
北大路あたりの藤棚みたいなエリアが一番見応えがあった。
上流まで走って上がって、ビールを飲みながら下った。
家レモンサワー
- ウォッカ: 30cc〜好きなだけ
- ポッカレモン: たくさん入れるとおいしい
- でかいやつを買っておくと良い
- 炭酸: グラスいっぱい
- 氷: 適当に
- 出版社/メーカー: アサヒビール
- メディア: 食品&飲料
- クリック: 15回
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: ポッカサッポロ フード&ビバレッジ
- メディア: 食品&飲料
- この商品を含むブログを見る
- 出版社/メーカー: アサヒ飲料
- 発売日: 2016/03/28
- メディア: 食品&飲料
- この商品を含むブログを見る
アルゴリズム・クイックリファレンス第2版を読んだ
現場プログラマーのアルゴリズム再入門本(勝手に付けた副題)、アルゴリズム・クイックリファレンス第2版を読んだ。今年の2月に訳者の @hydrakecat さんから献本いただいていたのだが、感想を書くのが遅くなってしまって申し訳ない。
ちなみにこの本を読んでいる自分の背景を説明すると、一応大学は情報系だが、アルゴリズムや理論寄りの話は苦手。仕事ではスマートフォンアプリのコードを書くことが多く、アルゴリズムに直接触る機会はほとんど無いという人間である。
内容
第1版をぱらぱら読んだことはあり、コンパクトで読みやすい本だなと感じていた。第2版では赤黒木が削られたり、Pythonのコードが追加されたりしたようだが、受ける印象はそんなに変わってなかった(と言いつつ第1版と比較してみると、C言語の箇所が減っている)。
前の版から引き続き、とにかく実際に動くコード、実際の計算機での動き方にページが割かれている。アルゴリズムの性能比較についても、計算量の表記に加えて、実際に動かしたベンチマーク結果が付いているのは、この手の本としては珍しいのではないかと思う。
原題の Algorithms in a Nutshell をそのまま訳するとたぶん「アルゴリズムのかいつまんだ説明」という感じになると思うが、解説は本当に簡潔で、証明はほぼ省かれている*1。
一方で、AIにおける経路探索(ここで言うAIはゲームの敵キャラクターの移動ルーチン)や計算幾何学は一般的なCSの教科書には含まれないものだと思う(ゲーム作りの教科書には書いてあるかもしれないが)。全体を貫いている簡潔さの方針からすると、ここを削ってもっとコンパクトにする手もあったと思うので、これはあえて入れているのだろう。アルゴリズムの多様性を知って欲しいという著者の意思を感じる。
最後の「12章 結び: アルゴリズムの諸原則」には実際にコードを書く上で大事なことがコンパクトに詰まっているので、ここだけでも読む価値があると思う。「汝のデータを知れ」「空間と時間のトレードオフを使え」「問題を別の問題に帰着させよ」という節のタイトルだけでもはっとさせられる。
おわりに
自分は定期的にCSの基礎を復習することには、思わぬ再発見があったり、書くコードに自信が持てる効果があると感じている。「このような強固な基盤の上に自分の仕事がある」と再確認できることは、ソフトウェア製品を作る自信を高めてくれると思うのだが、他のソフトウェアエンジニア諸兄はどうお考えですか。
何にせよ、アルゴリズムの勉強は競技プログラマーにはほど遠い自分のような人間にも楽しい。これからも時々本書を取り出して、ぱらぱらめくって楽しみたい。
- 作者: George T. Heineman,Gary Pollice,Stanley Selkow,黒川利明,黒川洋
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/12/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
iOSDC2017で「ディープリンクの設計と実装」について発表した
9/15-17に開催されたiOSDC2017に参加し、9/16の1日目に「ディープリンクの設計と実装」というタイトルで発表を行った。一休レストランアプリのディープリンク対応を例にして、ユーザー体験から実装まで含めた話題を取り上げた。
Universal Linksの実装方法自体は既によく知られているので、自分の発表では実際にサービスに適用する際に困るポイントなど、できるだけ生々しい現場の話をするという方針で内容を組み立てた。スライドを見ていただければわかるが、自社アプリの宣伝も兼ねている。
また今回の発表後に、参加者からの投票で選ばれるベストスピーカー賞の2位を受賞した。発表で賞をいただくのは初めてのことで、とても嬉しい。「あるある」を詰め込んだのが良かったのかもしれない。
イベント中に各社のiOSエンジニアとディープリンク対応について話をしたが、皆共通して今のディープリンク体験はまだ微妙、うまく設計するのが難しいしパーツも足りていないという認識を持っているようだった。これは自分も同意で、現在のディープリンクは1ユーザーとして不自然に感じる点が多い。Webの文脈とアプリの文脈を繋げること自体、かなり無茶なことなのではとも思う。
事業者として見るとWebからアプリに誘導できるメリットは多いが、この流れを今後ユーザーが支持するのかどうかは注意深く見守っていきたい。
他のセッションも面白く、色々な人と話して大変楽しかった。参加者の皆様、iOSDC運営の皆様、ありがとうございました。
就職
6月中旬に株式会社一休に入社した。一休レストランという飲食店予約サービスを運営するレストラン事業部で、iOSアプリの開発を行っている(やっていることはコーディングとプロダクトマネジメント的な仕事を半々ずつくらい)。
一休はIT系としては比較的歴史が長い会社だが、
- アプリの伸びしろの大きさ
- 経営陣の面白さ
- 自分で使って楽しいサービス
という点で、総合的に見て面白い経験ができそうと感じて入社を決めた。事前に二週間お試しで働いてみて、一緒に働くメンバーとも楽しく仕事ができそうなのがわかっていた点も大きかった。
元々飲みに行ったり外食することは好きだったのだが、一休では自社のサービスを自分で使ってご飯を食べに行き、その体験をまた製品にフィードバックして改善できる。自分の生活をサービスに反映できるところが面白い。
他にも、社長(金融工学、CS、コンサル系のバックグラウンド)が検索のおすすめ順やリコメンデーションのロジックを書いていたり、ユニークな点が色々ある。
一休の開発は東京のみなので、平日は東京、週末は京都という単身赴任的な生活をしている。東京では築地で友人とシェアハウスを始めた。
というわけで、東京と京都の皆さん、一休レストランを使って飲みに行くぞ。
無職の振り返り
今年に入ってから半年ほど無職をしていたのだが、最初は意識高くCourseraなどやっていたものの、Nintendo Switchでゼルダを始めてしまい、結局ゲーム(ゼルダとペルソナ5)ばかりして過ごしていた。
前回の退職時の一番の目的であった、妻の忙しい時期をサポートするというのは何とかこなしたものの、自分は仕事がなければ特に生産的なことはしないということがわかった半年だった。次に無職をやる機会があれば、コワーキングスペースを契約するなどしたい。
ちなみに、平均的な一日はこのような感じだった。
builderscon 2017に行ってきた
8/4-6に開催されたbuilderscon 2017に行ってきたので、印象に残ったセッションのメモを書いておく。
DeepLearningによるアイドル顔識別を支える技術
- LINEのエンジニアすぎゃーんさんの発表
- 元々は仕事と関係なく始めたけど、最近はAIプラットフォームClovaの部署に居るとのこと
- やはりデータセットがキモ
- まずこれだけのデータセットを作っているのがすごすぎる
- 1年半分類し続けているとのこと。これだけ続けられるのがすごい
- 最初からこれくらいやろうとは思っていなかった
- 最初は5人のアイドルグループを識別するところから始めた
- DCGANを使って非実在アイドルを生成するなど、データセットがあると分類以外にできることが広がる
- 正面顔にこだわったりしているのが精度の高さの秘訣なのではないかと思った
- OpenCVで顔の角度を出してデータを選定しているとのこと
複雑なJavaScriptアプリケーションに立ち向かうためのアーキテクチャ
- このテーマについてここ数年情報発信をしているしんぺいさんの発表
本当に重要なのはMVVMかどうかではなく、Presentationとビジネスロジックが分かれていること
というのがよかった- 休憩時間にしんぺいさんとMVVMは一番難しいパターンなのではないかという話をした
- MVVMのアンチパターンを封じていくと最終的にはMVPぽくなっていったり
真のコンポーネント粒度を求めて
- CodeGridの中の人
- CSSのクラスの命名どうするの?という話からコンポーネントの
- Object Oriented CSS、BEM、Atomic Designなど、最近の流れが一通り追えて勉強になった
- 個人的にはEnduring CSSが衝撃的で、自分の考え方にしっくりきた
- コンポーネントを共通化しない、不要になったらすぐに捨てられるようにする
- 継承でパーツ作るの嫌いなので、個人的にはこれはしっくりくる。冗長でもええやん
- フロントエンドエンジニア、デザイナーであればこの辺りの話は一通りフォローしておく必要がありそう
感想
昨年に続き今年も参加したが、大変楽しかった。インフラからフロントエンド、ネイティブアプリまでこれだけ広い領域のエンジニアが集まるイベントは他にないのではないか。ネイティブアプリエンジニアの自分がフロントエンドエンジニアとアプリの設計を比較して話をしたりできるのが、自分が感じるこのイベントの醍醐味である。
また来年もぜひ参加したい。