ボクココ

個人開発に関するテックブログ

サービスの動作を3秒速くする情熱

ども @kimihom です。

f:id:cevid_cpp:20160629213403j:plain

前職の人と久々に会って、熱く語ってしまった内容を整理しようと思う。

サービスの動作を3秒速くすることに時間を取れますか?

これはかなり難しい質問だ。速くするってことをするには、以下のような方法があるだろう。

  • 動作の処理を改善する
  • キャッシュなどのテクニックを駆使する
  • ミドルウェアを高速なものに置き換える

この中で最も重要なのは動作の処理を改善するという、いわゆる「リファクタリング」だろう。無駄な処理を徹底的にそぎ落とせば、劇的に処理が早くなることがあるだろう。だが、それはシステムに対する深い知識と入念なテストが必要で改善には非常に困難がつきまとう。だからほとんどの人たちはたかが3秒の改善のためにそうした膨大な時間と工数をかけることを嫌う。

あなたの部署では3秒早くするために既存機能と同等の処理をぶち壊すことができるだろうか?そのような時間を取ることが許容されている環境は、いいサービスが生まれる可能性が高いと思う。なぜなら、自分たちのサービスのコア機能は何かをしっかりと把握していて、それを改善することが全てのユーザーにとって便利になることが間違い無いといえるからである。

そうなると、ミドルウェアも Go や Erlang のような高速と言われているプログラミング言語を使って構築すべきなのだろうか。"スピード"こそがそのサービスにおいて最も重要なことであれば、必ずそうした技術を使うべきである。自分のサービスにおいて最も大切なことは何かを把握しなければならない。

自分のサービスにおいて最も大切なことは何か?

サービスの思想によって異なるだろう。 それはスピードであったり、機能の豊富さ/シンプルさ、デザイン、正確さ、セキュリティなどなど。

私の運営するサービスは電話を扱っているので、何より通話の品質が大前提で大切なことになる。そもそも話すことすらできない通話品質だったら、サービスにすらならないからだ。てことで最近 Chrome に搭載されたDSCP( Differentiated Services Code Point ) という技術を真っ先に導入した。これは通話のパケットは優先度を高めにして通信できる技術である。

その技術の導入において、一部の機能が使えなくなる問題が起きたが、それにも対応できるよう先々週にリリースされたとある新機能を早速利用している。(もちろん動作テストは入念にやった上で)

ユーザーからしたら何も変わってないだろうし、すでにそれなりのネットワーク回線を使っていたらまともに通話できていた話ではある。しかし、どんなユーザーにも通話がより安定したという機能改善は何よりも素晴らしい改善であり、何も変わっていないリリースがここまで素晴らしいと感じることもなかなかない。

「何か一つを極めるということは他の全てを捨てること!! それが出来ぬお前は結局はんぱ者なのだ」 by 戸愚呂・弟

これは言い過ぎかもしれないが的を得た表現な気もする。こんなこと書いておいて、何か一つを極めるってのは自分でも全然できていないけど、意識することで多少変わることはあるだろう。

サービスにおいて何が一番大事か。ユーザー獲得や利益は常に結果であって、それが答えではない。ユーザー獲得のため、利益のためにする機能改善ってのは、必ず失敗する機能開発であると知っておくべきである。

そんなこんなでサービスで大切にしたいことを理解することがいいサービスを作る条件だよねっていう話でした~。