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のようなサイト。
2.3 Microsoft Drivers for PHP for SQL Server
少しこのドライバーについて解説しておきましょう。
ソースやバイナリーはCodePlexで入手できるほか、正式にマイクロソフトのダウンロードセンターでもバイナリーを入手できます。執筆時点では最新バージョンは2.0となっています。
動作原理
このドライバーはWindows OS上でのみ稼働可能です。利用方法もほかのPHP拡張とまったく同じ方法でphp.iniで記述をし、利用することになります。構造上はSQL Serverに接続するように最適化されたODBCドライバーの上で動作する薄いラッパー構造になっています。Windows用のPHPランタイムと同様にスレッドセーフ用とノンスレッドセーフ用が分かれているので注意が必要です。
バージョン1.1からUTF-8対応
このドライバーが登場したバージョン1.0はUTF-8の対応がまだで、日本語を利用できるとは言えない動作条件だったのですが、1.1からUTF-8が利用可能になっています。
バージョン2.0からPDOに対応
バージョン2.0の大きな機能拡張のポイントとしてはPDOの対応があります。このことでPHPアプリケーションではPDOに対応しておくことで、データベースの切り替えが最もシンプルな場合には接続文字列の変更だけでできるようになります。これは朗報だと思います。PHPを使ってスクラッチで開発する場合はもちろん、著名なCMSなどでもその動きがありますので、PDO対応が進むと今まですごく大変だと思われていたSQL Server対応がかなり選択肢となる可能性が高まります。
このあたりの内容はPHPカンファレンス2010のマイクロソフトセッションでご紹介した通りです。
以上の背景と技術動向によってPHPからマイクロソフトのSQL Serverを利用するシナリオが現実解として可能になってきたわけであり、そういう構成をお考えいただくことが可能になりました。
2.4 マイクロソフトの思惑
直接こういう視点のコメントをしないことが気持ち悪さを生むもとになるのではっきり書きます。PHPの利用者にぜひWindowsとSQL Serverの特長を活かし、使用していただきたいのです。そこでの売り上げをマイクロソフトはむろん期待していますし、そのような案件ビジネスを皆さんが行うことで皆さん自身も新しい発想のシステム開発でベネフィットが得られることを期待しています。
Windowsは評価版以外に無償版は存在しない(注2)のですが、その上の基盤となるSQL Serverには無償のExpress Editionがありますし、開発ツール関係も学習用途で用意されているVisual Studio 2010 Expressや今後出てくるWebMatrixなど無償のものが増えてきていることから実際に今回書いている構成は手軽に入手できます。
これらのインストールを簡単に行うのであればWeb Platform Installerを使用することを推奨します。
Windows XPにも対応しているので、最小構成を組む上ではお持ちの環境でやっていただく分にはコストがかからないです。
Web制作会社の方にはWebsiteSpark、学生の方にはDreamSpark、起業家の方にはBizSparkという条件を満たすと一定期間Windowsも無償で利用できるプログラムがあります。
3 どこまで使えそうか
3.1 検証レベルではなく実践可能
実際に多くの技術者の方はこういう情報が出ると検証レベルだと推測すると思いますが、このドライバーを使用してすでに海外ではさまざまな利用が試行され、実際に使われ始めています。
WordPressのバックエンドにSQL Serverを使うケーススタディ
最近ブログエンジンとしてだけでなく、CMSとして利用するPHP開発者も増えていると聞いていますが、WordPressに関する話題を1つ触れておきましょう。通常のバックエンドデータベースとしてはMySQLを想定していると思います。英語ではありますが、こんなサイトがあります。
これ以外にもいろいろな試みがなされていますが、最新情報はSQL Server開発チームに所属しているこのドライバーを開発しているチームのブログが最も情報が早いです。
3.2 製品サポートの考え方
このドライバーの提供方法は2つありますが、CodePlexからソースを入手して改変を行ったものの場合にはお客様が独自開発したアプリケーションと同様のサポートになるとお考えいただくと分かりやすいと思います。問題発生の再現用の簡易なサンプルの提示を求めます。
ダウンロードセンターで入手できるバイナリーを利用した純粋な接続構成における問題に関してはSQL Serverあるいはデータアクセス関係の問題をサポートが取り扱うのと同じことになります。この場合もWeb Platform Installerを使用している方法論であれば手順が明確で問題解決もスムーズでしょう。
つまりは、この構成はマイクロソフトの有償サポート対象となります。
3.3 日本語の情報集約
まだ立ち上がったばかりですが、このPHPからSQL Serverを利用するシナリオに関する情報ページがあります。ぜひこちらで最新情報をウォッチください。
4 まとめ
今回はコンセプトの提案と背景の説明でしたが、以降3回のシリーズとして具体的な利用方法やこのコンセプトのその先の可能性について整理していきます。