[N予備校プログラミングコース] 第4章 「予定調整くん」の開発

N予備校プログラミングコース 第4章も終盤。
これまで習ったことの集大成として、「予定調整くん」というWebサービスの開発をした。
「予定調整くん」というのは、予定作成者が挙げた日程の候補に対して、他のメンバーが参加可能か否かを表明する、というもので、要は「調整さん」みたいな感じのスケジュール調整サービスだ。
但しログインには GitHub 認証を使うため、サービス運営側でユーザーアカウントのID/パスワードを保管せずに済む。

カリキュラムでは、まず要件定義から始まり、データモデリング→URL・モジュール設計→実装→テスト→Herokuへのデプロイ、と実務でもそのまま応用できそうな一連の開発の流れになっている。
あとは実装→テストに CI を絡めれば、より実務っぽくなりそう。

できあがったサービスは↓こんな感じ。
スクリーンショット 2018-09-24 15.46.55.png
Android の Chrome で見ると↓こんな感じ。
Screenshot_20180924-154859.png
見切れちゃってるな…。

使用したモジュール・ライブラリ等は以下の通り。
  • PostgreSQL … データベース(RDBMS)
    • pg, pg-hstore … PostgreSQL を制御するモジュール
  • Node.js … JavaScript 環境
    • Express … Web フレームワーク 
      • helmet … Express においてセキュリティに関するHTTP ヘッダを設定するモジュール
      • csurf … CSRF 脆弱性対策のためのモジュール
      • express-session … Express においてセッションを利用できるようにするためのモジュール
      • supertest … Express の Router をテストするためのモジュール
    • pug … HTMLテンプレートエンジン
    • passport … 外部認証を使用するためのライブラリ
      • passport-github2 … GitHub の外部認証を使用するためのモジュール
      • passport-stub … ログイン・ログアウト処理のスタブ(実際の処理を模倣してくれる)
    • mocha … テスティングフレームワーク
    • sequelize … O/R マッパー
    • node-uuid … UUID を扱うためのモジュール
  • webpack … モジュールバンドラー
    • babel-loader … 新しい形式で書かれた JavaScript(ECMAScript2015 以降) を古い形式(ECMAScript5)に変換し、古い Web ブラウザでも動くようにするトランスパイラ
  • Bootstrap … CSSフレームワーク
  • jQuery … フロントエンド用ライブラリ(DOM操作、AJAXで使用)
こうやって書き出してみると、結構多いな…。
また、ECMAScript2015 以降で使えるようになった、Promise という非同期処理の結果を扱うためのオブジェクトも使用したが、使い慣れてくると便利な仕組みだと感じた。

Web 系では設計力やコードを書く能力もさることながら、如何にして使えるオープンソースなツールやライブラリ、フレームワークを見つけ出すか、そしてそれらは継続的にメンテされているか、いざという時に代替可能な方法はあるのか、また依存しているライブラリにセキュリティホールが見つかったりバージョンが上がったり、よりよいツールやライブラリが出てきた時にどうするか、といった情報収集力や先読みできる能力、問題解決力も求められるのだなぁと改めて実感。
常にキャッチアップし続けないとあっという間に陳腐化してしまいそうだ。
おまけに少人数なPJだと、インフラ周りの面倒も見なければならないだろう。
自分が今主戦場としている(コンシューマ)ゲーム業界や、かつていた組込み業界も OSS はそれなりに使われているし、最新技術のキャッチアップもし続けないといけないけど、ここまで多岐に渡ることはない(と思う)。
やっぱり Web 系は大変だなぁと改めて思う。



これで第4章の「実践サーバーサイドプログラミング」、そして「プログラミング入門 Web アプリ」コースは終了となる。
まだ第7章まであるのだが、第5章は「入門コースを終えた方へ」と題し、オススメの書籍の紹介と、次に進むコースの紹介。
第6章・第7章は付録ということで、Chrome 拡張機能の開発や WebGL の学習、Node.js を使った Twitter bot の開発となるので、これはやってもやらなくてもよさそう。
あと数日で退院(のはず)なので、ひとまず付録をやりつつ、習作となる Web アプリの構想を練っておいて、退院後に何かしら開発できればと思う。

ここまで入門コースを一通りやってみて思ったことを書こうと思っていたが、自分と同じ感想を抱いた人が大体のことを http://yjkym.hatenablog.com/entry/2018/03/22/225046 に書いてくれていたので、ここでは簡潔に。
やはり全くの初心者にはハードルが高いと思う。
というか、ぶっちゃけ自分のようなそれなりのキャリアを積んだプログラマであっても、ここで学んだだけで即 Web 系で戦力となりうるかと言えば怪しい。
まだ完全に腹落ちしていないというか、学んだことを自分のモノにできていない感が強い。
ここから、何本も Web アプリ作っては公開して失敗して後悔して、みたいなことを繰り返して、ようやくスタートラインに立たせて貰える程度ではなかろうか。
ただ月1,000円なので、Web エンジニアになりたいと願ってる人であれば、その取っ掛かりとして、ひとまず入学してみる価値はあると思う。
ダメなら辞めちゃっても、月1,000円程度ならそんなに痛くないし。
ただ、何となくぼんやりと Web エンジニアってカッコいいからなってみたいなぁ、ではなく、なりたい!という強い意志が無いと、絶対に続かないので、それなりの覚悟は必要だろう。

さて、次はどのコースにしようか。
やっぱり機械学習かなぁ。
それか、中学復習コースかなw

この記事へのコメント