IT仕事塾

ファイルメーカーで商用ウェブサイトを構築する
第4回 ZDNetファイルメーカーシステム「BeforeCMS」の構造(4/4)

前のページ

HTMLスクリプトの分割・モジュール化

 では、記事ファイルの書き出しをどうするかという問題に移ります。これにはいくつかの方法があると思います。

  • (1) あらかじめ用意したHTMLテンプレートをグローバルフィールドに入力しておき、そのなかに、タイトル、本文、著者名などのタグを埋め込んでおく。それらのフィールドとタグを、ファイルメーカーProのSubstitute関数を使い、そのレコードの値に置き換える。
  • (2) HTMLをいくつかのモジュールに分け、それをグローバルフィールドとして保持し、それらを組み合わせた計算フィールドをもうけ、そのフィールドを書き出す。
  • (3) HTMLをいくつかのモジュールに分け、それをサブスクリプトにしておく。HTML書き出し用のグローバルフィールドを用意しておき、そこに、HTMLモジュールの最初から順番に追加していく。最後まで終わったら、そのフィールド全体を書き出す。

 ZDNetのサイトを構築するときに、最大の障害となったのは、相次ぐ仕様変更です。これは、「生きた」サイトを作るには必要不可欠で、メインの要素以外のあらゆるものが変わっていきます。そのなかで、制作システムの変更を最小限に抑えるために、BeforeCMSでは最後の方法 (3) をとりました。スクリプトの徹底的なモジュール化です。HTMLモジュールは、主要なものだけ挙げても、これだけあります(本当は、この10倍くらいあります):

  • HTML開始
  • HEAD
  • METAタグ
  • スタイルシート
  • チャンネルロゴ画像の選択
  • 主要チャンネルへのリンク
  • タブ1列目
  • タブ2列目(テキストタブ)
  • 広告1
  • 左カラム開始
  • 記事検索
  • 広告2
  • 著者別インデックス
  • 特集インデックス
  • 広告3
  • 今日のニュースインデックス
  • フィードバック用メールアドレス
  • 左カラム終了
  • 中央カラム開始
  • 日付け、記事分野
  • タイトル
  • 概要
  • ページナビゲーション(前ページへのリンクのみ)
  • 広告4
  • 本文
  • 翻訳原文へのリンク
  • クレジット
  • ページナビゲーション
  • 本文下インデックス
  • 中央カラム終了
  • 右カラム開始
  • トピックス
  • 広告5
  • 他チャンネルインデックス
  • 右カラム終了
  • 下パート開始
  • フッタリンク
  • コピーライト
  • フッタ終了
  • HTML終了

 ふう、っていう感じですね。まあ、最初にこれらのモジュールに分離するのは大変ですが、この大部分が各チャンネルで流用できるため、開発の工数は大幅に削減できました。HTMLが完全にフィックスした状態であれば、 (1) の方法でもいいと思います。

FMスクリプトによるHTML吐き出しから、FTP、プレビューまで

 ファイルメーカーProのスクリプトを使って、上で使ったHTMLモジュールを順番に書き出すわけですが、そのためには、次のような順序で行います。

  • 一時的な保存場所として、「HTMLグローバル」という、グローバルフィールドを設定します
  • HTMLモジュールを次々に、この「HTMLグローバル」に追加していきます
  • 最後まで終わったら、「HTMLグローバル」を、Troi File Plug-inを使い、共有ボリュームに保存します
  • 保存したHTMLファイルを、ステージングサーバにFTP(Interarchyを使う)
  • ステージングサーバ上で、ブラウザを使ったプレビューを行います

 本文、タイトルなどを入力したら、チェックの後、HTML書き出しからプレビューまでを一気に行います。以前は共有サーバ上でもプレビューしていたのですが、今ではステージングサーバまでアップしてからプレビューを行っています。本来ならば完全な状態にしたうえでFTPしていたのですが、SSI (Server Side Include) を多用するようになったことと、広告サーバが、ステージングサーバ上でした動かないため、このような形になりました。

Webサーバへの分配、記事アップの通知

 確認がすんだら、いよいよ、ウェブサーバへのアップ作業です。以前は、この作業をコマンドラインで行っていました。手動アップする人は、

macwireupate /0210/08/nj00_filemaker.html

 というようなコマンドを、手作業で行っていたわけで、その作業がいやなわれわれは、ここをAppleScriptで制御するスクリプトをファイルメーカーProに仕込み、AppleScript対応のターミナルソフトで動かしていたのです。Better Telnet、MacSSH、MacTelnetはいずれも、フルにスクリプタブルで、Mac OS Xのターミナル機能と違って、ターミナルに特定の文字列が表示されたら、この文字列を送信するといったことが可能で、対話的なやりとりを要求するコマンドにも、十分に対応できたのです。その際、毎回ログインしてID、パスワードを入れる手間も省くことができたので、大幅に時間を節約できたのです。

 いまは、先にも述べたように、この部分は完全にcgi化されており、URLに引数を渡すだけで、ちゃんと処理をしてくれます。ファイルをまとめてアップするときにも対応しているので、この外部アプリケーションは不要となりました。ただし、サーバ担当者がそこまで作り込んでくれるとは限らないので、いざというときにコマンドラインをいじる解決法があるというのは、非常に心強いです。

 ウェブサーバへの分配が終わると、記事を新規にアップしたという通知を、社内のメーリングリストに流します。編集部内では、常にチャットをしながら情報のやりとりをしているのですが、チャットをしていない部署の人たちには、メールで記事更新の通知がいくようになっています。

 この処理には、UVJ MailerとOMEを使っています。両者の使い分けですが、下記のスクリプトのように、システムバージョンでMac OS Xかどうかを判断し、OS Xであれば、OMEを、そうでなければUVJ Mailerを選択するようにしています。


メール送信スクリプトのモジュールを選択するには、OSのバージョンを取得して判断します

Oracleとの同期

 Oracleを用いたバックエンドサーバとのデータ同期も、1つの記事をアップするたびに実行しています。ウェブサーバへの分配を行うタイミングで、別のディレクトリに、同期用のデータをFTPします。このデータも、計算フィールドで作り、Troi File Plug-inを使い、保存したうえでFTPします。この部分が、ファイルメーカーProの新バージョンであるVer. 6.0のXML機能で何とかならないかと、いま、Oracleの担当者と話をしているところです。

 現在のところ、BeforeCMSを使った記事はすべて、Oracleとデータ同期していますが、もうひとつの大仕事として、ZDNet Productsの製品データベースを同じようにOracleと同期させるという仕事があります。そうすれば、ファイルメーカーProで作っている記事のほとんどすべてがバックエンドと同期することになり、いざというときのバックアップも作られます(もちろん、ファイルメーカー Serverで、データのバックアップは毎日保存していますが)。ファイルメーカーProで実行している外部アプリケーションのコントロールをバックエンドで行うということも可能です。その分、BeforeCMSでほかの新しい機能を追加することができます。

 以上、ファイルメーカーProを使ったBeforeCMSの構造について解説しましたが、次回は、導入に当たり、起きるさまざまな問題への対処方法について述べていきます。

[松尾公也, ITmedia ]

Copyright © ITmedia, Inc. All Rights Reserved.

前のページ | 4/4 | 最初のページ

ピックアップ

news139.jpg 週末アップルPickUp!:絶好調のApp Store、ユーザーに34億円返金へ
アップル関連の話題を何となくまとめる週末アップルPickUp!。今週は未成年者によるアプリ内課金問題を取りあげます。

news020.jpg 24時間動作+4バンドLTE+11ac+SIMフリー(予定):もしかして“無双”? ツウ好みの高性能LTEルータ「AtermMR03LN」をねっとりチェック(パフォーマンス編)
“ツウ好み”の機能や特長を多く備えるLTEルータ「AtermMR03LN」がモバイラーの中で人気だ。前編の機能チェックに続き、後編では実運用して分かった使い勝手とパフォーマンス面をねっとりチェックする。

news041.jpg 最新タブレット速攻レビュー:「MeMO Pad 8」──“Winタブ”よりお手ごろ価格な8型Androidタブレット
8型タブレットとなると最近はWindows 8.1搭載モデルが人気だが、同サイズでAndroidなら“もっと低価格”である。2万円台で買える8型タブレット「ASUS MeMO Pad 8」をチェックする。

news052.jpg 最新PC速攻レビュー:「VAIO Pro 13」――さらにハイスペックを軽快に持ち運べる“14春モデル”徹底検証
高い人気を誇る薄型軽量モバイルノート「VAIO Pro 13」が、より高性能なCPUを搭載可能になった。その実力を確かめるべく、直販ハイスペックモデルをじっくり検証する。

news062.jpg 「3年先を行く」製造技術:タブレット市場に注力するIntelのモバイルプロセッサ戦略
Intelは“他社の3年先を行く”半導体製造技術でタブレット市場における影響力の拡大を目指す。同社のモバイルプロセッサ戦略をまとめた。

news116.jpg LaVie Z&LaVie G タイプZロードテスト:第23回 2560×1440解像度スゴイ……格段に作業効率が上がる「超高解像度ディスプレイ」
ウルトラ軽量に加え、「超高解像度ディスプレイ」もLaVie Z(IGZOモデル)の魅力だ。今回はこのディスプレイの使い勝手と応用方法を考えてみた。

news107.jpg SOHO/中小企業に効く「ビジネスPC」の選び方(2):Windows XPから乗り換えるべきは“7”か“8.1”か
Windows XPのサポート終了に際して、どのようなPC環境に移行すべきか? まずはWindows 7か、Windows 8/8.1か、次のメインOSを選択する必要がある。

news057.jpg NUCやUltrabookをもっと速く:アキバで人気のSSDにmSATA版が登場――「Samsung SSD 840 EVO mSATA」徹底検証
抜群のコストパフォーマンスで高い人気を誇るSSD「Samsung SSD 840 EVO」にmSATA版が登場した。容量が1Tバイトまで用意されているのも興味深い。早速、性能をチェックしよう。

news033.jpg SOHO/中小企業に効く「UPS」の選び方(第2回):「UPS」を正しく選ぶコツ――容量の計算方法は? 給電方式とは?
「無停電電源装置(UPS)」の基礎知識から、機器に合った製品選びまで、順序立てて解説する本連載。第2回は、UPSの選定で知っておくべき、容量の計算方法や給電方法の違いを紹介する。

news032.jpg 「ThinkPad X240s」ロードテスト:第4回 大きく変わった「5ボタントラックパッド」を快適に使えるようにする、2つのコツ
業務に使うPCとして積極的にThinkPadを選んできた理由の1つに「トラックポイント」がある。今でもノートPCに搭載するポインティングデバイスとして唯一無二の存在だと確信しているが……。