作成したい動機
- WEBアプリケーションを自分でも開発できるようになりたい(特にスタートアップフェーズのプロダクトの場合)
- エンジニアと同じ目線でコミュニケーションしたい
作成したいと言ってきた人のスペック
- 素人レベルですが、htmlとcss(SCSS)は少し書ける
- javaを少し研修で触ったことがある
- pythonを少し勉強している
出来れば、完全素人向けに書いてほしいとのこと。
本人も結構無茶を言っていると認識していましたが、聞かれたので真面目に考えてみた。でも、到底ペライチで説明できる代物では無いので、ざっくりと最短で行けそうな方向性を示そうかと。
Webアプリケーションを作成する上で必要なもの、ざっくりと
- httpのプロトコル
- フロント(html, css, js)(chromeなどのブラウザに表示する部分を担当)
- Webサーバー&アプリケーションサーバー(Java, Node.js, Ruby)(フロントとミドルウェアや外部サーバーとのやり取りをしたりする)
- ミドルウェア(Database, Nginx, Redis)(データ格納用のソフトウェアなど、用途に応じたソフトウェアのこと)
- インフラ(クラウド、物理サーバーやネットワーク、スイッチなど)(主にハードウェアのこと)
かなり大雑把な説明ですが、ざっくりこんな感じでしょうか?細かく言うとさらに色々あるので、こんなもので。。。
学習コストが少なめな組み合わせ
■httpプロトコル(Webの通信原理となります)
とりあえず、getとpostの違いだけ分かればよいかと。
■フロント(jQuery)
Reactとかモダンなのやったほうが良いのでしょうが、覚えることが多すぎるので、最初はこれでシンプルにやって、慣れてきたらReactとかのほうが良い気がします。(jQueryなら聞いた場合、答えられる人多いでしょうし。)
■Webサーバー&アプリケーションサーバー(Node.js)
JavaとかPHPだと、Webサーバーが必要で、そちらの設定も覚える必要があり大変です。Node.jsは、単体で動作します。また、フロントでjs使うので学習コストは低くなるかと。
jsの学習は、JavaScript 第6版(サイ本)を読んでおくと良いです。ES2015の仕様には対応していないのですが、基本を知るには問題無いかと。
■ミドルウェア
Mysqlが良いと思います。奥が深過ぎるので、さらりとやると良いかと。
■インフラ
とりあえず、ローカルでやると思うので、クラウドは使わない方向で。LinuxMintとかUbuntuとかWindowsとかMacとか、好きなの使えばいいと思います。
もし、クラウドを使うならPaaSとか呼ばれている、OSとか言語とか準備済みのクラウドが良いと思います。Node.jsが使える中でおすすめは、Google App Engineです。
■Github(ソースコード管理ツール)
マストでは無いです。でも、こちらはプライベートでもGistなど色々と使えるので、使えるようになっておくと良いかと。こちらに上げてくれれば、コメントしたり、修正したりすることが出来るようになります。
やる順番
とりあえず、フロントとNode.jsだけでシンプルに始めるのが良いかと。
その後、徐々にMysqlと繋いでみたり、GAEに乗っけてみたりしてみるとよいかと思います。
あとはググってひたすら、手を動かすのみ
現在のコンピュータの動作原理である、「ノイマン型コンピュータ」を作ったフォン・ノイマン氏いわく、
In mathematics you don't understand things. You just get used to them.
「数学では物事を理解するということはなくて、慣れるにすぎないのだ。」
とのことです。超天才でも理解せずに慣れているにすぎないなら、僕らも慣れるしかない。手を動かそう!!
昔に、Pythonやろうとして、本をしっかり読んでからやったけど、結局手を動かして必要な部分だけ本を読んだほうが、覚えが速かった経験があります。。。(今思えばググれば、本要らなかった気すらします。。。)
まとめ
こんな解説じゃ、ダメですかね?とりあえず、来週感想を聞いてみます。ダメそうなら修正します。
→ 追記しました。2016-10-17