素人がゼロからWebサービスを作るノウハウ!①最初にやること

素人がゼロからWebサービスを作るノウハウ!①最初にやること

素人のおじさんが4カ月かけて2個のWebサービスとWordPressを立ち上げました。

ITには興味があり、個人的に趣味でITの勉強をしていましたが、業務としてプログラミングを行なった経験はほとんどありません。(業務の効率化でちょっとしたシステムを作ったくらい)
これから何回かに分けて、素人の私がシステムを立ち上げるまでに得たノウハウや手順を備忘録がてらに書いていきます。

何かシステムを作ろうとすると選択肢が多く、取捨選択するのが大変です。
わたしは、たくさん調べて、試してみる事に沢山の時間を費やしてしまいました。
この記事では、たくさん調べて試したことはバッサリ切り捨て、最終的に私が『ここはおさえておいたほうがよい!』と考えた方法を紹介して行きます。
同じような環境にいる方の参考になれば幸いです。

まずは、立ち上げたWebサイトを紹介します。

最初に作ったのは、『てるてる坊主』と名付けたWebサービスです。

このサービスは、イベント日時、場所、実施条件を登録すると、天気予報を使ってイベントを実施するか中止するかが決定されます。
確認用URLをメンバーに送ることで、主催者が個別に連絡することなくメンバーは決行か中止かを確認できるサービスです。
(是非皆さんも使ってみてください!)

Python +Flaskを使いブラウザへの表示やユーザーから受け取ったデータを元に情報を処理するプログラムを動かしています。
データの登録や読み取りはMySQLデータベースを使いました。

天気予報の情報はDarkSkyという天気予報会社のWebAPIを使い、地図にはGoogleMapsPlatformのAPIを使っています。

次にWordPressを動かせるようにしました。(このブログです)

WordPressとはブログを作成するために作られた無料のソフトです。
色々と情報発信ができるようにする為に一つ持っておこうと考えて立ち上げました。ブログを立ち上げたいならWordPressを使えば間違いありません!

次に作ったのは『GeoTalk(ジオトーク)』と名づけた、掲示板です。

場所限定掲示板GeoTalk

このサービスは位置情報を利用して、「この場所」だけで投稿を読んだり投稿したりすることが出来る掲示板です。(ぜひ一言書き込んでくれると嬉しいです!)

先ほど紹介した『てるてる坊主』と同様にPython+Flaskを使いブラウザへの表示やユーザーから受け取ったデータを元に情報を処理するプログラムを動かしています。データの登録や読み取りはMySQLデータベースを使いました。

位置情報はブラウザのGeolocation APIを使い取得しています。

では、このようなサイトを立ち上げるまでにいろいろと検討したことを紹介していきます。

最初に整理するのは大まかな実施順序です。

何かWebシステムを作ろうとして、いきなりサーバーを立ち上げるよりも、順序立てて計画的に実施していったほうが後戻りが少なく効率的です。とはいってもそんなに難しい話ではなく、こんな感じでいいと思います。
①企画       何を作りたいか決める
②基礎知識の学習  作るにあたっての基礎的な知識の習得
③環境整備     本番環境と開発環境を準備する
          (本番環境は後でもいいですね)
④設計       フローチャートやシステム構成を書く
⑤コーディング   実際にプログラムを打つ
⑥デバック     プログラムが思い通りに動いているか
⑦公開に向けた設定 セキュリティーの設定とかDNSの設定とか
⑧公開

恐らく普通は③環境整備と④設計は逆だと思います。設計も一くくりにしてしまいましたが本来ならさらに分割して、要求定義、要件定義、外部設計、内部設計などを行い、本番環境に求められる必要な環境が洗い出されてから環境整備に進むと思います。
ですが、私のような素人の場合、環境を決めてしまったほうが設計する際に楽だと思いあえて環境整備を前に持ってきました。
また、企業のシステムや大規模で複雑なシステムを作ろうとしたら、プロジェクトマネジメントの勉強をして、もっと緻密に管理したほうがいいと思います。ですが個人でとりあえず何か立ち上げたいと思う程度なら、こんな感じで整理しておけばOKです。大切なのは、ある程度順序を決めておくことです。何かを作ろうとしていきなりコーディングを始めるのは手戻りが多発してとても効率が悪いです。どのような工程が必要か全体像を把握して順序を意識して進めるのがよいでしょう。

何を作るかアイディアだし!

まずは企画ですが、システムを作るに当たって、何を作りたいか?を明確にする必要があります。実はこれが、一番難しい事かも知れません。

何を作るかは、アイディア勝負になりますので、家族や友達に協力してもらってアイディア出しをするのが効率的かと思います。
また、思いついたアイディアは必ずメモしておいたほうがいいです。『何かいいアイディアを思いついたことは覚えてるんだだけど、何だったか覚えていない』というパターンは意外と多いです。
アイディア出しに関しては、デザインシンキングや強制発想法、マーケティング手法など、いろいろなツールがあると思いますが、ブログの趣旨と異なるので(私もよくわかってないので)取り上げません。

本気でビジネスを立ち上げようと思うなら、アイディア出しが最も重要だと思います。
ですが、自分が作れる範囲という制約条件をつけて新しい、面白いアイディアを出すのは至難の技です。

アイディアが無いので先に進めない状態になるといつまでたっても実行に移せません。アイディアが無ければ、あまり深く考えずに、掲示板でも、おみくじサイトなど作りたい物を決めちゃいましょう。
作りたい物がないと、調査も設計もコーディングもできませんからね。

とりあえず勉強用でも1回システムを作っておけば、アイディアが浮かんだときに新たなシステムを作るのがとっても楽になると思います。

作りたいものが決まったら、言語、勉強法、サーバーを決めちゃいましょう。

・メインで使用する言語・・・・私はPythonにしました
・勉強方法・・・・・・・・・・私はpaizaを基本に勉強することにしました。
・システムを運用するサーバー・私はAWSのEC2 t2.microをにしました。

この三つがブレると、調べる範囲が増えてしまい効率が低下します。最適な選択かは別としてまずはこの三つに決め打ちします。

では次回からそれぞ、Pythonにした理由Paizaにした理由AWS EC2 T2microにした理由をご説明いたします。

連載記事一覧

素人がゼロからWebサービスを作るノウハウ!①最初にやること
素人がゼロからWebサービスを作るノウハウ!②Pythonにする理由
素人がゼロからWebサービスを作るノウハウ!③学習はpaizaにする理由
素人がゼロからWebサービスを作るノウハウ!④サーバーをAWS.EC2.t2.microにした理由
素人がゼロからWebサービスを作るノウハウ!⑤開発環境もEC2
素人がゼロからWebサービスを作るノウハウ!⑥Dockerを使おう