ランサーズCTOの横井です。
クリスマスというよりは、どちらかというと年末感のほうが強いので、GitHubのcontributionsの履歴でも見ながら今年を振り返ってみたいと思います。
ちなみに自分の立ち位置ですが、普段はプロダクト全体を見ている感じで、どこか特定のチーム/プロジェクトに所属ということはなく、コード書く局面は大体下記の状況だったりします。
- (1) どこかのチームのヘルプ
- (2) 急ぎのバグ改修
- (3) 他事業部とかのツールづくり
- (4) 新規事業/アイディアなどのプロトタイプづくり
言語的には下記みたいな順番くらいで使っていたような気がします。
- JavaScript / Node.js (プロト作るときにいつもNode.jsで作ってしまう傾向がある)
- PHP (ランサーズのメイン部分なのでやっぱり多い / WordPressのプラグインとか作ってた時期に増大)
- Ruby (ランサーズの本体以外は大体Rubyなので)
- Python (機械学習やってるところで一回だけコミットしたような……)
- AWK (ログは今年もいっぱいパースした)
古くを遡ればJavaエンジニアだったはずなのですが、一年間でただの一回もJavaを書かなかった、というのは今年が初めてかもしれません。
ついでにいえばFlasherでもあったはずなのですが、ActionScriptをただの一回も書かなかったのも今年が初めてかもしれません。
(去年は奇跡的に、弊社に唯一残るAdobe AIRアプリの改修でActionScriptと、中でNative Extensionsで使ってた箇所のJavaを一回だけ直した)
という個人的にはエポックメイキング的な一年でしたが(別に感慨はないです)、ひと月ずつ気になるところを振り返ってみたいと思います。
(1)~(4)の関係上、非常に個人的かつ断片的なまとめになりますが、まあそれもいいかな、と。
January 3, 2016
社内ツールであるHTMLツクールのコミットから一年が始まっています。このツールは何かっていうと、地獄の作業であるところのHTMLメール作成(CSSをインラインで書く必要があるとかtableレイアウトであるとか各種メーラー対応とか……)でデザインチームが疲弊していたので、jadeでテンプレート化して、inlinerとjuiceでビルドする感じにすることで、(多少なりとも)HTMLメール作成の手間を減らそうとしたものになります。テンプレが固まってから以降はキャプチャのように簡易的なCMSにしてしまって、基本デザイナー/エンジニアが関わらなくてもメルマガ担当者が自分でHTMLメルマガを作れるようにしました。この日のコミットはそのCMS部分のredo/undo機能の実装。意義はわかるが、1月3日に何故やっていたのかはもはや不明です。このツールのコマンドライン版で`html2cool -S xxxx`とか作ってたのですが、これは今でもお気に入り。
February 17, 2016
横須賀で開発合宿でした。ちょうど稟議が手間感が高まっていたので、ChatOpsならぬメールOpsというコンセプトで、IMAPを監視して、メール受信のトリガで動いて、件名/Fromメールアドレスでルーティングするようなフレームワークっぽいのを作りました。稟議を特定のメアドにメールで送ると、このサービスがよしなに承認ボタンつきのHTMLメールを自動生成して決裁者(というか僕)に送って、そのHTMLメール中の承認ボタンを押すと、決裁されるというイメージ。結局これは稟議フローの改善には導入しませんでしたが、今でもリポジトリ名であるringi-desu(稟議です / 稟議Death)のセンスには脱帽です。
March 19, 2016
この月は非常にバタバタしていて、ランサーズストア、Quant、Propagといった新サービスたちの追い込み等もありてんてこ舞いな月でした。
そんな中で選んだコミットは、3月23日に行った「Lancer Of The Year」という、ランサーズで活躍してくださったランサーさんを表彰させていただくイベントにまつわるものです。イベント自体はヒカリエホールで行って、そのイベント中にリアルタイムで投票を行う、というものだったのですが、投票時間5分間限定のものだったこともあり、重複投稿自体はフロントでLocalStorageで管理し、ページはS3でWebサイトホスティング、投票APIの向き先はただのApacheが置いてあるだけでアクセスログをパースして集計、というのを直前に組んでいました(他にも小細工はしていますが)。実際の投票の瞬間には楽屋裏でリアルタイムで僕がAWKで集計していたわけですが、自分が作ったものを大勢の人が目の前で使ってくれる瞬間を見れる機会はそうそうあるもんじゃなく、非常に感慨深かったです。来年は弊社期待のエース@takepoあたりに味わってもらいたいものです。
Apr 19, 2016
4月はランサーズストア、Propagが世にリリースされ、その追加開発などでちょこちょこ入っていました。どちらかというと年度が変わったタイミングで、評価面談や組織づくりのほうに力を入れていたこともあり、そんなにコードを書いていた記憶も無いですが、コミットを見るとランサーズストアのz-indexの修正とかを行っていたようです。可愛いですね。
May 24, 2016
地方創生事例を紹介する「ランサーズ エリアパートナープログラム」と、さすらいワークを提唱する「LOHAI」 の2つのGitHubリポジトリを作成していました。リポジトリの作成のみで中身の開発は僕はしていないです。これらのサイトは8月くらいにローンチすることになります。
June 16, 2016
Quantの正式ローンチの月。追い込みはQuantチームに任せ、ランサーズのほうに導線貼ったり、LP用意したりといったCTO的庶務をコミットしていたようです。まあ、つまり、誰かがやるんです、こういうことは。
July 29, 2016
7月の大半は、8月のリリースラッシュに先駆け、プロジェクトマネジメントだったり各種調整だったりといった方向に時間を使っていたのですが、最後のほうで(運命の流れで)Wordpressプラグインを作る流れになり、最終週あたりはWordpressプラグインを作っていました。Wordpressと生まれて初めて真剣に向き合い、とまどい、時には傷つきながらも前に進めた気がする7月でした。
August 23, 2016
8月は色々ありました。前述のランサーズエリアパートナー、LOHAIのリリース。ランサーズのAppサーバのコード化(最後にここだけ残っていた)etc,etc…。そんな中でも思い出深いのがKPIモニタリング基盤の一新で、当初担当エンジニアと「サーバレスだぜ!」とかテンション上がってS3 + Lambdaで行こうぜ!とかキャッキャ話していたのですが、いざやってみると弊社の目的にはあまり向いていなく(ポイントで立ち上げるというよりは、常駐的にずっと動かすほうがよろしかった)、やっぱやめてEC2で常駐させて動かそうとなって、Lambdaに載せてたNode.jsを諸々書き直してたりしました。多分この1年で一番量書いた。あと、この月に子供が生まれて父親になりました。
September 20, 2016
事業オーダーでのプロトタイプとかを作ってました。テクニカル的にはちょっと面白い(トリッキーな)ことをやっていたりしますが、それはさておき、プロトタイプとはいえ2016年になってUnderscore.jsのtemplateを使ったところが感慨深かかったです。確かHTML一枚で作ろうとして(webpackとか使わずに)、そうするとライブラリはcdnjsとかから持ってくることになり、その中でテンプレートエンジン的なもの、という感じで思いついたので入れたという感じ。HTML一枚で作ることのメリットとしてはサーバ等も用意せず、そのままエンジニア以外に渡して「ファイルをダブルクリックして」と言うだけ、というお手軽さがあります。
October 19, 2016
企画部の部長も兼任することとなり、改めて組織づくりに時間を使っていた月でした。どういう組織をつくるか、という点ではクレド的なものを作成しはじめたり、どう作るかという点で「プロジェクトにおける7つの問い」をコミットしていたりしました。
November 8, 2016
10月に引き続き。細かいところを直したりのリリースはしていましたが、「何を」「どう」作るのかに時間を当てていました。UI/UXのイベント等にも登壇したりしていました。
December 21, 2016
といった感じで、プロダクト全体を見ていくことになり、コードからは一旦離れてたかに見えましたが、ここにきて12月はログまわりを設計し直していたりしました。一年の最後の最後にきてログです。裏側です。お前冒頭の(1)~(4)のどこでもねえじゃねえか、って感じですがログです。ログはすごい大事なのです。この辺も色々まとまったら改めてブログに書ければと思います。
まとめ
いかがでしたでしょうか。自分のコミットログを遡ればある程度この1年でランサーズでつくってきた色々が出るかと思いましたが、なにぶん個人のコミットログに依存することが大きく、かつピックアップしているところも思い出補正も大きく、偏りは多分にありますが、まあまとめると色々あったなあ、と。CTOという役職として「どこで「どう」コードを書くかっていうのは色々書きたいこともあるのでいずれ。