ユーニックス総合研究所

  • home
  • archives
  • web-app-release

Webアプリ開発のいろはを紹介!小規模Webアプリの効率的な開発手法に迫る

  • 作成日: 2020-08-02
  • 更新日: 2023-12-25
  • カテゴリ: IT

スピードとリリース

今回はWebアプリ開発の効率的ないろはをご紹介します。
Webアプリを開発してみたいけど、なかなかうまく行かないと言う人が対象です。

筆者はWebアプリの個人開発者です。

Webアプリは無数に作ってきましたが、作れば作るほどWebアプリは奥が深いものです。
そういった開発の中で得た経験から言えることがあります。

Webアプリ開発で大事なのは、ずばりスピードです。
なによりもまずスポードを重視して作る、これです。
アクセル全開で行きましょう。

そして、リリース・ファーストであること。
他のことなんて2の次3の次、Webアプリはリリースしなきゃはじまりません。
さっさとリリースしてリリースしながら開発を続けましょう。

  • スピード
  • リリース・ファースト

これらを意識することで、Webアプリの開発は飛躍的にうまくいくようになります。
Webアプリ開発がうまくいってない、完成しないという人はこれらの意識が足りていないんです。
かつての私もそうだったのでわかります。

では具体的にこれら2つについて今回は解説していきたいと思います。

なぜスピードが大事なのか?

なぜWebアプリ開発ではスピードが大事なのか? ゆっくり作ったらいけないのか?
というところですが、これは私が言い始めたことではなくて、Webアプリ開発の界隈では一般的によく知られていることです。
スピードを上げろ」というのは、つまり「早くリリースしろ」と言う意味です。
とにかく早くリリースして、あとのことはリリースしてから考えろ! という思想です。
これがつまり「リリース・ファースト」の考え方に繋がるわけですね。

  • スピードを上げるのはリリースのため

なぜリリースを早くするのか?

ここで

  • なぜリリースをそんなに急ぐのか?
  • なぜリリースをしなければいけないのか?

というところですが、これは簡単で、Webアプリは「リリースしてからが本番」だということです。
つまり、いつまでも練習してないでさっさと本番のステージに立て! という、わりとよく聞く体育会系的な思想なわけです。

まぁ、もちろん練習は大事です。リリース前の開発、これは大事です。
でも、本番の方がもっと大事なわけです。リリースしてからのほうが大事なわけです。

なぜリリース後の本番が大事なのか?
これは、リリース前の開発は、いわゆる閉じた状態なわけです。
ユーザーもいない、トラフィックもない、トラブルもない、ないない尽くしですね。

しかし、リリースしてしまえば、ユーザーが使ってくれるかも知れないし、トラフィックやトラブルも生まれる。
なにより作ったWebアプリが他の人の手によって使用されるわけです。
この状態は、いわゆるWebアプリにとって「生きている状態」なわけです。
Webアプリの本来の姿はこれです。ネットに晒されてこそ、彼らは輝くんです。

考えてみてください。
人造人間を作ろうとしている博士が、いつまでも死体を弄っていますか?
死体を弄って人造人間を組み立てるのは大事ですが、何より大事なのは人造人間に血を巡らすことです。

Webアプリにおいてとはトラフィック, PVです。
Webアプリを見て使っていてくれる人がいてはじめてWebアプリというものは活動をはじめるわけです。
トラフィックのない死体をずっと弄っていては、遭遇できるトラブルの数が全然違います。

トラフィックが生まれることによってエラーが生まれ、エラーを改善することでWebアプリの品質が上がるんです。
つまりWebアプリの開発で、アプリの品質を上げたいと思ったらさっさとリリースしましょう! ということなんですね。

そもそも、そのWebアプリは需要がありますか?

そして何より、開発しているWebアプリに需要があるかどうかは、リリースしてみないとわかりません。
考えてみてください。何年もリリースせずにコツコツ開発を続けて、よしリリースするぞ! となってリリース。
しかし、ユーザーは一向に増えない……

そこであなたは初めて、自分が作っていたWebアプリが、世間から必要とされていないことに気がつくわけです。
自分のアプリがまったくトラフィックを生まない、まったく世間から見向きもされない、そういうことを経験するわけです。
アプリを使った感想もなにもない、そもそもアプリに興味を持ってくれない、そういうことが起こるわけです。

🦝 < 残酷・・・

はい。残酷ですが、これ、よくあります
日常茶飯事と言ってもいいぐらいです。
私も数多くのアプリをリリースしてきましたが、ほとんどはこれで、まったくPVを生まないアプリばかりでした。
しかしその中からPVを生んでくれるアプリもいくつかありました。
しかし、半年以上もかけて制作したアプリが、月間100PVも稼げなかった時の悲壮感と言ったら……。

あなたもそうなりたいですか?

🦝 < 嫌です

🐭 < 嫌どす

そうならないためにも、とにかく早くリリースするのです。
そして、世間からの反応を見る。
世間の声を聞き、感想を求め、アプリの改善に役立てる。
反応があれば、開発を続ければいいし、まったく無反応なら、そのアプリの身の振り方を考えればいいわけですね。

たとえリリースしたアプリが世間から無反応であっても、そのアプリの宣伝に力を入れなければいけないことが次にわかるわけです。
そうしたらSEOを踏まえた宣伝活動に力を入れるように開発をシフトしていけばいいんです。
しかし、リリースしないことにはそのステップも踏めません。

要は「リリース・ファースト」の考えは、時間を無駄にしないための考え方なわけです。
リリースすれば実に多くの情報が手に入ります。
トラフィック、エラー、世間からの反応、宣伝活動の必要性……。
これらはリリースしなければ手に入らない代物なんですね。

リリース・ファーストの例

ここで偉大な先人の言葉を紹介したいと思います。
かの有名なFacebookの創業者、マーク・ザッカーバーグがこんな名言を残しています。

  • Done is better than perfect(完了は完璧に勝る)

これは言い換えれば「完成を待つんじゃなくて、未完成のままでも良いからリリースしようぜ!」というこことです。
さらに言えば

🦝 < 磯野がいなくてもいいから野球やろうぜ

ということですね(磯野かわいそう)。
まぁ、これは冗談ですが、つまり「完成しなくてもいいよ」という肯定的な言葉として受け取ってください。
「完成」は重圧です。この重圧は時によって開発者を潰してしまうものです。
特に仕事でコードを書いている人は、日夜この重圧と戦っています。

「完了は完璧に勝る」とは、「Webアプリをリリースすることは完璧なWebアプリより勝る」ということです。
この精神を大事にしましょう。これが大事です。

そしてTwitter、この巨大なSNSのプロトタイプがどれぐらいの期間で開発されたかご存知ですか?
なんと2週間です。

Twitterの生みの親であるジャック・ドーシーは、Twitterのプロトタイプを2週間で制作し、そしてリリースしました。
Twitterは素早くリリースされ、運用されながらあそこまで大きくなったわけですね。
Webアプリはこのように運用しながら大きくしていくものです。よって、最初は小さいアプリでも全然かまいません。

例えるなら農業をイメージしてください。
種を植えて芽が出た状態の苗があなたのWebアプリです。
この苗を広大な農地に埋めるのはあなたの仕事です。

まさかその苗を鉢の中で終わらせる気などないですよね?
あなたは広大な農地、インターネットにその苗を植えることが出来る力を持っています。
そしてその苗は、ひときわ大きな果実を実らせる可能性も秘めています。

その苗を農地に植えずにそのままでいる?

🦝 < そんなばかな

そんなおろかなことはやめましょう。
さっさと苗を農地に、インターネットに植えましょう。
そして育てるのです。

リリースを早くするにはどうすればいいか?

リリースを早くするにはどうすればいいのでしょうか?
それは最新の技術を使うことです。
最新の技術というのは、既存の技術より抽象化されて効率化されています。
つまり、古い技術を使うより新しい技術を使ったほうが、リリースは早く出来るということです。

基本的にはその考えで間違いはありません。
ありませんが、反例はあります。
たとえばLinuxのリーナス・トーバルズは、Gitを開発開始から2週間でリリースしました。

Gitの開発にはC言語が使われましたが、このC言語は最近の言語ではなく、昔からある言語です。
私も愛用していますが、最近の新しい言語に比べるとお世辞にも開発がしやすいとは言えない言語です。

しかし、リナスはその短期間でGitをリリースしました。
この反例からわかることは、場合によっては最新の技術を使わなくても、短期間でリリースできるという事実です。

なぜでしょうか?

これは、開発者の技量や蓄積によるところが大きいのではないかと私は思います。
Webアプリを長く作っている人があっという間に新規プロダクトをリリースするというのは、Twitterなどで開発者を追いかけているとよく目にする光景です。

つまり、リリースを早くするには以下のようにすればいいということがわかります。

  • 最新の技術を使う
  • 経験豊富な開発者になる(雇う)

しかし、「最新の技術」と「経験豊富な開発者」の両立はなかなかむずかしいでしょう。
普通に考えると、最新の技術は最新ですから、ノウハウがそんなに溜まっていないはずです。
つまり、↑をいくらか妥協するなら、「最新の一歩手前の技術」と、「それに精通した開発者を雇う」ことになるわけです。

コンテナを使う

そして最近の開発ではコンテナを使うのも一般的です。
コンテナはたとえばDockerなどがそうです。

コンテナを作るとリリースが数時間あるいは数分で終わることもあります。
コンテナを作っておいて本番環境にデプロイするときにコンテナを使えばリリースもとっても簡単です。

今の時代においてスピードを求めたい場合はコンテナは切っても切り離せない技術と言えます。
これから開発をするならコンテナを採用しコンテナを活用しましょう。

スピードを高めてリリースを速くする

スピード、そして速いリリース、この2つを達成するには最新の技術または経験豊富な開発者を使えばいい、ということになりました。
Webアプリは生き物ですが、リリースを速くすることでその性質を素早く把握することが出来ます。
ユーザーに踏んだり蹴られたりして、バグという悲鳴を漏らし、エラーという絶望に沈む。
そんなWebアプリを手塩になって育てていけば、いつかはFacebookTwitterなどのようなWebアプリに育てることが出来るかも………ということですね。

いろはのまとめです。

  • スピード
  • リリース・ファースト
  • 最新の技術
  • 経験豊富な開発者

これらを実現して、Webアプリの開発を劇的に進化させましょう。