[N予備校プログラミングコース] 第3章終了

N予備校プログラミングコース、第3章の「サーバーサイドプログラミング入門」の受講を終えた。

Bootstrap を使ったデザインの改善

ここまでは見た目についてはほぼ素の HTML そのままだったが、やはりサーバーサイドの学習とはいえ Web アプリにおいてはデザインも重要、ということだろうか、ここで唐突に CSS フレームワークである Bootstrap を使って見た目の改善を行った。

ビフォーアフターとして Bootstrap 適用前と後を並べてみると、こんな感じ。

スクリーンショット 2018-05-26 9.24.38.pngスクリーンショット 2018-05-31 15.59.46.png
だいぶ今風、というか Bootstrap って感じ。

ところで一昔前は CSS というと、ブラウザによってタグの挙動が違っていたりとか、対応していなかったりとか、特に Internet Explorer の挙動で巷の Web デザイナー/エンジニアはみんな苦しんでいたようだが、最近はブラウザ間の差異も小さくなり、またフレームワークを使うことによって大分ラクになったのかな、という印象。
とはいえ、Bootstrap に限らず Web 界隈のフレームワークは流行り廃りが激しくて、今度はそっちを追いかけるのでかなり四苦八苦してそうな。
今のところ、Bootstrap 使えてればよさそうだが、この辺読むとあと2〜3年もすると全く別のフレームワークが主流になっていそうな気配もある。
ネイティブゲーム界隈は何のかんのいっても Unity か Unreal Engine やってればあと5年位は食いっぱぐれはなさそうなので、それと比べるとホント大変だなぁと思う。

脆弱性対策

Web アプリを開発するに当たって絶対に外せないのが脆弱性対策。
最近はゲーム開発でもそれなりに脆弱性(というかクラック)対策はするが、Web アプリの場合は個人情報を扱うことも多く、一歩間違えば大惨事だ。
フレームワークを使うことである程度の脆弱性対策は担保されるだろうが、それだって完璧ではないだろうし、Web アプリを開発する上ではやはり知っておいて損はない、というか知っておかないといけない知識だとは思う。
「巧遅より拙速を尊ぶ」とはいえ、この辺はおざなりにしてはいけないところだろう。
とはいえ、実際この辺の「マイナスを0に近づける作業」ってのは、初心者からすると退屈だったりもする。
独学で、しかも書籍に頼らず困ったらググる形式で開発していたりすると、まともな対策もできていない可能性もある。

N予備校プログラミングコースでは、脆弱性対策について、ただ種類や例を挙げていくだけでなく、現在作っているアプリに対してまず自分で脆弱なところを突かせ、それによってどのような問題が発生するかを理解させ、そしてその対策をどのようにして行うか、という教え方をしてくれる。
ここまでキッチリ教えてくれるのは他にはあまり無いだろう。
なお今回は、以下について学んだ。
  • OS コマンド・インジェクション
  • クロスサイト・スクリプティング(XSS)
  • パスワードの保護(平文で保存しない)、辞書攻撃に対する脆弱性
  • セッションハイジャック
  • クロスサイト・リクエストフォージェリ(CSRF)
実際やってみると、脆弱性に対して自前で一つ一つキッチリ対策していくのは結構大変である。
対策したつもりが別の脆弱性を引き起こす可能性だってある。
自分で Web アプリを作るのであれば、脆弱性対策がしっかりしているか、あるいはベストプラクティスが存在している、評判の高いフレームワークを使って開発した方が安心だろう。
ちなみに Node.js には、ruby における Ruby on Rails のような定番中の定番、といったフレームワークはまだないらしい。
N予備校プログラミングコースでは、第4章「実践サーバーサイドプログラミング」にて、Express というフレームワークについて学ぶようである。

ところで、Web アプリの代表的な脆弱性の一つである SQL インジェクションについては、現時点では生の SQL を触っておらず、sequelize というO/Rマッパー経由でしかDBに触っていないせいか、そういうのがある、ということしか書かれていなかった。
いずれ Web アプリ作るのであれば、この辺も勉強せねばなるまい。

Heroku で公開

最後に、これまで開発した「秘密の匿名掲示板」アプリを Heroku にデプロイした。
スクリーンショット 2018-05-31 17.10.24.png
前にも書いたが、git の仕組みを利用してそのままデプロイできる仕組みは面白いし、慣れると便利だ。
WinSCPFilezilla でえっちらおっちらサーバにアップロードしていた頃には戻れないw
考えてみれば、サーバーサイドのプログラミングで JavaScript が使われるなんて、10年前には考えられなかったことだ。
ゲーム開発だって、これだけフレームワークというものが流行り、そして C# が C/C++ と並んで主流な開発言語になるなんて、10年前に誰が想像しただろう。

時代はどんどん変化していく。
その変化に付いていかねばならないし、またその変化を楽しめる人こそが、これから先も生き残っていけるのだろう。
幸い、今の自分は楽しめている方だが、果たして10年後はどうなっているだろうか?

ということで、造血幹細胞移植前に第3章を終えられた。
移植前処置として抗がん剤治療が始まると、移植を終えて落ち着くまでの間、恐らく起きていることすら困難になるので、第4章に着手するのは当分先になりそうである。
なるべく早く、ここまで学んだことを忘れないうちに早く再開したいところだ。

この記事へのコメント