サービス作りにおける言語化の難しさ
基本的にTwitterで発信しているためブログには書いていないが、2019年の初め頃から個人でのWebサービス開発を進めており、2019年3月、英単語の記録状況を管理するためのWebアプリ「AwordZ」をリリースした。
英文を入力することで単語を抽出・原形化・翻訳を自動的に行うことができる。個人的に英語の多読学習を行っているのだが、分からなかった単語は全てGoogleスプレッドシートで管理しており、入力が面倒だったり覚えた・覚えていないの管理が難しい状態にあったため、この問題を解決するためにこのアプリを作成した。 一言で表すと「英単語の暗記カード作成ツール」だ。
開発のモチベーションを維持するのが難しかったため、各々が三ヶ月でサービスリリースを目指すもくもく会「3monthsService」に参加させて頂いた。このイベントでは全員がサービス作りを行なっているので、自分のベースアイデアに対して様々な意見がもらえることがとてもよかった。また、Bug Bashというバグを洗い出すための手法で参加者がレビュアーとなってSlackからバグや改善意見を出して頂いたので、リリース前の思いもよらないバグも防ぐことができた。本当にお世話になりました。
shincyokudoudesuka.connpass.com
作りたいサービスの良さを言語化できない問題
ただ、制作途中から「これは本当に自分が思っているほど役に立つんだろうか」という不安感がよぎり始めた。不安を感じる度に機能を再考し、「この方向で仕様変更すれば良いサービスになるだろう」という気持ちは確かにあったのだが、機能が出来上がってくるとやはり自分の論理的な部分「本当にこれは面白いのか?」とささやいてくる。ただ、数か月かけて作っていたものなので、とにかく完成させなければ、という気持ちだけで無理やり開発を進めてきた。そして出来上がったものを見てようやく「何か良く分からないものを作ったな」という現実を受け入れることができた。
せっかく作ったので良いサービスにするため、できることはないか考えてみたものの、どうすれば良いサービスになるかが思いつかない。作っている本人が良さを理解できないようなサービスなので当然だ。自分で作ったものだが、「良いサービスにできず、生み出してしまってすまない」という気持ちがだけが残った。
それからというもの、他人のリアクションを狙ったアウトプットに対してひどく消極的になってしまった。いくつか新たにサービスを作ろうとしたものの、完成間近のところで「何が面白いのか分からない現象」が発生してしまい、結局リリースまで踏み切ることができなかった。作っている間は面白くなると感じているのだが、完成が近づくにつれ「つまらないサービスにしてしまったらどうしよう」とただただ不安が増すようになった。
納得できないサービスとなってしまった理由
元々、個人開発については「サービスを作って収益化する」という根本的な目標があった。元々収益化に対する執着はなかったが、どうせやるなら数値としての成果を求めるのがモチベーションのためには健全だと考えた。
目標を達成するためには「 収益化するための仕組みがある」、「人に利用してもらう」という項目をクリアする必要があったが、前者を重視することで後者が疎かになってしまったように思われる。サービスアイデアとして「人に利用してもらう」というのは技術的な部分を除けば案外簡単に出てくるが、それを収益化するとなると一気にハードルが上がる。 今回作成したサービスは「人に利用してもらう」という条件を機能要件の時点で満たせておらず、「作ってみればきっといい感じになるのでは」という希望的観測から生み出してしまったことが今回の問題点のように思える。
Done is better than perfect. 完璧を目指すよりまず終わらせろ
上記はFacebookの創始者マーク・ザッカーバーグの言葉だ。そして私はこの言葉を都合の良いように解釈した。どんなものでも完成させることは美徳だと考えてしまった。
だが、実際はそうではない。利用されないサービスを作ったところで、なんの意味もなさない。もちろん、設計やプログラミングをした経験は自分の成長につながるが、それであれば個人開発でなくても構わない。自分が個人開発で成したかったことは、自分のアイデアで人が喜んでくれることだったはずだ。高すぎるハードルは無謀だが、ハードルが低すぎても誰にも見えない。
プログラミングで「モチベーションが」とか「気合が」って言ってる時って問題はそういう精神性じゃなくて、戦略であったり技術的な問題が横たわってるよね。
— ジャバ・ザ・ハットリ🇩🇪個人開発で海外生活 (@nodenodenode1) 2019年5月26日
方法論が分からん、技術が追いつかない、戦略が出てこない、そういうのを「気合」って言葉で片付けてたら次のアクションが支離滅裂になるし
自分がやってしまったのがまさに上記のツイートで言われていることで、竹槍で戦車に突っ込んだ感がある。出せばなんとかなる、出さないよりは良い、という考え方が、理論を放棄することに繋がってしまったように思う。ひとまず自己分析した結果、「収益化」と「良いサービス」の両立が自分にとってハードルが高いため、しばらくは収益化を考えず、とにかく自分が納得できるレベルのものを作るための方法論を練っていきたい。
良いサービス開発のための言語化能力
例えば私の場合、UIのデザインをしているとできあがったものに違和感を感じ修正を繰り返すことがある。おそらくデザインを言語化できていないのが原因だろう。厳密にいうと「良さ」の言語化ができていない。個人的に「問題点」は言語化できるが、「良さ」を言語化しようとするとなかなか難しい。しかし世の中のUI/UXデザイナーの記事を読むと、「なぜ自分が作ったものが素晴らしいのか」を言語化するための試みができていて、改めてプロフェッショナルというものを感じた。
サービスもデザインと同様、言語化が大事だ。自分がプログラマーということもあるかもしれないが、プログラムというものは論理で構成されているので、サービス/デザインに比べて言語化しやすいものだと思っている。今の自分にとっては「サービスの良さ」の思考プロセスをルール化できるようになることが重要だろう。
今後は言語化の訓練もかねて、PDCAを回しながら試行錯誤していく。第一目標は自分を納得させるためのルールを言語化すること。他人を納得させることはできなくても自分さえ納得させられれば、少なくとも意味のあるサービスになると思っている。 (逆に、個人開発においては言葉で他人を納得させる意味はあまりない気もする)
最近の動向
上述した流れで、他の人のサービス作りに対する考え方が気になったため、2019年の4月頃、Twitterでサービス作りの手伝いをさせて貰えないかと逆募集をかけてみた。 そしてありがたいことに、今までにコンタクトを取ったことのない方だったがお誘いの声をかけて頂けたため、現在はそのプロジェクトの開発手伝いをしている。
アプリ制作の仲間を募集できるwebサービス「app-guild」制作中です!
— みずもと🐟週末共同開発 (@mizuuumoto) 2018年9月16日
個人的経験から誰かと一緒にモノづくりをする楽しさをもっと多くの人に知ってもらいたいという思いがあり、同じ目的と同じ熱狂を共有できる人たちの寄合所(ギルド)を作ります。
よかったらRTしてくれると嬉しいです🙏#Appギルド pic.twitter.com/mNbmMldoBx
ものづくりをする仲間を集めるためのマッチングサービスで、Slack上で行う仕様に関する話がすごく参考になる。なぜこの機能をつけるのか、なぜこういう仕様にするのか、という意見を交わせることができるのはとてもありがたい。リリースの際にはぜひ使ってください(宣伝)
サービス作りのアイデアに詰まっている人は意見交換をできる人を探してみるのも良いかもしれない。そういうコミュニティはいくつか見たことがあるので、Twitter上で探してみることをオススメする。Twitter以外にもCrieitという技術記事投稿サイトではレビュー掲示板というものがあるので、そちらを活用するのも良いと思う。というか他の人のサービス・レビューを見るだけでも参考になる。
また、私に声をかけて頂ければレビューくらいはできるので、気軽に声をかけて欲しい。(そしてついでに今後の私のサービスもレビューして貰えると嬉しい)
今後について
現在は転職活動をしておりなかなか時間が取れないが、空いた時間はReactでゲームを作っている。ゲームといっても物理エンジンを使うような激しいものではなく、状態遷移だけでシステムができるようなカードゲームや脱出ゲームのような類のもの。子供の頃からゲームを作ることは一つの夢だったので、Reactの学習がてら進めている。状態管理がそれなりに激しいため保守性を考慮するトレーニングになるし、アニメーションのチューニングも根本的な仕様の勉強になるのでなかなか良い。ただ今のところゲームとして面白くはならなさそう。面白さが言語化できるようになれば公開したい気持ちはあるが、とりあえずは気持ちだけ。
Webサービスの開発も久しぶりに始めたい。ユーザーがコンテンツを投稿するタイプのサービスをどうやって使ってもらうか、という課題が現状ではクリアできそうにないため、コンテンツは運営(自分)が提供する形式が良い。おそらくかなりニッチなサービスになるが、個人はニッチな分野で戦うべきだと思うのでよしとする。学習がてら利用経験のないElixirで作ろうと考えていたが、今は新規分野の学習よりもサービス開発に身を入れたいのでPHPかRuby、Reactで作る予定。
また、以前からではあるがUI/UXデザインやSVGアニメーションにも興味がある。単純に自分の趣味嗜好だが、デザインの言語化を行えるようになれば、サービスの言語化にもつながるのではないかと思っている。JSアニメーションの腕をあげれば先述のゲームにも活かせるので夢が広がる。Reactでのアニメーションを色々試してみたかったので、ポートフォリオをReactで書き直した(トップページ以外はデザインが考えつかず放置)。ソースコードはgithubで公開している。
アイデアだけはどんどん湧いて出てきて、Evernoteを見返すと30個程アイデアが溜まっていた(面白いかどうかは別だけど)。 アイデアが出る限り、個人開発はどんな娯楽よりも楽しい(難しい課題が出ると辛いけど)。 常にアンテナを張る必要があるので、生活に張りが出る(疲れるけど)。
自分のセンスに自信を持つことは難しいけれど、今回考えを洗い出したおかげで今後にすべきことは見えてきた気がする。できないことがあるのなら、できるためにすべきことを書き出して、愚直に達成していく。今まで考え無しで動いてきたので、今後は色々と考えながら試行錯誤していきたいと思う所存です。