フロントエンドの地獄

みせてやりますよ。本当の地獄ってやつをね。

個人開発のモチベーションが続かない、作り終わらない。原因と対策を考えてみた。

運営者ギルドという、個人や少人数チームでWebサービスやアプリを作っている人のSlackチームがありまして、そこで furuta さんやnaichi さんとチャットしていて、個人サービスを作っていて「モチベーションが続かない」「いつの間にか辛くなってくる」という個人開発あるあるについて話していました。

個人開発は「自分の作りたいもの」を「自分の使いたい技術」で「自分の好き」に作れる最高の舞台です。クリエイターならやらない手はないでしょう。

しかし、何も考えずにいざ足を踏み入れてみると、思ったよりも険しい道だと気づくのです。

仕事でもなく「自分が作りたくて作っていた」はずなのに、いつの間にかどこかに逃げ出してしまうモチベーション。何ヶ月経っても作り終わらない現代のサグラダ・ファミリア。仕事がバタついて1週間面倒見ていなかっただけで「え、なにこのクソコード」と毒づいてしまうほど荒れ果てたmasterブランチ。あのころ目指していた「一発当てて平日昼間から温かいこたつでレディボーデンを頬張っている自分の姿」はどこへやら。

そんな目も当てられない状況、私にもありました。振り返ってみて「どうしてこうなった。」とならないために、原因と対策を考えてみたのでみなさんのご参考になればと思います。

構想がでかすぎて作りきれない

まずこれ。

「すっげーいいアイディア思いついた!!!」ってテンション上がって「どうせなら高いレンタルサーバー借りよう」とか(そもそも借りるのは公開直前でいい)言い出してて気づいていない落とし穴。

スケールがデカイのはいいことですが、本当にそれは自分ひとりで作りきれるサイズ感でしょうか。

1ヶ月で作りきれるものにしよう

職業プログラマなら、なんとなく自分の工数計算できるはず。

1ヶ月空いてる時間すべてつぎ込んでも作れないようなものなら、考え直したほうがいい。ほぼ確実にガウディる。

削るところは削ってまずはMVPを出す

作れる人はいいんだけど、そうじゃない人は1ヶ月で作りきれるMVPをまずは考えてみよう。

例えばTwitterみたいなサービスを作るとするなら、ログインもマイページもフォロー機能も一旦置いておいて、投稿画面とその一覧画面だけを作ってどんな感じになるかを見てみよう。

ログインして、マイページで自己紹介文を編集して、ユーザー画像を変更できるように画像アップロード機能を作って・・・とかやってるうちに大概モチベーションはどっか行きます。

ひとまずそのサービスで一番コアになる部分を分かるように作りましょ!

公開できる部分に切って、そこだけ作ってユーザーテストする

そんな感じでMVPが出来たら、知り合いに見せてみましょう。

TOPページの説明は無いから自分でざっくり説明してから投稿画面を触ってもらいましょう。

「よくわかんないね。hahaha」とか「これってtwitterと何が違うの?」とか言われて落ち込むかもしれません。

でも「あ〜これ、こういう使い方もできるね」「逆ににゃーんしか呟けないようにしたら?」とか意見がもらえるかも。

モチベーションが逃げちゃわないように、少しづつでもいいのでそういったプラスな声を聞いて歩みを止めないようにしましょう。

作る時間をしっかりとれるように計画しよう

あとは進めていくウチに中だるみするのを防ぐために「一人開発合宿!」とか叫びながら「ビジネスホテルにPCだけ持って一泊する」みたいなのをやってみてもいいかも。

とにかく時間を確保しないことには進捗は生まれないので、上司に媚びを売るための会社の忘年会なんか行ってる場合じゃないんですよ!

技術的にしんどい

次は作ってみたら思ったより難しくって「ProgateとRailsチュートリアルを終わらせた俺に作れないものなど無いはずなのに。。。」みたいな気持ちが生まれてしまうやつ。

ここに書いてあることを頭にいれて、心が折れるのを未然に防ぎましょう。

未経験な技術はできるだけ使わない、使っても1つだけにしよう

基本的に全部未経験みたいなのでやろうとするのは個人開発アンチパターンです。よっぽど作りたいものじゃないと作りきれません。

ここは的を絞って、ちょっと背伸びすれば作れるレベルのものにして、壮大な構想は後にとっておきましょう。「千里の道も一歩」からです。

技術習得と、新規開発はできるだけ分離しよう

それでも結局、自分の作れる範囲のものなんて作っても仕方がない・大したものが作れないとなってしまったら、技術習得と、新規開発はできるだけ分離しましょう。

これは、「習得をマイルストーンにしてないと、開発していて新しい技術を習得している過程では、開発が全く進んでないように見えて心が病んでしまう」のを未然に防ぐためです。

習得していく技術については、別途技術習得チェックリストを作って、開発のtodoと別で積み上がっていくのが見えるようにしておくといいと思います。

また「技術習得のために作っている」というパターンならあまり心配ないですが。作れなくとも技術を習得できれば目標は達成ですから。

汚いコードでも、まずは動くものを作ってからリファクタリングしよう

「完璧を目指すよりまず終わらせろ Done is better than perfect.」

ってやつですね。ひとまず動くものを書きましょう。

動的な部分も静的なもので一旦作る

ひとまず後から入るであろう数字とか、まずは決め打ちで書いてしまって後から直しましょう。

細部にこだわるより一旦全体を通して使えるものにするのが先です!

デザインを別で作ってるなら、その部分はもう画像貼って終わりにして、後からコードにおこすとかもいいですね。

一旦PCだけ対応 、iOSだけ対応とかにする

レスポンシブ対応とかはまだまだ先でいいですよ。

このご時世一旦スマホで見れるものを作ったったらええんや!

CSS一切書かないでコアな部分だけ先に作る

「CSS書くの辛いマン」の人手を上げて〜

一旦bootstrapとかCSSフレームワークを突っ込んだだけにしておいて、あとから書きましょ。ね?

外注する

絶対作ってやるぞ!って場合にはもう自分が苦手な部分は外注してみましょう。

あとは例えばクイズを誰でも作れるサービスみたいな、CGMを作る場合なんかはコンテンツを外注してみて、10問でも人が作ったデータが入ってるとそれっぽい感じになります。

作ってる間に似たようなサービスが先に出てきた

これもあるある。個人だろうが仕事だろうがあるんですよね。

Webサービスなんてだいたい「掲示板」ですから。カキコしたら一緒ですよ。

同じ事を考える人はたくさんいるので、気にしない

「Google は18番目の検索エンジン」

今日はこれだけ覚えて帰ってください。

Webサービスなんていう狭い枠組みで考えてたらそりゃあ被りますよw

それでも全く同じサービスにはならない

機能は似ていても、思想まで一致するってことはないんじゃないかと思います。

facebookもTwitterも結局なんか書き込んでタイムラインにするだけなのに、いつの間にかこんなに違う。

思想が違うと方向性も変わってくるので、しっかり自分の考えを固めて振り返ってみるといいと思います。

チームでやっていて、他のメンバーが動かない or 自分の負担が大きい

これは個人じゃない場合なんですが、人によってモチベーションもかけられる時間もコストもリスクも変わっちゃうんですよね。

チームを小さくする

まぁ煩わしいなと思ったらさっさと解散しましょう。時間の無駄です。またなんか思いついたときに集まればいいじゃないですか。

もし続けたいメンバーがいたら、そのときにある資産を誰が持ち帰るかだけもめないようにしましょう。

作ったけど誰にも使われなくて悲しい

これは今度作りきった後なんだけど、色々頑張って作ったものの使われないのは悲しい。

でも一つのものを作り切るってすごいことですから、思い入れがあるなら今までの努力を無駄にしないようにもうちょっとだけ頑張ってみましょうよ。

自分でとにかく使う

まずは「自分が欲しくて作った」んじゃないですかね?使ってみて、少しでもいいところがあったらまた友達に見せてみたりしてもいいですし、色々使ってみてると「あ、こんな使いかたできるかも」とか「横展開してこういうのできそう」とか思いついたりもします。

あのtwitterトレンドにぽこぽこ出てくるアプリ☆メーカーも、最初は流行るまで何ヶ月もひたすら自分たちでコンテンツを作り続けたらしいですよ。

自分が欲しい部分をとにかく作る

使いまくっていると今度は「コレも欲しい」「あれも欲しい」となってくるはず。

自分がファーストユーザーになれないサービスなんて作っても全然面白くないですから、自分のための機能どんどん作っちゃいましょうw

最悪自分のための最高のサービスになってもいいじゃないですか。

他の開発者と交流する

(11/25追記)

Twitterでwebサービスを作ろうとしている人と交流するってのもいいかもしれません。 駆け出しエンジニアと繋がりたい人たくさんいますし、同じようにwebサービス作りたい方を探してお互いに意見出し合うとかもいいですね。

また、冒頭で出てきた運営者ギルドは個人レベルでwebサービスを作っている、作ろうとしている人達のコミュニティなので そこで他の個人サービス運営はどうやってるのかなーとのぞいてみたり、意見をもらってもいいかもしれません。

有料ですが入江開発室というのもそんな感じのコミュニティみたいです。

まとめ

こんな感じで私の考える、個人サービスのモチベーション問題を未然に防ぐ・発生してもどうにかするための方法を書いてみました。

個人で作れるものの範囲が年々大きくなっていくWeb業界ですが、華々しくデビューを飾るサービスの裏にはたくさんの折れた心達があります。

モチベーションとか関係なく作れちゃう人はいいんですが「Webサービス作ってみたい!」って人は挑戦する前に少し心がけてもらって、心を折らずに作りきって欲しいと思います!

終わり