N予備校 「【2017年度】プログラミング入門 Webアプリ」受講
N予備校のプログラミングコースは、ドワンゴの現役のエンジニアが作成しており、実践的なプログラミングが学べそうであったので、こちらを受講してみました。
大学時代にプログラミングの基本的なことは学びましたが、イマドキな開発環境でWebアプリを作ってみたくなったので、1から勉強し直しました。プログラミング入門Webアプリのコースでは、Webアプリを作成するために必要な技術が学べます。教材は動画(生放送のタイムシフト)とテキストの2種類がありますが、私は知っている内容を流し読みできるテキストのみしか使いませんでした。
第1章 はじめよう
HTML, CSS,Javascriptが学べます。私はある程度知っていたので、飛ばしましたが、プログラミングをやったことがない人でも理解できそうな内容です。
第2章 準備しよう
Webアプリ作成のためのLinux周りの内容です。最初はVirtualBox, Vagrantをインストールして、その中にUbuntuインストールするところから始まります。VirtualBoxは仮想化ソフトウェアというもので、PCの中に仮想のPCを作ることができるソフトと言うイメージです。VagrantはVirtualBoxなどの仮想化ソフトウェア上で動くもので、仮想環境を管理したり構築するためのソフトウェアです。VagrantはVagrantfileと「box」と呼ばれるもととなるOSのイメージファイルで仮想マシンを起動させることができます。VagrantはChefやAnsibleなどのプロビジョニングツールと呼ばれるものと組み合わせて開発環境を同じ開発チームの人に簡単に配布できるところが強みであると思いますが、VirtualBox+Vagrantだけを使うならばVirtualBoxだけでもいいような気がします。VirtualBox+Vagrantだけでも仮想マシンを簡単に作成・削除ができますし、Vagrantファイルの設定を使い回す事もできるのでVagrantを使用するメリットがまったくないわけではないと思います。
その後、linuxコマンド、Git、GitHubの使い方を学びます。第3章の練習問題では、GitHub上にある練習問題のリポジトリをフォーク→ローカル環境で編集→プルリクエストするといった形でGitHubはずっと使っていきます。
この章もある程度知っている内容でしたが、VagrantやGitHubのプルリクエストは使ったことがなかったので、勉強になりました。
キーワード:Linuxコマンド,Vagrant,VirtualBox,GitHub
第3章 サーバーサイドプログラミング入門
ここからようやくWebアプリを作成していきます。開発環境はNode.jsを使用しています。Web系では、PHP, Ruby, Python, Javaあたりがよく使われると思いますが、サーバーサイド、クライアントサイドで別の言語を使用すると学習コストが高くなるので、サーバ・クライアント両方ともにJavascriptが使えるNode.jsを選択しているのは良いと思います。
この章の前半では、Slackと呼ばれるコミュニケーションツール上で動作するBotを作成します。npmを使用してモジュール化したり、テストコードを書いたりします。今までにテストコードを書いたことがありませんでしたが、実際の開発現場では、テストコードを書いてコードの品質を維持していくと思いますので、テストコードを意識しながらプログラミングをしていきたいと思いました。
後半は、Web上で匿名掲示板の作成を行います。クライアントサイドでは、JadeというテンプレートエンジンやCSSフレームワークであるBootstrapを使用しています。サーバーサイドでは、SequelizeというORMやCookie,Baic認証のライブラリなどを使用します。
セキュリティ関係では、この章の中では、
- OSコマンド・インジェクション
- セッションハイジャック
- クロスサイト・スクリプティング(XSS)
- クロスサイト・リクエストフォージェリ(CSRF)
について解説があり、これらの脆弱性があるとどのような事ができるのか実際に動かしながら説明されています。フレームワークを使用すればこのあたりの脆弱性は意識しなくてもいいかもしれませんが、基本的が原理については知っておくことは大事であると思います。
匿名掲示板の設計はMVCを意識しており、きれいな設計であるので、自分で新しくWebアプリを作るときにこのようなきれいな設計ができるようになりたいです。
キーワード:Node.js, npm, Slackボット, HTTP, Heroku, Jade, Bootstrap, Sequelize, Cookie, セキュリティ
ここまでの感想
第1章は基本的な内容でプログラミングを知らない人でもできると思いましたが、第2,3章あたりからは必要なツールが増えていき初学者には少しは難しいかなと思いました。
内容的には情報系の大学では学べないような実践的な内容が多くWeb系の企業に就職・転職したい人にはもってこいの内容でした。残りの第4章があるのでこちらを進めてていきたいと思います。第4章はフレームワークを使用してWebアプリを作成していく内容であると思われます。
今後の予定
N予備校に関しては「プログラミング入門Webアプリ」を終えたら解約しようと思います。N予備校のプログラミング関係で気になる講座は「大規模Webアプリ」と「スマートフォンアプリ」があります。大規模WebアプリはScalaを使用した大規模アプリです。ドワンゴの中ではScalaが流行っているみたいですが、Web業界の中ではマイナーであると思いますのでこちらの講座は取りません。Scalaは気になりますが、まずは世の中でよく使われるPHPかRubyを使用してWebアプリを作りたいと思います。スマートフォンアプリも時間があればやってみたいですが、まずは、Webアプリを1つ作ることを目標としたいです。