ここ最近、WEBサービスについて調査しています。聞きなれない単語が山ほど出るので備忘録としてまとめてみました。
目次
- クライアントサイドとサーバーサイド
- XAMPP(ザンプ)とかMAMP(マンプ)
- Vagrant ベイグラント
- PHPのIDE 統合開発環境一覧
- PHPのフレームワーク一覧
- その他のメモ
- Composer (https://getcomposer.org/ コンポーザー)
- 設定より規約 CoC (convention over configuration)
- CRUD (クラッド)
- MVC (Model View Controller モデル・ビュー・コントローラ)
- Ruby on Rails (ルビーオンレイルズ、RoR)
- REST (Representational State Transfer、レスト)
- Xdebug (http://xdebug.org/index.php、エックスデバッグ)
- サニタイジング
- Smarty スマーティ
- Blade ブレード
- Carbon カーボン http://carbon.nesbot.com/
- CSRF クロスサイトリクエストフォージェリ
- Redis レディス Remote dictionary server
- まとめ
クライアントサイドとサーバーサイド
WEBブラウザで動作するアプリケーションをクライアントサイドプログラムと呼び、WEBサーバーで動くアプリケーションをサーバーサイドプログラムと呼びます。
JavaScriptはクライアントサイドプログラムです。
PHPはサーバーサイドプログラムです。
JavaScript ジャバスクリプト
JavaScriptは1995年、ネットスケープコミュニケーションズのブレンダン・アイクによって開発され、Netscape Navigator 2.0で実装されました。
開発当初はLiveScriptと呼ばれていましたが、1995年にサン・マイクロシステムズ(現・オラクル)が開発したプログラミング言語Javaが当時大きな注目を浴びており、ネットスケープとサン・マイクロシステムズが業務提携していた事もあったため、JavaScriptという名前に変更された。
JavaとJavaScriptは名前は似ていますが、無関係のプログラミング言語です。
ちなみに、Node.js はイベント化された入出力を扱うUnix系プラットフォーム上のサーバーサイドJavaScript環境です(V8 JavaScriptエンジンで動作する)。
jQuery(ジェイクエリー)は、ウェブブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計された軽量なJavaScriptライブラリです。
ジョン・レシグが、2006年1月に開催された BarCamp NYCでリリースしました。JavaScriptライブラリのデファクトスタンダードです。
PHP ピーエイチピー
PHPは1995年にラスマス・ラードフによって開発されたプログラム言語です。
PHP: Hypertext Preprocessor(ピー・エイチ・ピー ハイパーテキスト プリプロセッサー)は、動的にHTMLデータを生成することによって、動的なウェブページを実現することを主な目的としたプログラミング言語、およびその言語処理系です。
PHPには以下の特徴を持ち合わせています。
- Webアプリケーションのサーバーサイド・スクリプトに専門化している。
- C言語やJava言語に似た、平易な文法。
- データベースへの容易なアクセス(組み込み関数、および、標準ライブラリPDOによる)。
- クラスベースオブジェクト指向のサポート。
- 例外処理 (try, catch, throw) のサポート。
- 多くのオープンソースのフレームワークやライブラリが利用可能である。
- ASP, JSPと似たHTML埋め込み型の構文をとる。ただし最近のフレームワークを使った開発では、埋め込み型の構文を使用しないことが多い。
- 様々な付加機能がPEARというオンラインライブラリ集でモジュールとして提供されている。pearコマンドで導入/管理ができる。PerlでいうところのCPANである。
- ウィキ構築に用いられるソフトのMediaWiki(Wikipediaで使われている)やPukiwikiを始めとして、数多くのオープンソースウェブアプリケーションに利用されている。
- 処理系本体は、C言語で書かれている。
XAMPP(ザンプ)とかMAMP(マンプ)
XAMPP (https://www.apachefriends.org/jp/index.html)
XAMPPは以下の文字から構成されています。
- X - Windows、Linux、Mac OS X、Solarisのクロスプラットフォーム
- A - ApacheのA
- M - MySQLのM
- P - PHPのP
- P - PerlのP
XAMPP(ザンプ)とは、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージとしてまとめたもので、apachefriends.orgから提供されています。
主として開発用あるいは学習用ではあるが、イントラネットなどにおいて実運用環境として使われることもあります。
Apache(Webサーバ)、MySQL(SQLデータベースサーバ)とWebプログラミング言語であるPHPや同目的で使われるPerlの4つの主要ソフトウェアとphpMyAdminなどの管理ツール、さらにSQLiteなど、いくつかの補助的なソフトウェアとライブラリモジュールが含まれています。
現在、Windows、Linux、Mac OS X、Solarisで利用可能です。
MAMP (https://www.mamp.info/en/)
Mac OS専用で、XAMPPとほぼ同様のものです。
以前は、WindowsならXAMPP、Mac OSならMAMPを使っていました。
Vagrant ベイグラント
Vagrant(https://www.vagrantup.com/)は一言で言うと、VirtualBoxなどの仮想環境のフロントエンドです。VirtualBoxなどの仮想環境と一緒に使うものです。
Vagrantでは構成情報を記述した設定ファイルを用意してコマンドを実行するだけで、仮想ディスクイメージのダウンロードや仮想マシンの作成および起動、そしてプロビジョニング用のコマンドの発行といったタスクを実行することが出来ます。
VagrantはWindowsにインストールして以下のようなコマンドをコマンドラインから使います。
- vagrant box add NAME URL
- vagrant init NAME
- vagrant up
- vagrant halt
- vagrant status
- vagrant suspend
- vagrant destroy
- vagrant box list
VagrantのBoxファイルとは、仮想マシン起動の際にベースとなるイメージファイルのことです。
Homestead
HomesteadはLaravelの公式のVagrant Boxです。以下のファイルがあらかじめ梱包されています。
- Ubuntu 14.04
- Git
- PHP 5.6 / 7.0
- Xdebug
- HHVM
- Nginx
- MySQL
- Sqlite3
- Postgres
- Composer
- Node (With PM2, Bower, Grunt, and Gulp)
- Redis
- Memcached (PHP 5.x Only)
- Beanstalkd
- Laravel Envoy
- Blackfire Profiler
PHPのIDE 統合開発環境一覧
PHPのIDEも沢山あります。
主なものは以下の通りです。
どれがよいのかよく分かりません。。
- PhpStorm 有料のIDEですが、PHP用のIDEとしては、すこぶる評判のいいIDEです。只、難点は、全て英語表記ですので、使い方を習得するのに、若干敷居は高いかもしれません。
- Netbeans オープンソースで、Eclipseよりは、軽いです。コード補完や、デバッグ機能もついていますので、お勧めです。
- phpDesigner 有料のIDEで、日本語対応していません。
- Eclipse PDT オープンソースの定番のIDEで、元々はJavaのIDEだったのが、PHPやRubyも開発できるようになりました。難点としては、起動が若干重いような気がします。
- ActiveState Komodo 有料のIDEで、日本語対応していません。
- Aptana 無料のIDEで、日本語にも対応しています。
- PHPEdit PHP専用のエディタです。わりかし使いやすいエディタです。こちらもオープンソースです。
無償で使える一押しは、Netbeansですね。
日本語対応もしています。
PHPのフレームワーク一覧
最近はMVCに対応したPHPのフレームワークを使うのが流行ですが、PHPのフレームワークも山ほどあります。
- Laravel ララベル
- Yii イー
- CodeIgniter コードイグナイター
- CakePHP ケイクピーエイチピー
- ZendFramework ゼンドフレームワーク
- FuelPHP フュエルピーエイチピー
- symfony シンフォニー
日本ではCakePHPが有名ですが、世界的にはLaravelが流行っているようです。
以下はGoogleトレンドを使っての比較です。最近はLaravelが流行なのがよくわかります。
その他のメモ
Composer (https://getcomposer.org/ コンポーザー)
ComposerはPHPのパッケージ管理ツールです。Dependency Manager for PHPです。以前はPEARというのも使われていましたが、現在はComposerが主流のようです。
JavaのMaven、PerlのCPAN、Node.jsのnpm、Pythonのpip、Rubyのgem、Goのgo getに相当します。
設定より規約 CoC (convention over configuration)
開発者の決定すべきことを減少させ、単純にするが柔軟性は失わせないというソフトウェア設計パラダイムです。
PHPのフレームワークは、基本「設定より規約」アプローチを採用しています。
CRUD (クラッド)
CRUD(クラッド)とは、ほとんど全てのコンピュータソフトウェアが持つ永続性の4つの基本機能のイニシャルを並べた用語です。
その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)です。
ユーザインタフェースが備えるべき機能(情報の参照/検索/更新)を指す用語としても使われます。
データベース管理システム(DBMS)に必要な、基本的な4つの機能です。
MVC (Model View Controller モデル・ビュー・コントローラ)
ユーザーインタフェースをもつアプリケーションソフトウェアを実装するためのデザインパターンです。
アプリケーションソフトウェアの内部データを、ユーザーが直接参照・編集する情報から分離する。そのためにアプリケーションソフトウェアを以下の3つの部分に分割します。
- model: アプリケーションデータ、ビジネスルール、ロジック、関数
- view: グラフや図などの任意の情報表現
- controller: 入力を受け取りmodelとviewへの命令に変換する
PHPのフレームワークは、基本、MVCモデルを採用しています。
Ruby on Rails (ルビーオンレイルズ、RoR)
Ruby on Rails(ルビーオンレイルズ)は、オープンソースのWebアプリケーションフレームワークです。
RoRまたは単にRailsと呼ばれます。
その名にも示されているようにRubyで書かれており、Model View Controller(MVC)アーキテクチャに基づいて構築されています。
Railsの基本理念は「同じことを繰り返さない」(DRY:Don't Repeat Yourself)と「設定より規約」(CoC:Convention over Configuration)である。
REST (Representational State Transfer、レスト)
RESTとは、パラメータを指定して特定のURLにHTTPでアクセスすると、XMLで記述されたメッセージが送られてくるようなシステムおよび呼び出しインターフェース(「RESTful API」と呼ばれる)のことを指します。
システムの状態やセッションに依存せず、同じURLやパラメータの組み合わせからは常に同じ結果が返されることが期待されます。
Xdebug (http://xdebug.org/index.php、エックスデバッグ)
XdebugはPHPのデバッガーです。
サニタイジング
サニタイジングとは、Webサイトの入力フォームへの入力データから、HTMLタグ、JavaScript、SQL文などを検出し、それらを他の文字列に置き換える操作のことです。
「無害化」とも呼ばれ、サニタイジング操作により、入力データ中に含まれる悪意のあるHTMLタグ、JavaScript、SQL文などが解釈・実行されることを防ぎます。
サニタイジングはXSS(クロスサイトスクリプティング)という悪意のあるプログラムの攻撃から守ります。
Smarty スマーティ
Smartyは、主にPHPアプリケーションで使用されるテンプレートエンジンです。
テンプレートエンジンを使うとデザインとロジックを分離することが出来るようになります。
テンプレート自体のキャッシュ機能を有しており、現在ではPHPの多くのWebアプリケーションフレームワークでデフォルトのテンプレートエンジンとして採用されています。
Blade ブレード
Laravelのテンプレートエンジンです。SmartyがPHP汎用のテンプレートエンジンなのに比べて、BladeはLaravel独自のテンプレートエンジンです。
テンプレートエンジンと言えば、symfonyはtwigというのを提供していますし、phalconはvoltというのを提供しています。
PHPのフレームワークとテンプレートエンジンは切っても切れない関係です。
Carbon カーボン http://carbon.nesbot.com/
Carbon とはPHPのDateTimeクラスを継承して拡張された日時操作ライブラリです。
CSRF クロスサイトリクエストフォージェリ
クロスサイトリクエストフォージェリ(Cross site request forgeries、略記:CSRF、またはXSRF)は、WWW における攻撃手法のひとつです。
具体的な被害としては、掲示板に意図しない書き込みをさせられたり、オンラインショップで買い物をさせられたりするなどが挙げられます。
Redis レディス Remote dictionary server
Redisとは、メモリ上にKey-Valueストア(KVS)を構築することができるソフトウェアの一つです。
KVSは任意の保存したいデータ(値:value)に対し、対応する一意の標識(キー:key)を設定し、これらをペアで保存するデータベースの一種で、Redisはコンピュータのメインメモリ上にKVSを構築し、外部のプログラムからデータの保存と読み出しを行うことが出来ます。
オンメモリなので揮発性ですが、とても高速です。
まとめ
意外と知らない単語が多いです。
まだまだ増えて来そうです。
最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。
コメント