“新聞社にとって選挙報道は重要です。そのためなかなか冒険はできませんが、思い切って新しい技術であるインメモリ・データベースを採用したことで、大きな成功を収めました。Oracle TimesTen In-Memory Databaseによって、ピーク時に求められる高いレスポンスを安価なシステムで実現できました”
毎日新聞社 制作技術局 技術センター 制作技術グループ 技師 田中 孝次氏
![]() |
||
| 毎日新聞社 制作技術局 技術センター 制作技術グループ 技師 田中 孝次氏 |
「信頼」「楽しい」「役に立つ」をコンセプトに、2007年10月に開設された毎日新聞社の総合情報サイト「毎日jp」は、ブログや外部サイトとも連携し、オープンなWebサイトの展開を目指している。東京で最初の日刊紙である東京日日新聞が創刊された1872(明治5)年以来、長い歴史を積み重ねてきた毎日新聞。同社は最新のインターネット技術も取り入れつつ、その歴史に新たなページを加えようとしている。
「開票結果は、しばらく待てば選挙管理委員会から正式な発表がありますから、それを使えばいいと思うかもしれませんが、それでは間に合いません。報道はスピードが重要です。新聞の降版時間というものは予想以上にタイトですし、選挙報道はいまやWeb上で激しい戦いが繰り広げられており、新聞社にとって大きな負荷となっています」
毎日新聞社 制作技術局 技術センター 制作技術グループ 技師の田中 孝次氏は、紙面上やWebでの選挙報道において成功できるかどうかは、ITシステムの性能と信頼性に大きく依存すると語る。全国規模でみれば、毎週どこかで小さな選挙がおこなわれている。さらに、3〜4年ごとに国政選挙や統一地方選挙があるため、続くときには毎年のように大規模な選挙が実施される。大規模選挙の場合、半年〜1年近く前から準備を進めるので、選挙当日の報道態勢も含め負荷は大きいという。
選挙の仕組みや制度は頻繁に変更されるうえに、編集部門からも毎回新たな要求が出される。従来の選挙システムはそれらの要求に応じる形で開発を続けてきたため、変化に柔軟に対応できる仕組みとはいいがたいものだった。しかし、上述のように時間の限られた状況では、システムを根本的に作り替えることはできなかったという。ところが、2007年は統一地方選挙と参議院選挙が重なる12年に一度の年であることから、3年間の猶予が生まれたのだ(実際には、2005年8月の郵政解散にともない衆議院選挙が実施されている)。
「以前のシステムはミニコン上でC言語を用いてメーカーと共同開発されたもので、OSも特殊で他のシステムとの互換性もありませんでした。ソースコードの資産も膨大にあり、このままではシステムを運用可能なプラットフォームや、対応できるベンダーが限られてしまう。結果として、コストの高いシステムとなっていました。そこで、このタイミングで思い切って過去の資産を捨て、選挙システムを作り直そうと考えたのです」(田中氏)
2004年9月、新選挙システム「TIMELY」の導入プロジェクトが、2006年末の完成を目指して立ち上げられた。新選挙システムでは、データの統合管理、必要なタイミングと応答時間での動作、自動化によるユーザーが使いやすいシステムの実現、リアルタイムの情報提供とさまざまな出力形態への対応、耐障害性、拡張性の向上、セキュリティの強化といった目標が掲げられた。
また、コスト削減のためにプラットフォームを安価なPCサーバーに変更し、オープンソースを活用することも検討された。最終的に、選挙データの管理に採用されたのがLinuxプラットフォームと「Oracle Database 10g」である。名鑑、顔写真、投開票、判定情報など従来ばらばらに管理されていたデータを一元管理し、専用のクライアント環境が不要なWebベースの構成とすることで、管理の手間が少ないシステムとなった。さらに、データベース・サーバーのホット・スタンバイ構成やディスクのRAID化により可用性を高め、「Oracle Data Guard」も導入して大阪にバックアップ・サイトを設置することで、耐障害性に優れた堅牢なシステムができあがった。
そしてもう1つ、インメモリ・データベースの「Oracle TimesTen In-Memory Database」も採用された。選挙システムでは、正確さだけでなくスピードも重視される。国政選挙では、全国の1,800(平成の大合併以前は3,200)余りの市区町村からの開票結果がサーバーに集められる。その情報をタイムリーに記者や編集に提供し、活用できなければならない。
「秒単位で情報が更新され、サーバーでは激しくトランザクションが走っている状態になります。その中で集計をおこない、編集して必要な情報を表示・送信しなければならない。国政選挙の場合、深夜0時〜2時くらいが勝負となります。そのときのピーク負荷を乗り切れるシステムでなければなりません」(田中氏)
これはハードウェアの増強などでも対応できるかもしれないが、数年に一度の選挙のために多大なハードウェア・リソースを導入するのはコストが高くついてしまう。そこで提案されたのが、Oracle TimesTen In-Memory Databaseだった。
「Oracle TimesTen In-Memory Databaseは、ディスク・アクセスがないので高速に処理できます。Oracleデータベースでもハードウェアを増強したりチューニングを施すことでそれなりのレスポンスは得られますが、Oracle TimesTen In-Memory Databaseは複雑なチューニングなしで高速なレスポンスが実現できました」(田中氏)
田中氏には、かつてコンテンツ管理システムの構築時に、メモリ上で動くアプリケーションを構築することで必要なレスポンスが得られたという経験がある。ただし、アプリケーションを作り込みすぎてしまったため柔軟性や拡張性がなく、システムのちょっとした変更にも容易には対応できなくなったという。Oracle TimesTen In-Memory Databaseであれば、メモリ上で高速に動作するのはもちろん、標準に準拠したSQL言語でアクセスできるので、高いレスポンス性能と柔軟性、拡張性を同時に得られる仕組みが構築できた。
Oracle TimesTen In-Memory Databaseは、2007年の統一地方選挙、参議院選挙において期待どおりの絶大な効果を発揮した。ピーク負荷時でもCPUの稼動率は数%以内に収まり、十分なレスポンスを確保できたのだ。「従来のシステムの延長で新選挙システムを構築していたら、同じ性能を得るには十億円規模の投資が必要だったかもしれません」と田中氏は言う。
Oracleデータベースとの親和性の高さも、Oracle TimesTen In-Memory Databaseを採用した理由の1つだ。たとえば、国政選挙などの場合には、Oracleデータベースに蓄積されている情報をOracle TimesTen In-Memory Databaseにコピーして利用する。開票準備後にOracleデータベース側のデータを更新しても、自動的にOracle TimesTen In-Memory Databaseのデータも更新される。組版システムへ渡すデータは、SQLで抽出してさまざまな用途向けに加工して生成する。この処理においても、OracleデータベースとOracle TimesTen In-Memory Databaseのいずれもアプリケーションに大きな変更は発生していない。
「編集部門の要求に合わせていると、どうしても効率の悪い長いSQL文を作ってしまいがちですが、最近のOracleデータベースはそれを自動的に最適化してくれます。Oracle TimesTen In-Memory DatabaseもOracleデータベースと同じように、誰でも簡単に使える製品になってほしいですね」(田中氏)
次の衆議院選挙に向けて、TIMELYをさらに使いやすくしたいと考える田中氏にとって、Oracle TimesTen In-Memory DatabaseとOracleデータベースとの親和性が向上し、より柔軟性が高まれば「誰でも簡単に利用できるシステム」の実現に一歩近づくことになる。OracleデータベースとOracle TimesTen In-Memory Databaseがさらなる進化を遂げ、今後も毎日新聞の選挙報道を強力に支えることが期待されている。
本事例の内容は2007年11月のものです。