にゃみかんてっくろぐ

猫か百合を見守る壁になりたい

P2P地震情報14周年: 個人サービスを長く続けるための技術

個人開発 #2 Advent Calendar 2018 8日目の記事です.

せっかく作った個人サービスを長く続けていくための技術についてお話ししようと思います.

3行でまとめると

  • Dogfooding … 使い続ける
  • Maintenance-free … とにかく省力化する
  • Write Code Every Day … 小さい変更を積み重ねる

P2P地震情報

P2P地震情報というサービスを開発・運用しています.

気象庁地震情報やユーザ同士の「揺れた!」という地震感知情報を,P2Pネットワークによって共有するサービスです.

現在のサービス構成は下記の通りです.本体はP2Pですが,サーバの役割は多岐にわたります.なお,耐災害性の観点から,一部機能は有志の方々のご協力により全国数ヶ所に分散しています.

祝14周年🎉 (なお理想と現実は異なる)

2004年12月に公開し,今年で丸14年です.思った以上に長く続いています.

残念ながら,やりたいことは十分に実現出来ていません.GUIアプリケーションは未だにVB6製で,なかなかのレガシーです.*1

それでも,14年間続けることができました.なんだかんだで良かったと思っています.どうして続けられたのかというと,これから話す3つの技術が大事なのではと感じています.

サービスを続けていくための技術

Dogfooding: 使い続ける

サービスを続けるには,モチベーションを維持し続けることが重要です.

その最も簡単な方法が,自分自身がモチベーションの源泉となるように,サービスを自ら使い続けることだと感じています.

昔,LaTeXのオンラインコンパイラやPDFファイルの画像化といったサービスを公開していましたが,自分が使わなくなった途端にメンテナンスしなくなり,外部からアクセスは続いていたものの公開を終了したことがあります.

Maintenance-free: とにかく省力化する

モチベーション(と時間)を無駄にしないために,維持するためにかかるコストを最小限に抑えます.

色々ありますが,一番やってよかったのはひとりSlackでした.

サービスに関わるあらゆるメール,通知,実行ログをSlackに集約し,「とりあえずSlackの新着を見ればよい」という状態に辿り着きました.メールの未読消化と比べて圧倒的な省力化です.

f:id:no_clock:20181206231200p:plain

f:id:no_clock:20181206231214p:plain

Write Code Every Day: 小さい変更を積み重ねる

学生から社会人になり,「まとまった時間が取れない」「しかし週末に一気にやる気持ちにもなれない」という矛盾する悩みを抱えていました.数年間悩み続けた末,John Resigの記事に出会いました.

John Resig - Write Code Every Day (日本語訳参考: 毎日コードを書くこと - snowlongの日記

学生時代の開発スタイルではいけないと気付かされました.

それから,100日以上毎日コードを書き続けました.1~2行しか書かない日もありましたが,それでも効果は絶大でした.

f:id:no_clock:20181206231231p:plain

C#版のGUIアプリケーションも徐々に実装が進んでいて,一部機能は既に動作します.レガシーをそろそろ捨てられる日が来そうです.

f:id:no_clock:20181206231243p:plain

楽しい個人開発ライフを!

世の中の便利な個人サービスが,少しでも長く続きますように…!

明日は @ktrkmk さんです.お楽しみに!

*1:余談ですが,Windows 10でもVisual Basic 6.0は動作しますし,IDEコンパイルもできます