【コラム】

Yet Another 仕事のツール

65 phpCollabでプロジェクト管理(5) - ガントチャートを日本語化

    鶴田展之  [2005/05/18]

    前回まででphpcollabもほぼ日本語での実用に耐えうるものになったかと思うが、もう一つ、phpcollabの目玉とも言える機能の対応が残っている。プロジェクトの作業進捗をグラフィカルに表現する「ガントチャート」の日本語化だ。

    まず、現状のphpcollabのガントチャートを見てみよう。

    図のように、文字が化け化けである。これを修正するには、まずphpcollabがどのようにこのガントチャートを描画しているのかを知る必要がある。ガントチャートの画像の下に「Powered by JpGraph」と表示されているのに注目して欲しい。この画像は、「JpGraph」という、グラフ描画用のクラスライブラリを使用しているのだ。PHPは、ビルド時に「GD拡張」を組み込むことでGDライブラリを使用した動的な画像生成が可能になるが、JpGraphを使えば、定型的なグラフやチャートを、より簡単に、かつ見栄えよく作成できる。なお、今回の環境では、表の各configureオプションを指定してビルドしたPHPを使用している。

    --with-gd=[DIR]GDライブラリのインストール先パスを指定
    --with-png-dir=[DIR]PNGライブラリのインストール先パスを指定
    --with-jpeg-dir=[DIR]JPEGライブラリのインストール先パスを指定
    --with-zlib-dir=[DIR]zlibのインストール先パスを指定
    --with-freetype-dir=[DIR]日本語TrueTypeフォントの使用に必要

    さて、このガントチャートに日本語を表示させるには、当然日本語フォントが必要になる。適当なフォントがなければ、東風フォントやさざなみフォント等、フリーの日本語TrueTypeフォントを入手して使えば良いだろう。本コラムでは、以下のサイトよりさざなみフォントをダウンロードした。

    efont

    ダウンロードしたファイルを解凍すると、中に「sazanami-gothic.ttf」「sazanami-mincho.ttf」という2種類のフォントファイルがある。これをphpcollabのincludes/fontsディレクトリにコピーしよう。

    さて、ここからが本番だ。日本語フォントが使えるよう、JpGraphを改造する。includes/jpgraph/jpgraph.phpをエディタで開き、まず32行目あたりに定義されているTTF_DIR定数を、さざなみフォントを置いたfontsディレクトリを参照するよう書き換える。

    // Directory for jpGraph TTF fonts. Must end with '/'
    // Note: The fonts must follow the naming conventions as
    // used by the supplied TTF fonts in JpGraph.
    //DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/truetype/");
    DEFINE("TTF_DIR","さざなみフォントのインストール先への絶対パス");

    次に、200行目近辺のフォント定義を行っている箇所に、以下のように日本語フォントの定数を追加する。

    DEFINE("FONT2",96);             // Deprecated from 1.2
    DEFINE("FONT2_BOLD",95);        // Deprecated from 1.2

    DEFINE("FF_GOTHIC", 40);
    DEFINE("TF_GOTHIC", "sazanami-gothic");

    続けて、「TTF」メソッド(1750行目あたり)で定義されている$font_files配列に、「FF_GOTHIC」配列を追加する。

                FF_TIMES =>   array(FS_NORMAL=>'times',   .....
                FF_COMIC =>   array(FS_NORMAL=>'comic',   ......
                /* ここから追加 */
                FF_GOTHIC =>   array(FS_NORMAL=>'sazanami-gothic',   
                                                   FS_BOLD=>'sazanami-gothic',   
                                                   FS_ITALIC=>'sazanami-gothic',  
                                                   FS_BOLDITALIC=>'sazanami-gothic' ),  
                /* ここまで追加 */
                FF_ARIAL =>   array(FS_NORMAL=>'arial',   ......

    さらに、4550行目あたりのStrokeTextメソッドで、テキストを描画する際に日本語フォントが使用されるよう以下の処理を追加する。

        function StrokeText
    ($x,$y,$txt,$dir=0,$paragraph_align="left",$debug=false) {

            $x = round($x);
            $y = round($y);

            // For Japanese
            $this->font_family = FF_GOTHIC;
            $this->font_file = TTF_DIR . TF_GOTHIC . '.ttf';

            // Do special language encoding

    以上の変更の結果、ガントチャートは日本語が化けずに表示されるようになった。

    なお、今回はこちらのページを参考に、phpcollabがUTF-8ベースで動作していることを前提とした最低限の対応を行ってみた。PHPの内部エンコーディングとして他のコードを使用している場合は、テキスト描画の前に上記サイトで解説されているようなUTF-8への変換処理が必要になることには注意が必要だ。

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン