old title: 興味を失うと手が止まる

shoya140: 未踏ジュニアのインタビュー (面接) でクリエイター候補からメンター候補に行われた質問に「作って終わりの作品ではなく人に使われ続けるサービスを作るために心がけていることはありますか?」というものがあり、その場にいたメンターがそれぞれ違った視点で回答していたのが興味深いと思いました。

shoya140: 私の回答は「サービスへの興味を失うとメンテナンスの手が止まるので、作ったサービスのヘビーユーザーでいること、自身がヘビーユーザーになるようなサービスを作ること」でした。

shoya140: 一方で、今日読んだ記事から「自分の手が離れても開発が続くような仕組みを作ること」も大事だなと思いました。 / 惰性でやっている」「ビジョンはない」 30年続くソフトウェア稼業「秀丸」がいまも最前線に立ち続ける理由 | Coral Capital coralcap.co/2022/05/hidema…

shoya140: 改めて考え直してみると、私がAlphabenでやっていることも後者 (会社を作って作業を分担・委譲していく) なのかもしれません。とはいえ会社や組織を作るとやらなくてはいけないことも増えるので、もっと良い方法がないか考え続けています。

shoya140: 一応補足しておくと、採択されたからといって期間後も開発/メンテナンスし続ける必要はありません。作る過程で得た知見を伝えられるプロジェクトは特に、作ることがゴールでも良いと私は思います:)

nishio: 面白い質問なので僕も考えてみよう。どういう状態の人に答えたのか知らないし、ここはTwitterで色んな人がいるから、当たり前なことも含めて。 twitter.com/shoya140/statu…

nishio: まず当たり前のことなのだけど「使い続ける」かどうかを決めるのは作り手ではなくユーザ。なのでユーザに届くことが必要条件で、そのためにはリリースする必要がある。当たり前だと思うかも知れないけど、つまりこれは「どうやってリリースするのか」をきちんと見なければならないということ。

nishio: 例えばiOSのネイティブアプリを作ろうと考えているのであれば、どうやってテストユーザに試してもらうのか?リリース時の審査ってどんな手続きが必要なのか?を調べる必要がある。途中にもしかすると英語しかないページがあったりするかも知れないし、めんどくさい手続きが必要かも知れない。

nishio: 僕が面接でも割と「それって本当にネイティブアプリである必要性はありますか?Webアプリで良いのでは?」という質問という質問をしがちなのは、そういう技術選定ってコストとリターンのトレードオフなので、得られるもの必要なものの大きさをどう見積もってるのか言語化することが有益だから。

nishio: 次に「使い続ける」ためには、サービスが「動き続ける」必要がある。例えばiOSがアップデートされたり新しいiPhoneが発売されて画面サイズのバリエーションが増えたりしてソフトウエアを取り囲む「環境」はどんどん変わっていく。動き続けるためには変化にに適応するためにコードの修正が必要

nishio: サーバや他社製品のAPIを使うならランニングコスト(維持費)がどれくらい掛かるのか、それを払い続けられるのか、それとも黒字にすることができるのか、というところを考える必要がある。 サービスを黒字にするのは、単にサービスを作ることの何倍も難しい。だけども不可能ではない。

nishio: よく「既存のものは有料のものばかりなので無料のものを作ります」的な提案をする人がいるのだけど、それはユーザ視点では嬉しいかも知れないが、作り手の視点では「ランニングコストは全部自分が払う」ということ。それができる状態はとても恵まれてる。

nishio: 公開のコスト、維持のコスト、の二つを話した。三つ目は知識。例えば今書いたプログラムがメンテナンスせずに3年動いたとしよう、で3年後に修正が必要になったとする。ソースコードはどこだっけ?コードを読んだら汚すぎてどこをいじったら目的を達成できるのかわからない。全部書き直したくなる…

nishio: ちなみに古いバージョンを無視してゼロから書き直した場合には「古いバージョンではできていたことがなぜかできない」が発生する。結局古いバージョンを作った時と同程度のコストをかけてデバッグするか、コストを掛けて古いコードを解読するかをする羽目になる。

nishio: 時々、作り手の意図と無関係に作り直しが必要になる。例えばプログラミング言語やフレームワークやライブラリが更新される。僕は大学生の頃、ある可視化プログラムを作っていたが、それはJavaAppletで動くものだった。今だったらJavaScriptとCanvasで作るだろう。僕は移植をしなかった。

nishio: ランニングコストの話で一つ思い出した。無料枠で収まるから大丈夫だー、と思ってたら急に無料枠が縮小して無料枠だけでは継続困難になるってこともある。Google App Engineの無償枠の縮小が僕の作ったとあるWebサービスの息の根を止めた。当時若かったので無料にこだわっちゃったんだよなぁ。

nishio: 当時の僕は収益化の目処が経っていないWebサービスのサーバ維持費を会社に支払わせることを心苦しく思ってGoogle App Engineに移植して無料枠で動かしてた。今の僕なら堂々と「こんなに多くの著名エンジニアが利用しているサービスを止めるのはもったいないですよ、PR費と考えたら安い」とか主張しそう

nishio: まあ歴史にifはない。サービスが死んで、ドメインも失効して、いろんなメディアから貼られたリンクもエロサイトに変わって…という苦い経験は僕の人生の糧になったと思う。

nishio: 四つ目は人生における優先順位の変動。あなたは今興味を持ってることにずっと興味があるわけではないし、今と同じこと時間の使い方をずっとできるわけがない。 例えば大学に入って、もっと興味の強いものができた、それに熱中して時間がない。そんな時に高校の時に作ったWebサービスをメンテできるか?

nishio: 特に良くあるのが「今の自分は学校の勉強にこういう問題点を感じてるのでサービスを作ります」的な提案。僕はサービスを続けることは必須ではないと思ってるのであまりネガティブには評価しないけど、それでも「これって学校卒業したら放置されるのかな」とは思う。

nishio: 余談だけど自然言語で10年くらい陳腐化しない内容のサービスを実装すると、運用は出版社にアウトソースできて僕の側の運用コストはほぼ皆無だからおすすめですよ(違う、そういう話ではない)