N予備校 「【2017年度】プログラミング入門 Webアプリ」受講 その2

前回からの続きで第4章を手を動かしながら読んでいきました。

第4章 実践サーバーサイドプログラミング

 この章で学べる内容は下記の通りとなっています。

フレームワーク

ここからいよいよフレームワークを使って行きます。第3章で作成した匿名掲示板もフレームワークフルスクラッチで作っているようなものですが、ここでは、世の中で広く使われていると思われるNode.jsフレームワークであるExpressを使います。Expressにgeneratorというものがあり、これを使うことで、フォルダ構成や基本的なファイルを自動で作成してくれます。本章後半では、generatorで作成した雛形からスケジュール調整アプリを作成していきます。

テスティングツール

本章前半は、フレームワークを使ったアプリ作成に必要な技術について学んでいきます。まずは、テスティングツールとしてここではMochaを使用しています。テストコードを書くことは大事であるとよく言われていますが、私は、テストコードを書いたことがないので、ここで基本を学べたと思っています。Mochaはテストの中でもユニットテスト単体テスト)を行うもの。ユニットテストは下記のようにある関数や処理に入力を入れてその想定した出力結果が出るかどうかをコードで書くもの。

assert.equal(testFunc(input), expected);

言葉で説明するのは簡単ですが、後半のスケジュール調整アプリ作成でのテストコードは意外と大変でした。

CIツール

 続いてCIツールであるCircleCIを学びます。CircleCIはGitHubと連携してGihHubにコードをプッシュすると自動でテストを行ってくれるもの。GitHubリポジトリでバッジが付いているものがありますが、これはCIでテストが通過している証みたいです。

クライアント技術

 次は、クライアント側のツールの紹介になります。まずは、Webpackです。クライアント側のツールはBabelやGulpやらたくさんあって難しいそうですが、Webpackは単純に複数あるファイルを1つにまとめてくれるものです。1つにまとめることで、キャッシュの利用効率を上げたり、TCPの接続確立コストを減らせることができるみたいです。これによりサービス提供側、ユーザ側双方の負荷を減らすことができるとのこと。

クライアント側ツールの2つ目3つ目は、jQueryAjaxです。私は基本的なことは知っていたので流し読み程度しかしていません。大規模なアプリでは、Angular, React, Vueなどが使われているみたいですが、小規模であればjQueryだけでも十分かと思います。

クライアント側ツール最後は、WebSocketです。WebScoketは双方向のリアルタイムな通信を実現できるそうです。Ajaxはクライアント側からサーバ側に送るだけ(プル通信)ですが、WebSocketはサーバ側からクライアント側へ(プッシュ通信)通信が可能です。

RDBMS

RDBMSについてもこの章で書かれている程度の内容は知っていたので、ここで特筆すべき事はありませんでした。

フレームワークを使ったスケジュール管理アプリの作成

 これまで学んできたことの集大成としてスケジュール管理アプリを作成していきます。Webアプリの作成には頭の中で考えたものをそのままプログラミングするのではなく、頭の中で考えたものをどのように作るのか書き起こす必要があります。

コーディングに入る前にどのような使われ方をするのか(ユースケース)、どのような機能を作成するのか(要件定義)、データ構造はどうするか(データモデリング)、サーバへのリクエストの送り方、ページの構造(URL設計)をする必要があります。ここでは新しい技術を学ぶことはありませんが、どのようにWebアプリを作成していくのか流れを理解することができますし、テストコードをどのように書くのかなどこれからWebアプリを作成していくための参考になると思います。

感想

ここで学んだ内容はWebアプリを作成するのに必要最低限のことは書かれていると思いますが、詳しいところを自分で調べて学ぶ必要があると思いました。

 N予備校のプログラミング講座は説明を読みながらコードを理解してそれを実行するといった形で、自分で考えてプログラムを書くといったことはしていないので、ここで学んだことを自分のものにするには自分で考えてプログラムを書く必要があります。

今後の予定

 ここで学んだNode.js、Expressを使って自分で考えたWebアプリを作成するのもいいのですが、下記リンクを参考にしてWeb業界でよく使われているPHPを使ってWebアプリを作成するために必要な技術を基礎から学んでいきたいと思います。

 

 

github.com

gihyo.jp