2018.11.23
現役エンジニアが教える「プログラミング初級者のための魂のCakePHPセミナー」
インターネット・アカデミーでは、株式会社エバーグリーンより開発マネジャーの江口 直哉 氏をお招きし「現役エンジニアが教えるプログラミング初級者のための魂のCakePHPセミナー」を開催しました。
本セミナーではPHPフレームワークの種類や選び方、CakePHPの特徴についての講演を行っていただきました。また、CakePHPの使い方については実演を交えて紹介しました。ここでは、講演パートのお話の一部を紹介します。

フレームワークの歴史
コンピューターの歴史

本題に入る前に、まずはフレームワークが生まれるまでの歴史についてお話をします。歴史を知ることで、現在のシステムがどのような立ち位置にいて、未来がどうなっていくのかという予測ができるようになります。
世界初のコンピューターは1946年に開発された「ENIAC」で、アメリカ陸軍の大砲の弾道計算を目的に作られました。このコンピューターは、毎秒5,000演算、消費電力は約150KWという性能でした。なお、現在では毎秒100億以上の演算、消費電力300W程度となりますので、72年間で演算性能は「200万倍」向上し、消費電力は「1/500」減少しており飛躍的に性能が向上していることがわかります。
その後、インターネットが登場しました。元々は米国で軍事利用されていたため私的・商業的な利用は禁止されていましたが、1990年にインターネット加入制限が撤廃されました。日本では1993年に商用利用が開始され、これ以降、インターネット利用者が急増していきました。
それに伴い、プログラミング言語も様々な言語が開発されていきました。たとえば、1990年にはHTML、1995年にはJavaやPHP、JavaScript、最近ではGo言語やSwiftなども生まれています。
フレームワークとは
近年、Webサービスやビジネスにおけるシステムの活用の幅が広がってきています。プログラマーは複雑なビジネス要件に基づいてWebアプリケーションを作成する必要があり、開発も大規模で複雑なものになっています。
そこで、それらを単純化するためにフレームワークが活用されるようになりました。
フレームワークとは、アプリ開発をする際に土台として使用するものです。これによって、迅速なWebアプリケーション開発を促進するだけでなく、基本的な構造を提供することによって開発をさらに単純化します。これらのWebフレームワークが提供する機能とツールを使用することで、複雑で長いコードを書くことなく一般的な開発ができます。
フレームワークのメリットとデメリット
フレームワークは今日の複雑化したWebアプリケーション開発になくてはならない物となりましたが、フレームワークを使用するメリットとデメリットを理解することも重要です。ここでは、PHPフレームワークを例にあげて解説します。
メリット
- 1.開発のスピードアップ
- PHPフレームワークが提供するツール、機能、コードスニペットは、プログラマーがカスタムWebアプリケーションの開発を加速するのに役立ちます。
- 2.メンテナンスの簡素化
- アプリケーションの開発とメンテナンスを簡素化します。プログラマーはMVCアーキテクチャを利用して、Webアプリケーションをモデル、ビュー、コントローラに分割できます。PHPフレームワークを使用して、アプリケーションのユーザーインターフェイスとビジネスロジックレイヤーを分離した状態に保つことができます。
- 3.追加コードが不要
- 特定のPHPフレームワークによって提供されるコード生成機能によりコーディング時間を大幅に短縮し、プログラマーはWebアプリケーションのソースコードを保守しやすくすることができます。
- 4.効率的にデータベースを操作
- ほとんどのPHPフレームワークでは、プログラマーは広く使用されている多くのリレーショナルデータベースを扱うことができます。いくつかのフレームワークは、オブジェクト・リレーショナル・マッピング(ORM)システムを提供することによって、データベース操作をさらに単純化します。
- 5.一般的なWeb開発タスクを自動化
- 一般的な開発タスクの中には、プログラマーが時間と労力を必要とするものがあります。PHPフレームワークが提供する関数とツールは、キャッシュ、セッション管理、認証、URLマッピングなどの一般的なWeb開発タスクを自動化するのに役立ちます。
- 6.サイバー攻撃からウェブサイトを保護
- PHPフレームワークによって提供される組み込みのセキュリティ機能とメカニズムにより、Webサイトを保護しやすくなります。たとえば、SQLインジェクション、クロスサイトリクエスト偽造、データ改ざんなどの一般的なセキュリティ上の脅威を簡単に防ぐことができます。
- 7.効率的なユニットテストの実行
- カスタムWebアプリケーションを構築する際、ユニットテストを定期的に実行して、個々のユニットやコンポーネントを評価する必要があります。多くのPHPフレームワークはPHPUnitをサポートしており、プログラマーはユニットテストを円滑に実行できます。
ビジネスでは納期と品質を担保しつつスピードアップしなければなりません。フレームワークを使うことで、複数名のプログラマーが同じ粒度で開発を進められるのが大きな魅力です。
デメリット
- 1.学習のコストがかかる
- PHPフレームワークにより、プログラマはコードを書くことなくWebアプリケーションに機能を追加することができますが、プログラマーはPHPフレームワークを学ぶために時間と労力をかけなければなりません。
- 2.PHPフレームワークの品質に差がある
- 最も広く使われているPHPフレームワークはオープンソースで無料のため、プロジェクトコストを増加させることなくこれらのWebフレームワークを利用できます。しかし、個々のフレームワークのコミュニティの強さは異なります。そのため、一部のPHPフレームワークでは、迅速かつ適切なサポートが不足しています。
- 3.コア動作を変更するオプションがない
- PHPフレームワークはカスタムWebアプリケーション開発をさらに加速します。しかし、これらのフレームワークのコア動作を変更するオプションがまだありません。
- 4.Webサイトの速度とパフォーマンスに影響する
- ほとんどのPHPフレームワークには、大規模で複雑なWebサイトの開発を加速するための強力な機能とツールが付属しています。しかし、Webサイトのパフォーマンスやスピードに悪影響を及ぼすことがあります。
このようなデメリットもありますが、最近ではメリットのほうが大きくなっているため、ほとんどの開発現場で何かしらのフレームワークが使われています。
フレームワークの種類と選び方
PHPには様々なフレームワークがあります。しかし、後からフレームワークを変更するのは多大なコストがかかります。そのため、高速動作に優れているものやコードの書きやすさ、プラグインの多さなど、フレームワークごとの特性を踏まえて、どれを実装するのかを判断することが大切です。
また、フレームワークのトレンドは日々変化しているため、「どのフレームワークが人気なのか」「将来的にどのフレームワークが生き残るのか」「どのフレームワークを使った仕事が多いのか」などはプログラマーにとっても大きな関心ごとのひとつです。今回は、トレンドの調べ方についてもお話をします。
検索トレンドから調べる

Googleトレンドは、今話題のキーワードや特定のキーワードがどれくらい検索されているのか調査をするときに非常に役に立ちます。たとえば、代表的なPHPフレームワークを調べると、世界的には「Laravel」が、日本においては「CakePHP」がもっとも検索されていることがわかります。
プロジェクトトレンドから調べる
GitHub上には多くのオープンソースプロジェクトが「リポジトリ」という単位で公開されており、ユーザーは各リポジトリにスター(Facebookのいいねのようなもの)をつけることができます。スターが多いほど人気のプロジェクトと言えます。また、バグの報告や、修正数などのレポートも参考になります。あまりにバグや修正が少ないと、利用者が少ない可能性が高く将来性に不安があるとも考えられます。
コミュニティトレンドから調べる
Stack Overflow(スタックオーバーフロー)はコンピュータや情報技術、特にプログラミング技術に関する世界最大のナレッジコミュニティです。プログラマー同士の質問・回答が多いほど、よく使われているフレームワークであると言えます。
CakePHPの特徴

CakePHPは、日本人にとって比較的短時間で習得できるというメリットがあります。先ほどの調査からもわかるように、日本においてはもっとも人気のあるPHPフレームワークであるため、日本語訳されたチュートリアルが豊富です。一般的に、新しいフレームワークなどは英語のドキュメントが中心となるため、英語が苦手な方でも学習がしやすいというのは大きな魅力です。
CakePHPのプロジェクトの構成
フレームワークを使う場合、大量のデータがダウンロードされます。はじめに全体のフォルダー構成を理解しておき、自分が作成したファイルと、他人が作成したファイルの状態を把握することが大切です。CakePHP全体フォルダー構成は次のようになっています。
フォルダー | 概要 |
---|---|
bin | フォルダーには実行可能な Cakeコンソールを保持します。 |
config | CakePHPが使用する構成設定ファイルが入る場所です。データーベース接続の詳細、ブートストラップ、コアの設定ファイルなどがここに格納されます。 |
plugins | アプリケーションが使うプラグインが格納されます |
logs | ログ設定に応じたログファイルが含まれます。 |
src | アプリケーションのファイルが配置される場所です。MVCの基本的なソースコードはこの中に作成します。 |
tests | アプリケーションのテストケースを置く場所です。 |
tmp | CakePHPが一時的なデータを格納する場所です。格納する実際のデータは、CakePHPの設定方法によって異なりますが、このフォルダーは、通常、翻訳メッセージ、モデルの詳細、時にはセッション情報を格納するために使用されます。 |
vendor | CakePHPと他のアプリケーションの依存ライブラリーがComposerによってインストールされる場所です。これらのファイルを編集することは推奨されません。次回の更新時にComposerが上書きしてしまうからです。 |
webroot | アプリケーションのパブリックドキュメントルートです。css、font、img、js等を含みます。 |
Bakeによる機能の自動生成
CakePHPには「bake」という機能があります。これは、MVCによるWebアプリケーションの基本部分を自動生成するためのPHPスクリプトで、コマンドプロンプト上で操作し、基本的なMVC関係のファイルを超高速で作成することができます。
セミナー内では、CakePHPの設定方法や「bake」による自動生成を実演したのちに、実際に生成されたPHPのコードと、ブラウザ上での動作の確認をしました。