チャイルドラインデータベースの開発
Development of ChildLine DataBase
渡辺 忠史 WATANABE Tadashi 1.はじめに チャイルドラインは、1970 年代にヨーロッパ で始まった子供のための電話相談である。日本 では 1998 年に「せたがやチャイルドライン」が 開設され、2006 年 12 月現在では 34 都道府県 63 団体で実施されている(1)。規模が大きくなるに したがい、子供の抱える問題を社会に反映して いくために相談内容などの分類整理が重要とな ってきている。 従来、集計作業は一部のチャイルドラインを 除いて主として手作業で行われてきた。しかし、 全国に広がっているチャイルドラインが扱う相 談件数は年間 10 万件を越えるようになり、コン ピュータによる機械化が望まれていた。 筆者は、NPO 法人チャイルドライン支援セン ターの依頼により、相談内容のデータ入力から 検索・集計までが簡単に行なえる Web アプリケ ーションの開発に取り組んできた。試作段階か ら 2 回の試行を経て使いやすいシステムができ たので報告する。 なお、例示のデータは人為的に作成したもの であり実際のデータは含まれない。 2.システム概要 2.1 開発指針 開発指針として、第一に使いやすいシステム を構築することに心掛けた。システムの利用者 がパソコンの操作に習熟しているとは限らない ため、できるだけ分り易く簡単な方法で操作で きる必要がある。 サーバに関しては、自前でサーバを構築する ことも検討したが、管理運用やセキュリティに 関する実践的なノウハウおよび人手が不足して いること、条件に合ったレンタルサーバを見つ けることができたことなどの理由により、レン タルサーバ上に構築した。開発ツールとしては、 レンタルサーバの変更の可能性にも考慮し、多 くのレンタルサーバにおいてサポートされてい るサーバサイドスクリプト言語 PHP(Hypertext Preprocessor)(2)とデータベース管理システム PostgreSQL(3)を用いた。また、集計結果をグラ フ表示するために JpGraph ライブラリ(4)を用い た。入力データチェックなどをクライアントサ イドで行うために JavaScript を用いた。 2.2 ユーザ機能 開発したシステムは、登録した特定多数のユ ーザ(チャイルドライン実施団体)が利用し、 個々のユーザごとのデータを入力するため、ユ ーザごとの認証機能が必要である。データ編集 や削除はそのユーザが入力したデータに限らな ければならないが、検索や集計は全レコードを 対象とすることとする。主なユーザ機能を以下 に示す。 ・追加:新規データを追加する機能である。ユ ーザごとのデータとなる。 ・編集:既存データを編集する機能である。個 別のユーザが追加したデータだけを対象とする。 ・削除:既存データを削除する機能である。個 別のユーザが追加したデータだけを対象とする。 ・検索:検索条件を設定し、データを検索する 機能である。他ユーザが入力したデータも含め すべてのデータを対象とする。 ・集計:各種の集計する機能である。他ユーザ が入力したデータも含めすべてのデータを対象 とする。 ・パスワードの変更:パスワードを変更する機 能である。 2.3 管理者用機能 システム管理用に以下のような管理者用機能 を作成した。 ・ユーザ管理:ユーザ登録・削除など、ユーザ に関するデータを操作する機能である。
・各種項目値管理:入力ミスをなくすため、入 力データはリストボックスからの選択式にした。 「各種項目値管理」は、リストボックスから選 択できる入力データを追加・削除・変更するた めの機能である。ユーザが選択する各種項目の データを、実際の内容に即した値に対応させる ことにより実態を反映した結果を得ることがで きる。 2.4 テーブル データベースの主要なテーブルとして、相談 データを格納するためのメインテーブルとユー ザ情報を管理するためのユーザ管理テーブルを 作成した。メインテーブルはユーザの操作によ り更新される。ユーザ管理テーブルは、管理者 により管理される。 また、各種の項目値管理テーブルを作成した。 これは、入力値を選択するためのリストボック スに表示する項目値を管理するテーブルである。 このテーブルは管理者により管理され、前節の 「各種項目値管理」で使用される。 相談データ用のメインテーブルの主な項目 を下表に示す。 項目 備考 団体名 チャイルドライン実施団体名(自動入力) 都道府県名 団体所在都道府県名(自動入力) 着信年月日 電話相談年月日 着信時刻 電話着信時刻 通話時間 分単位 学年 小学生低学年、中学年、高学年など 性別 不明を含む 相談内容 20 種類 更新日付 最終更新日付(自動入力) ユーザ名 ログイン時のID(自動入力) ユーザ情報管理用のユーザ管理テーブルの主な 項目を下表に示す。 項目 備考 ユーザ名 ユーザ ID(管理者により決定) パスワード (ユーザにより変更可能) 団体名 チャイルドライン実施団体名 都道府県 団体所在都道府県名 更新年月日 最終更新日付(自動入力) リストボックスに表示する項目を管理する項 目管理テーブルの例を下表に示す。 項目 備考 番号 リストボックスへの表示順番を決定する ための値 学年 小学生低学年、中学年、高学年など 3.画面と機能 3.1 メイン画面 ログイン後のメイン画面を図 1 に示す。既に 入力されているデータがあれば、図に示すよう に 10 レコードずつ表示する。メイン画面には、 編集や検索などの各機能に対応するボタンを配 置した。 3.2 追加画面 メイン画面において「追加」ボタンを押すと 追加画面(図2)になる。 追加画面は相談データを入力するための画面 である。操作に習熟していない利用者にとって も迷わず使用できることが重要である。入力操 作の簡素化と誤操作防止のために以下のような 工夫をした。 (1) 電話相談の中には、無言電話や意味不明の ものがある。これらの相談に対してはほとんど の項目値が「不明」である。そこで、「対話成立」 ボタンを配置し、「対話成立」ボタンが選択され た場合に限り、他の入力必要項目を表示するよ うにした。これらの項目は図2の中で下半分 に 表示されているが、この部分は「対話成立」ボ タンを押したときに表示される。 (2) 登録ボタンの押し忘れや二重登録を防ぐた めに、いずれかの項目がクリックされない限り、 「登録実行」ボタンは表示されず、「登録実行」 ボタンが押されない限り「未登録」文字が表示 されるようにした。 3.3 検索画面 メイン画面において「検索」ボタンを押すと 検索画面(図3)になる。検索画面には、検索条 件を指定するリストボックスを配置した。 検索結果は、画面下半分に 10 レコードずつ表 示した。ボタン操作により、10 レコードずつ移
動すること、最終のレコードまたは最初のレコ ードに移動することができる。また指定したレ コード番号に移動することができる。 検索結果はテーブルのキー項目の順に表示さ れるが、表示されている各項目名をクリックす るとその項目名で並べ替えることができる。た だし、着信年月日をクリックすると、着信年月 日と着信時刻を合わせた順に並べ替えを行なう。 また並べ替えの順序(降順/昇順)はチェックボ ックスで選択できる。 電話相談においてひとつの重要な指標である 通話時間合計を検索結果の左上に表示した。 検索条件は、新たな検索条件が指定されるか 「クリア」ボタンが押されるまで値を保持する ので、表示されている検索結果の条件を確認す ることができる。 検索結果は、TAB 区切り形式または CSV 形式 でダウンロードすることができる。ダウンロー 図1 メイン画面 図2 追加画面
ド時の文字コードは、Windows の場合は SJIS で、 それ以外の場合は EUC にした。 3.4 集計画面 メイン画面において「集計」ボタンを押すと 集計画面(図4)になる。 各種の項目による様々な集計方法があるため、 使用頻度が高いと思われる集計機能を実装する ことにし、対応するボタンを集計画面に配置し た。年月日、団体、地域などの条件を付けて集 計ができる。独自の集計を行ないたい場合は、 検索した結果をダウンロードし、表計算ソフト などを用いて集計してもらうことを想定してい る。 集計結果は TAB 区切り形式または CSV 形式で ダウンロードすることができる。また棒グラフ、 円グラフなどで表示できる。棒グラフの例を図 5に示す。 単純集計の主なものを以下に示す。 ・年齢別:年齢に相当する学年別の相談件数の 集計である。学年は「未就学」、「小学低学年」、 「小学中学年」、「小学高学年」、「中学生」、「高 校生」、「不明」に分類してある。 ・男女別:男女別の相談件数の集計である。 ・時間帯別:1時間単位の時間帯別の相談件数 の集計である。 ・年月日別:年月日別の相談数の集計である。 ・内容別:相談内容別の相談数の集計である。 クロス集計の主なものを以下に示す。 ・年齢別相談内容別集計:年齢に相当する学年 と相談内容の相談件数のクロス集計である。 ・男女別相談内容別集計:男女別と相談内容の 相談件数のクロス集計である。 ・通話時間別相談内容別集計:通話時間と相談 内容の相談件数のクロス集計である。 ・都道府県別年月日別集計:都道府県と相談内 容の相談件数のクロス集計である。 ・年別月別:年別月別の相談件数のクロス集計 である。この集計結果だけ、折れ線グラフで表 示することができる。 3.5 セキュリティ 図3 検索画面
Web アプリケーションを公開するときは Web ページのセキュリティに注意しなければならな い(7)。代表的なセキュリティホールとしては、 クロスサイトスクリプティングと SQL インジェ クションがある。クロスサイトスクリプティン グは、ユーザが入力した文字列をそのまま表示 するによって生じるセキュリティ上の問題であ る。SQL インジェクションは、悪意あるユーザ が入力した文字列を、チェックしないで SQL 命 令に埋め込むことによる予期しない動作である。 開発したシステムは、管理者によって登録さ れた特定多数のユーザしか利用できないので、 認証画面以外は不特定多数の利用者がアクセス することはない。認証画面以外は認証が成功し ていないとアクセスできないので、ユーザ名と パスワードが漏れなければ安全性は高いが、安 全であることを確認するためにアクセスログを チェックし、不正なアクセスが行われていない 図4 集計画面 図5 棒グラフ
かを点検する必要がある。 4.開発環境 レンタルサーバ上でソフトウェア開発を行な うことはネットワークトラフィックが増え、ま た操作性が良くない。そこでローカルにレンタ ルサーバと同等の開発環境を整えた。使用した ソフトウェアを以下に示す。 ・オペレーティングシステム:FedoraCore3 ・サーバサイドスクリプト言語:PHP5.1.1 ・データベース管理サーバ:PostgreSQL7.4.8 ・Web サーバ:httpd-2.2.0 ・GD:gd-2.0.33 ・JpGraph:jpgraph-2.0beta ローカルサーバで動作検証後、レンタルサー バにアップロードして動作試験を行なった。仮 想データを 10 万件作成し、レンタルサーバ上で データ操作・検索などの実験を行なった。 5.評価 実際の利用者の感想を伺う機会に恵まれない が、当初の目的どおり、操作に習熟していない 利用者にも使いやすいシステムになったと思わ れる。 検索結果/集計結果をダウンロードする機能 を利用すれば、パソコンの表計算ソフトを使っ てデータを自由に加工することが可能であるの で 柔軟に利用できる。 開発したシステムは、データ入力から集計ま でできる簡便な Web アプリケーションのモデル として再利用できるものと思われるが、システ ム構築技術としては再検討の必要がある。PHP のライブラリである PEAR(PHP Extension and Application Repository)(5)や Smarty(6)を利用
し、MVC(Model View Controller)モデルに基い た画面デザインとロジックを分離することによ り開発効率や保守性が向上するものと思われる。 今回、2006 年 11 月 6 日から 12 月 5 日の間に 実施されたフリーダイヤルによる電話相談キャ ンペーンでは 21 都道府県 39 団体から 1 万件を 越えるデータが入力された。この期間中、製作 したシステムが原因の障害はなかった。ちなみ にチャイルドラインでは毎年 5 月にフリーダイ ヤルによる「子どもの日チャイルドライン全国 キャンペーン」を実施し、2005 年には 1 週間で 17,175 件の相談があった(1)。 6.まとめ チャイルドライン支援センターからの依頼に より、チャイルドラインデータベースを開発し た。依頼された機能の中にはまだ実装していな い部分もあるが、試用期間中にも障害報告はな く安定していると思われる。 子供が抱える悩みを機械的に分類/集計する ことによって切り捨てられてしまう側面がある 可能性は否定できないが、このシステムが、子 供の声を世の中に伝え、よりよい環境を整備し ていくことのお役に立てれば幸いである。 [謝辞] 要求仕様に関する様々な提案および助言をいた だいたチャイルドライン支援センターのデータ ベース専門部会の皆様に感謝いたします。特に、 中心になって進めていただいた中澤恵子氏に感 謝します。また、紀要に投稿することを快く承 諾していただいたチャイルドライン支援センタ ーに感謝します。 参考文献 1) チ ャ イ ル ド ラ イ ン 支 援 セ ン タ ー : http://www.childline.or.jp/ 2) PHP:http://www.php.net/ 3) PostgreSQL:http://www.postgresql.org/ 4) JpGraph:http://www.aditus.nu/jpgraph/ 5) PEAR:http://pear.php.net/ 6) Smarty:http://smarty.php.net/ 7) 山本勇:「PHP 実践のツボ セキュアプログ ラミング編」,九天社,2004 8) GIJOE:「PHP サイバーテロの技法 攻撃と 防御の実際」,ソシム,2005