自分の強みを生かすこと on Quipper

今リリース前にしてはタスクがあんまりないのでブログ書いてみる。

Quipperに入社してから一ヶ月半ほど経過した。それで感じたことをあれこれ書いてみようと思う。 あんまり熱心に書くと前の会社に入ったばかりのことを思い出して恥ずかしくなったりするので、ほどほどにする。

エンジニア文化の共有

会社に入ってまず最初にやることは、エンジニアが文化を共有することだと思う。 どんなマインドかは、僕より Quipper のスピード感 - @kyanny's blog とかを読んだ方が伝わるはず。 QuipperはOSS文化というかRuby文化的なものを強く志向している感じがあって、そこらへん馴染みやすかった。

入社してからやったこと

まず前提として、ベンチャーなので整った教育制度などはない。(そもそも自分も研修など期待していない)。

エンジニアとしての文化を共有しているから、最初からすぐ仕事に入れた。具体的に言えばGithubのPull Requestで全てが進む。このフローは慣れていたので、一日目は各種ガイダンスとコードを読んでいただけだったけど、二日目からPull Requestを出せていた。

仕事の内容

作っているのはシングルページのAJAX特盛りのウェブアプリケーション。バズワードで言うならHTML5

  • JS(coffee)のコードをリーディングしながらリファクタ
  • フレームワークの調査と高速化の提案
  • 初期化のボトルネックの見直し、各画面の高速化
  • Rubyでランキングの集計
  • リリース前のBug Fix

最初は単純に、「このタブ押した時、中身を表示するためにサーバーにリクエスト飛んでるけど、このモデルもう持ってますよね。キャッシュ持って参照絞りません?」みたいな提案からはじまって、最終的にはほぼ全てのモデルを初期化のキャッシュで持つようにし、差分だけ取得するようにした。初期化がやや長くなったのでローディング画面をつけたりした。

初期化の高速化そのものよりローディング画面を出したことが評判よかった気がする。すべてのモデルを初期化をアトミックにしたことで、ローディングを出せるようになった。AJAXやるなら中央管理する機構はやはり必要な気がする。それをjQuery.Deferredで記述すると綺麗になるという発見があった。

既存コードについて

自分が関わった部分に関しては、綺麗だけど、試行錯誤の後があった。「普通はこうしたいよね、このケースは難しいけど」というのがコードから読み取れたので、自分のノウハウでどうにか出来る部分はしたけど、まだどうしていいかわからなくて、放置してる部分はある。

今のプロダクトではChaplin.jsというBackbone拡張フレームワークを使っている。色々と便利な機能があるのだけど、何かと作者の主張が強く、癖があるライブラリだったので、中身を読んで最適化が行われるケースと行われないケースを探した。Viewのcompose という機能を使えばシーン感を跨いでViewを再利用し再描画を防ぐことができることがわかったので、画面の遷移前、遷移後の共通のビューを切り出して再描画を防いだりしていた。

Rubyについて

ランキングのデータを作るAPIを一つ担当した。仕事でRubyを書くのはほぼはじめて。

Rubyについては、とにかく抽象化レイヤーが他の言語よりも深いという印象。他の言語ならここで抽象化やめとくのに、とおもった部分でさらに踏み込んでいく。Rails/Activeなんとかはさらにその傾向が強い。

同様にLLであるPythonやNodeのモジュール機構と比べると、変数や関数がどこで宣言されたかわかりにくい。その分、コード規約の文化でカバーしている気がした。autoloadでハマった。これはまあだれでも通る道なんだと思う。

関数型言語は慣れているで、ORM叩いて mapしてselectしてreduce、みたいな処理は逆に馴染みやすかった。

自分の強みで他の人を生かしたい

僕は僕でJSならだいたいなんでもできるという自負があるので、そこらへんのタスクを拾いまくった。 で、たぶん自分が入社してからRubyに強い@kyannyさんや@banyanさんあたりがJS書く分量が減ってるので、そこらへんは巻き取れたと思う。

自分の立ち位置は、

  • クライアント高速化マン
  • Rubyもわからなくはない

あたりになってると思う。

反省点

まだRuby習熟度が低い。もっと高速にタスクを巻き取れるようにしたい。

もともとゲームプログラミング畑出身なので、Web系でかつクライアント高速化、みたいなスキルセットの人間は少ない。非同期のチューニングが好きな人は多くないので、そこは自分の強みにしたい。 ただ、高速化は汚くなるのは仕方ない、みたいな言葉に甘えて、やや汚くし過ぎた部分があった。反省。