1 はじめに
「インターネット向けのWebサイトを作らないといけない」となった時に皆さんは何を思い描きますか。PHPを使うか、CMSはあれを使って、データベースはMySQLを使うかという流れでしょうか。ここでは検討している人の頭の中をいくつかの重要な要素が巡っているはずです。予算に見合うコスト、経験値、要件への適応度合、早く・軽く実装できることなどがあるに違いありません。
しかし、もっとビジネスを広げたい、差別化を行いたいと思っている技術者や企業は現在の景気状況から大勢いらっしゃることでしょう。本稿では多くの場合、あまり選択肢に上がらない要素技術の組み合わせのご紹介をし、新たな可能性を取り込んで皆さんにチャレンジいただき、ビジネスの拡大を図っていただく一端になってくれることを期待しています。
4回のシリーズでお届けするテーマは「PHPからMicrosoft SQL Serverを使おう!」です。
1.1 背景と歴史
Windows環境用のPHPランタイムにはご存じのように「php_mssql.dll」というPHP拡張が入っており、Web検索して見つかる情報はほとんどの場合、この拡張に関しての利用方法になります。
この状況になっていることにはいろいろな背景があります。一番大きいのはマイクロソフトがPHPからの接続というシナリオをサポートする以前にASPやASP.NETからの利用、さらには一歩進んでJavaからの接続という観点に焦点を当てて製品開発を行ってきたことにあります。このことからPHPランタイムに含まれている拡張にMicrosoft SQL Serverの開発元であるマイクロソフトが大きく関わることはほとんどなかったのです。そしてデータベースエンジン側の視点で最適化する作業が十分に行われていません。
現在に目を向けると、インターネットでWebを構築するケースではPHPを選択することは皆さんの身の回りでも多くなっていると思います。ASP.NET MVCなど面白い技術も登場していることからマイクロソフトはもちろん引き続き自社技術であるASP.NETでWeb開発を行っていくことを強く推進していきますが、PHPとマイクロソフト製品を組み合わせて利用する状況は大きく変わってきています。これはオープンソースソフトウェアに対するスタンスの変化とも繋がっています。
2 なぜ今PHPとMSSQLなのか
2.1 SQL Serverの近況
PHPに関する位置づけやその周辺で起こっている出来事をお伝えすることはここでは省略し、MicrosoftのSQL Serverというデータベースエンジンの近況を少しピックアップします。
- 企業内の業務アプリケーションでWindowsおよび.NETとともによく選択され、相性は抜群
- 基幹システムに必要な長時間稼働、耐障害性の機能を数多く持っている
- さまざまな大きさのシステムに対応でき、無償(Express)およびファイルベース(Compact)もある
- エンジンだけでなく、標準で本格的な分析、データ転送、レポートといったBI要素の機能をも併せ持つ
- 運用周りに関して長い歴史と経験値、市場における技術者も多い
- 本格的なRDBMSでありながら、自動でチューニングをしてくれるので取り掛かりやすい
挙げればもっと出てきますが、大まかな特徴としては企業内の業務アプリケーションでよく使われ、基幹業務においてもそのバックエンドデータベースとしての選択肢の一つになっているというと分かりやすいでしょう。また、会計・給与などの業務パッケージのデータ格納エンジンに利用されていることも別の一面でしょう。もっと知りたい方はSQL Serverの製品ページへお越しください。
さて、一見PHPが得意とする世界から見るとあまり接点がなさそうなマイクロソフトのSQL Serverですが、ここで挙げたような要素を今やっているWebビジネスに取り込んでいけるとしたらそれは大きなベネフィットや機会がそこには存在するはずです。いくつか可能性のある接続シナリオを列挙してみましょう。
- PHPベースのWebシステムから直接企業内にある業務用SQL Serverとデータ連携を行う
- SQL Server Reporting Servicesを帳票ソリューションとしてPHPとともに利用する
- SQL Serverでサポートしているデータ型を活用して例えば地図のソリューションを構築する
- PHPからSQL Serverに直接書き込み、企業内利用者がOfficeとの強力な連携機能をWeb関連データで活かす
- PHPベースのCMSを使用し、バックをより強力なデータベースエンジンに変えることで可用性を向上する
- SQL Serverとの相互乗り入れの容易さを活かし、PHPアプリケーションで強力なSQL Azureをピーク時など必要な時にだけ接続して利用する
実はこれらはPHPをWindows/IIS上で動かすことを解説するセミナーで挙がったご質問を要約したものです。
でもマイクロソフトは.NETの開発元であって、やはり遠いのではないか、そんな疑問が浮かぶかもしれません。しかし、さまざまな状況が変わっていることをここからお伝えしましょう。
2.2 PHPとマイクロソフト
ここ数年、マイクロソフトはPHPをWindows上で快適に稼働できるようにするために多くの取り組みを行ってきました。WebサーバーであるIISそのものもモジュール化し、ランタイムを動かすためのFastCGIエンジンの作り直し、IIS上で動作する際の独自アクセラレーターの開発、Web Platform Installerのような環境構築を容易に行うためのツールも提供してきました。これらにより、Apacheでのみ存在する特定の機能やモジュールが前提条件でない限りはWindows上でPHPを利用する障壁はかなり取り除かれてきています。
そしてもう一つの変化が、PHPからMicrosoft SQL Serverに接続するためのWindows上で動作するドライバーをマイクロソフト自身、しかもSQL Serverの開発チームが提供しはじめたことです。これは過去を振り返ると初めての動きと言ってよいでしょう。しかもこのドライバーのソースをCodePlex(注1)サイトでMs-PLライセンス提供しています。
CodePlexはマイクロソフトが運営するSourceForgeのようなサイト。