無事に12/20の0時に間に合うことができました。 え? 間に合ってない? 何いってるんですかスイス時間に決まっているじゃないですか。
10日間に渡るヨーロッパ旅行も最終日、スイスのツェルマットというリゾート地に来ています。
今回はハンブルグから入欧して、渡り鳥ルートで電車ごとフェリーに乗りコペンハーゲンに行き、さらに空路でブリュッセルへ、夜行でウィーンに移動し観光、そのまま2夜連続夜行でミュンヘンへ。 ミュンヘン到着以降はバッファ日で何も予定が入っていなかったので、 ここで同行者と別れ現地の友人に会いに行き、 さらに1日空きがあったので急遽3日連続夜行でローマに行き、現地の友人の案内で超高効率観光を堪能しました。 ローマを発ち、1日がかりで集合地点のスイス サンモリッツに移動し、 今日はこの旅の最後で最大の目的である氷河急行に乗車しました。
さて本題の前に大まかなタイムラインを確認しておきましょう。
- 4/11(火) mstdn.jpが立ち上がる
- 4/14(金) pawoo.netが立ち上がる
- 4/15(土) 夕方頃 pawoo.netが世界から遮断される
- 4/15(土) それを見て企画書を書き始める
- 4/16(日) 深夜に提出して昼ごろ起きたらやることが決定していた
- 4/17(月) 作業開始
- 4/19(水) オープン
作業開始から3日間でインスタンスができ、 ニコニコ動画創設時の戀塚伝説にあやかるような感じになりました。 偶然ユーザID:3も一致しています。
マストドンはそこそこ複雑なソフトウェアで、 企業がきちんと手順を踏んでサービスをリリースするには、 3日間というのはなかなかのスピード感ではないかと思います。
どんなものを作るにしても、作業を始める前にはいろいろな準備というものが必要です。 今回は偶然と幸運が重なり全ての準備が揃っていたおかげで、3日間という短期間でのリリースが可能になりました。
オープンソースのソフトウェアといえど、ユーザにサービスを提供するからには、 コードの内容を十分に把握しておかなければなりません。 カスタマイズする場合はなおさらです。
最初にマストドンのコードをチェックアウトしたきっかけは、mstdn.jpが立ち上がった直後の頃、どこの誰かはもう覚えていませんが、
「マストドンっていうの流行り始めてるけど脆弱性あるらしいって聞いたからやめとこ」
のような発言をtwitterで見かけたことです。
マストドンがRails製アプリケーションだというのは知っていたので、この発言にカチンときたわけです。 経験則で言えば、Railsの基本に忠実に、素直にコードを書けば脆弱性を作るほうが難しいのです。 そこでこの怒りをなんとかするために、コードをチェックアウトしセルフ脆弱性診断をしました。
案の定、特に問題はなかったんですが、この段階ですべてのコードに目を通していたのが、のちのち非常に役に立ちました。 まさかこの時、1週間後に自分がこれを仕事にしてるとは思ってもいませんでした。
分散SNSは無数のインスタンスがあるので、アカウントIDを専有できないという問題点があります。 この問題を解決するために、friends.nicoを始めるにあたって、ニコニコアカウントとの連携を一番の目玉機能にしました。 アカウント連携されていれば本人証明ができるからで、特に動画投稿者さんや生主さんには重要な機能です。
おそらくpixivさんも同じ問題点に気づいていて、同じ解決をしてくるだろうと想像していました。 この段階で、自社サービスとアカウント連携をしたマストドンインスタンスはおそらく存在せず、どうせならと世界初を目指しました。
この機能を実現するために必要なのはOAuth(あるいはOpenID Connect)です。 マストドンで使われているユーザ管理機能は、deviseというRailsでは超定番ライブラリで、世の中にあるtwitter連携ができるRailsアプリなどもほぼ全てこのライブラリを使っています。 実は、deviseにニコニコ連携を追加するプラグインであるomniauth-niconicoというライブラリが既に社内で開発されており、ニコニコ連携の実装はほんの数分で完了しました。 日曜日のあいだにtwitter連携を使って機能を開発し、月曜日に出社したらOAuthチームにアプリケーションIDを発行してもらって、プラグインを差し替えるだけという手際の良さです。
後で聞いたところ、pixivさんもリリース当初からアカウント連携を考えていたのものの、上手くdeviseに対応できなかったらしく、準備の差で勝った良い事例だと思います。
今やセキュリティは最重要事項です。 ドワンゴは意外にきちんとしている会社で、通常サービスリリース時には外部の専門会社に依頼してブラックボックステストを行います。 ただ今回は、事態が事態なのでその時間は取れません。 なので「隅から隅までコードはチェックした。俺はRailsのプロだから信用しろ。」で押し切りました。
実際、前述の通りコードは隅々まで読んでおり、何も問題点は見つかっていませんでした。 さらに、社内の非公式セキュリティチーム(やんちゃな人たち)の激しいブラックボックステストにも耐え、おそらくセキュリティ上の問題は無いと確信していました。
頼りになる仲間の存在も重要でした。
土曜の夜に企画書を提出した時点で、「マストドンやるかもしれんからpawooの事例調べといて」という雑なリクエストで、日曜には完璧な構成を出してきてくれたインフラのなまにく先生、 「マストドンにニコニコ連携入れるからよろしく」で全部察して月曜朝イチでアプリケーションIDを用意してくれたOAuthチームの人たち、 頼んでないのに率先して開発環境に謎のSQL断片を投稿しまくる人たち、 本番立ち上がったと一言もいってないのに先にアカウントを作って、伝説のID:3を取得するきっかけを作ってくれた人たち。
実際に作業してるのは数人だったのに、社内の全員が全力でサポートしてくれている感じがしました。 最高です。
friends.nicoの立ち上げに掛かった時間は、たった3日間でした。 しかしその背景には膨大な準備期間があり、 1週間前からのコードリーディング、 過去に作ったライブラリ、Railsのプロと言い張れるだけの実績、 入社以来6年間に築いた人間関係、ドワンゴに集まった人材など、 とても一朝一夕では作れない、そして多くは偶然としか呼べないような、 人生の軌跡と環境の奇跡が揃っていたうえでの3日間でした。
今回の活躍は、人生と時代が交差する瞬間に、十分な準備ができており、瞬発力を発揮できたことが原因だと分析しています。 まさに人事を尽くして天命を待つというやつでしょう。
準備をしましょう。 奇跡が起こるタイミングはいつかやってきます。
もちろん奇跡が起こる確率は一定ではありません。 世の中の趨勢を見極めて投資する技術を決めましょう。 今ならRailsとReactがシンデレラフェス開催中です。