チャイルドラインデータベースの開発

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