プログラミング知識ゼロから独学でWebサービスを公開するまで

こんにちは、ゲンゲンです。
今回は、「プログラミング知識ゼロの初心者が独学でWebサービスを公開するまで」というお題でちょっとお話してみようかと思います。

この記事を読むとわかることは、このふたつです。

  • Webサービスを作るのに必要なスキル
  • Webサービスを作るまでにやったこと

なぜこういう話をするのかというと、僕は今でこそエンジニアの仕事なんかをしたり、1人でサクッとWebサイトを作ったりできますが、以前はひとつのサイトを作るのにそれこそ3ヶ月とかかけて作っていました。

というのも、僕がプログラミングの学習をはじめたころ師匠のような人がいなくて完全に独学でやっていたため、わからないことがあっても質問できる人がいなかったのです。
だから、わからないことがあれば試行錯誤して解決したり、検索しまくって解決策を見つけたりしていたのでとても作業が遅かったのです。

そんなことをしていた時のことを思い返すと、「こんなことやっていて上達するのかな」みたいな不安がありました。
一つの問題を解決するのに3日とか4日もかけていたこともありましたので、常にこういう不安を抱えつつ勉強していたのを思い出します。

僕がこんな感じだったので、ひょっとすると今プログラミングを勉強している人の中には僕と同じような人もいるんじゃないかな、と思ったので僕がプログラミングの勉強をはじめてからWebサービスを公開するまでにやったことをご紹介していこうと思います。

その前にまず、僕がどんなものを作ってきたのかという話ですが、ほんとに色々なものをつくりました。
最初に作ったのは入門書に載っていたQRコード生成アプリでしたが、その後チャットボットやチャットサイトも作りましたし、ビットコインの自動アービトラージシステムなんかも作りました。

公開していないものも含めると100個以上作りましたが、僕の実感から言うと複雑なシステムの制作にチャレンジしてみると一気にスキルレベルが上がります。

たとえばショッピングサイトなどはかなり複雑なシステムなので、ショッピングサイトをゼロから作れる程度のスキルがあればどんなWebサービスでも作れます。
この記事では、そういったWebサービスを作るのに必要なスキルと、そのために必要なことをお話していこうと思います。

Webサービスを作るために必要なスキル

Webサービスを作るために必要なスキルは広範にわたります。
まず、Webサービスを作るためのプログラミング技術が必要ですし、そのプログラムをサーバーで稼働させるためにはサーバーの知識も必要です。

そして、Webサービスを画面に表示するためのHTMLの技術も必要で、それをキレイに見せるためにはCSSの知識も必要です。
画面側でWebサービスを動かすためにはJavaScriptというプログラミング言語も習得しなければなりません。

さらに、どんなサービスを作るのかにもよりますが、たとえばショッピングサイトやマッチングサービスなど、データベースが必要となるサービスを作ろうとするとMySQLなどデータベースシステムに関するスキルも必要です。

なので、大きくわけて以下の6つのスキルが必要になります。

  • サーバー側のプログラミング言語(Pythonなど)
  • Webフレームワークの使い方(Tornadoなど)
  • フロント側のプログラミング言語(JavaScriptなど)
  • Webデザインのスキル(HTMLとCSS)
  • サーバーのOSと設定などのスキル(LinuxとNginxなど)
  • データベースシステム(MySQLなど)

こうしてみると、覚えなければならないことが沢山あって大変そうに見えますが、ひとつひとつクリアしていけば気がつくとできるようになっています。
なので、まずはひとつでもいいので基礎を身につけることを意識してください。

Webサービスを作るまでにやったこと

僕が最初にプログラミングの勉強をはじめたのは、Pythonの入門書を買ったことがきっかけでした。
プログラミングにはずっと興味があったので、いつかやろうと思っていたので僕にとっては自然な流れだったと思います。

なぜPythonを選んだのかというと、海外では主流のプログラミング言語になっていたからです。
当時、日本ではPHPやRubyがもっともよく使われていたプログラミング言語でしたが、日本で流行っているものが海外でメインストリームになっているものに取って代わられることはよくあるので、あえてPythonを選びました。

そんな感じでPythonの勉強をはじめて、ある程度基礎が身についた段階で、その時のスキルで作れるものを作ったりしていました。
たとえば、このころ作ったのがチャットボットです。
PythonにはTKinterというGUIフレームワークがあるので、これを使ってチャットボットを作ったりしていました。

ただ、こうしているうちにPythonだけ覚えても作れるものに限界があることに気が付きます。
たしかにPythonは万能な言語なのですが、これだけではWebサービスは作れないことに気がついたのです。
とくにPythonだけでは画面に何かを表示して操作するということには不向きで、他に何かを組み合わせる必要があるのだということに気がついたんです。

解決策はJavaScriptとの出会いだった

そんな感じで悶々としていたとき、ネットで読んだある記事で、JavaScriptという言語を使えばHTMLを動的に書き換えることができるということを知りました。
どういうことかと言うと、今表示されているブラウザの画面をJavaScriptという言語で書き換えることができるということです。

なので、これとPythonを組み合わせると、Webブラウザで動くWebサービスを作れそうだということに気が付き、翌日にはさっそくJavaScriptの入門書を買いに行きました。
そしてさっそくJavaScriptの勉強をはじめたのですが、正直いって超簡単で、基礎の部分を3日くらいで覚えることができました。

というのも、それまでPythonを思いっきりやっていたので、プログラミングの基礎が出来上がっていたのが大きかったと思います。
JavaScriptも変数や関数、if文やfor文といった基本的な概念はほぼ同じで、記法とライブラリの使い方が少々違うという程度もの。
プログラミングの基礎があれば初めての言語でも3日で覚えられます。

そして、その次にやったことはHTMLとCSSの習得です。
これはJavaScriptを始めたときにすでにやる予定だったことですが、これを覚えなければWebサービスの画面をキレイに作ることはできません。

これに関しては、以前からWordPressなどをいじっていたこともあってタグの使い方など基礎的なことは知っていたので、ネットの情報のみで覚えていきました。
ただ、やっぱりネットの情報は体系的にまとまっていないので、JavaScriptよりもHTMLとCSSの使い方のほうが苦労したような感じがします。

Webサービスを作るにはWebフレームワークが必要

そんな感じで、一通り覚えたところで次の関門がありました。
ここまで覚えたのはいいけど、どうやってWebサービスって作ればいいの?という根本的なところでした。
例によってこれは検索で解決することになったのですが、これにはWebフレームワークというものを使えばいいらしいということがわかりました。

Webフレームワークとは何かと言うと、簡単に言えばWebサービスを作るのに必要な機能が詰め合わせになったものです。
これを使うことで、比較的簡単にWebサービスを作ることができるということがわかりました。

そして、Webフレームワークにも色々あって、僕はPython使いなのでTornadoというWebフレームワークに行き着いたのですが、これは色々試した中で一番使いやすかったからです。
Pythonなら他にもDjangoなどもっとメジャーなものもあるので、そっちのほうが情報も多かったのですが、個人的な使いやすさということでTornadoをいまだに愛用しています。
さっきご紹介したLa Lamirというサイトも実はTornadoで構築しているサイトで、このフレームワークで作られたショッピングサイトというのも珍しいのではないかと思います。

Linuxのサーバーをはじめていじる

Python、JavaScript、HTML/CSS、Webフレームワークと一通り覚えたところで、ローカル環境で簡単な占いアプリを作ることができました。
//localhostに接続すると、自力で初めて作ったWebサービスがブラウザ上でちゃんと動いていて、とても達成感があったことを今でも覚えています。

そして、これをネット上に公開するのが次の関門でした。
実は、僕はそれまでサーバーというものをいじったことがなく、どうすれば自分が作ったWebサービスを公開できるのかまったく見当もつかなかったのです。

ローカルでWebサービスを動かしてはいたものの、実はTornadoというWebフレームワークにはサーバーの機能もあって、試作段階では何の問題も発生していなかったわけです。
しかしこれをネット上に公開するとなるとまた別の話で、VPS等を借りて、Linuxの操作を覚えて、NginxなどのWebサーバーアプリケーションの操作を覚えなければならないということがわかりました。

ここまでわかればあとは簡単で、実際にやるだけのことです。
早速次の瞬間にはさくらのホームページにアクセスし、VPSを1台契約しました。

そして、ネット上の情報を頼りにLinuxの操作を少しづつ覚え、Nginxのセットアップも無事済ませることができました。
とはいえ、これにもやはりある程度時間がかかってしまい、3~4日程度はLinuxの黒い画面とにらめっこしていた覚えがあります。

そして、ムームードメインでドメインを取得し、サーバーに設定。
いよいよローカルにあるWebサービスをVPSに移して動かすときがやってきたのです。
このときも少しばかり詰まることはありましたが、無事作業を終えることができ、独自ドメインで自分のWebサービスを公開することができました。

このとき、プログラミングを覚えてからWebサービスを公開するまでの全ての工程を自分ひとりでやりきった達成感と喜びは今でも覚えているほどです。
このときのWebサービスは今はもうクローズしていますが、思い出として僕のパソコンにはまだ残っています。

さいごに

さて、ここまでプログラミングを覚えてからWebサービスを独力で公開するまでにやったことの一連の流れをご紹介いたしました。

いかがでしたでしょうか。
確かにWebサービスを1人でつくるのは結構たいへんで、プログラミングをはじめたばかりの人にとっては覚えることが多すぎるように思えるかもしれません。

けれど、やり終えたときの達成感は半端ないですし、やり終えたあとの自分のスキルはものすごく上がっているはずです。
ここに書いたことは、まったくの初心者でも半年で達成可能です。
実際僕も初めてPythonの入門書を買ってからはじめてのWebサービスを公開するまでに半年くらいしかかかりませんでした。

真剣に勉強すれば、これくらいの短期間で大きなスキル向上ができるので、ぜひWebサービスを作るというのをやってみていただければと思います。

それでは、今回の記事はこのあたりで。
最後までお読みいただいてありがとうございました!