前回に続いてシステムの基本用語について説明します。システム構成図のサンプルを以下に再掲します。
それでは解説を続けます。
ブラウザ
ブラウザは Web システムや Web サイトのアクセスに欠かせないものです。PC やスマホを使っていてブラウザを使っていない人はまずいないでしょう。普通に利用している人であれば特に中身を意識する必要はありませんが、SE であれば定義くらいはおさえておいた方がよいでしょう。こういった、普段当たり前のように利用しているものを説明をするのは難しいものです。みなさんはブラウザをどのように説明しますか?ブラウザに限らず、知識を言語化整理することは、その後の学習の理解度に影響するため重要です[1]理解度について:「他人に説明できる」ことが理解したと言える基準であり、同じクラスの SE … Continue reading。日常的に、是非「〇〇とは何か」を自分に問いかけましょう。
ブラウザとは、サーバ通信を行い、サーバの応答を表示(主に HTML の描画)するツールのことです。
ブラウザはほとんどの場合、HTTP の規約に則り、URL (サーバ)に対しリクエストを送信し、サーバはそれに応じたレスポンスを返却します。レスポンスは HTML だったり、単純なテキストだったりしますが、その内容を表示するのもブラウザの仕事です。HTTP が何かここでは深く触れませんが、通信の方法(通信規約)と理解しておいてください。通信方法には幾つか種類があり、そのひとつだと覚えておけば OK です。
例えば PHP や Python を学習する際にはそれぞれの言語(正確には言語を動作させるもの)をインストールする必要がありますが、HTML、CSS、JavaScript にはそれが不要です。それはブラウザが予め HTML、CSS、JavaScript が動作するように実装されているためです。
ブラウザの代表的なものに、Chrome、Safari、FireFox、Edge があります。
プログラミング言語
プログラム言語とも呼ばれますがどちらも同じです。
プログラミング言語とは人の命令を機械に理解させるためのツールです。
現在のプログラミング言語は高級言語と呼ばれるもので、人間が理解しやすい記法(と言っても理解し難いこともありますが)で記述することが可能です。プログラミングからプログラムの実行までの流れは大まかに以下の通りです。
- 言語ごとの記法に従いプログラム(命令)を記述する(=プログラミング)
- 言語ごとの規約に沿って、記述した命令を機械語に翻訳する(翻訳の工程をコンパイル、或いはビルドと呼ぶ)
- 機械語に翻訳されたプログラムが起動されると命令を実行する
ビルドする工程に多少差はあれど、すべてのプログラムは上記の工程で動作すると理解しておいてください。尚、機械語は 1 と 0 の羅列で人間には理解できないものです。機械(PC)は 0 と 1 でしか物事が理解できないので、理解できるように変換する必要があるということです。一方で人間は 0 と 1 の羅列が理解できないため、人間の言葉に近しい記法でないと記述できず、それを仲介するのがプログラミング言語です。
プログラミング言語の種類は HTML・CSS、JavaScript、PHP、Python、Ruby、Java、C、C++、C#、Go、Swift など多種多様です。ここで詳細には触れませんが、無数存在するにはそれだけの理由があり、それぞれには特性(得手不得手)があるということだけ覚えておきましょう。
フレームワーク
フレームワークは一般的に一定の仕組みや枠組みを表しますが、IT におけるフレームワークとはプログラミング言語に紐づく用語で、システムを構築するための一連の機能を備えたものです。フレームワークにもよりますが、共有しているものは以下の通りです。
- 頻繁に利用される機能が予め提供されている
- クラス名やメソッド名、ファイルの配置場所などにルールがある
まず前者について、頻繁に利用されるものとしては、認証機能、データベースアクセス、バッチ、テストなどでしょうか。フレームワークを使わずにこれらを実装しようとするとそれなりに大変なのですが、フレームワークを使うことで、ちょっとした設定をするだけで利用可能となり、工数を大きく削減できます。
また後者についてですが、これは「設定より規約」というプログラムの設計思想を体現したものになります。プログラミングではファイル名やメソッド名をある程度自由にカスタマイズできますが、プロジェクトによって、或いは人によっては自由すぎて、第三者から見て、望ましくない命名がされたりすることがあります。「設定より規約」というのは、「プログラミングに一定の規約を設けることで、プログラマが決定する事項を減らし、より重要なプログラミングに集中させる。また、規約を知る誰もがわかりやすいプログラムの実装を可能とする」という思想です。
フレームワークでは本来自由に設定可能な事由に一定のルールを規定することで、プログラマが迷うことなくクラス名を決定し、決まった場所に配置することができます(半ば矯正させます)。どうしても業務の性質上、或いは仕様の問題でルールを逸脱せざるを得なくてもそれにも柔軟に対応可能になっています。
フレームワークの代表的なものに、Laravel(PHP のフレームワーク)、Ruby on Rails(Ruby のフレームワーク)、Django(Python のフレームワーク)などがあります。
蛇足ではありますが、フレームワークはプログラムのディレクトリ(フォルダ)構成や書き方自体に規則を設けるものです。例えば、JavaScript の中に jQuery というものがあります。これは JavaScript 上で読み込むことで jQuery の機能や記法が利用可能になりますが、その他の JavaScript プログラムの記法に影響するものではありません。必要に応じて jQuery が提供する機能を都度利用するものです。
このような必要に応じて利用される機能郡はライブラリと呼ばれ、厳密にはフレームワークと区別されます。ただ、実際の開発現場では jQuery をフレームワーク[2]『jQuery はフレームワークか論争』というものが長い間論じられている。あまり意味はないが、このように考えることは重要と呼び、Ruby のライブラリ[3]Ruby は豊富なライブラリが用意されていることが大きな特徴。Ruby のライブラリは記法に一定のルールを設けることがあり、ライブラリでなく … Continue readingである Sinatra 、Unicorn なども「フレームワーク」と呼ばれることがあります。つまり誰かが用意した機能郡=フレームワークと呼ばれることが多い、ということを理解しておくことで混乱せずに済むでしょう。
まあ、厳密に区別しなくても理解して利用できていればよい、ということで。
次回に続きます。
脚注
↑1 | 理解度について:「他人に説明できる」ことが理解したと言える基準であり、同じクラスの SE に教えて理解させることができれば「充分に理解している」と考えてよい |
---|---|
↑2 | 『jQuery はフレームワークか論争』というものが長い間論じられている。あまり意味はないが、このように考えることは重要 |
↑3 | Ruby は豊富なライブラリが用意されていることが大きな特徴。Ruby のライブラリは記法に一定のルールを設けることがあり、ライブラリでなく DSL(Domain Specific Language:ドメイン固有言語)と呼称される。DSL の詳細はここで言及しないが、「ライブラリ以上、フレームワーク未満」と理解しておくとよい |