平成19年11月8日 図書系職員のための アプリケーション開発講習会 図書館カレンダーで 使えそうな技術(改) 平成19年11月8日 図書系職員のための アプリケーション開発講習会
図書館カレンダーの選択肢 Googleカレンダーを使う フリーのSNSソフトウエアを改造する 最初から自作する
Googleカレンダーを使う(1) Googleカレンダーに職員が予定をいれ、それを利用者用に公開する。 HTML形式で公開する(URLは google.com 上になる) XML形式でイベント情報を出力させ、それを利用者用に加工する Googleカレンダーの「共有」機能を使うことができる。
Googleカレンダーを使う(2) Googleカレンダーに予定を入れる OUTLOOKからデータを移すことができる Google Calendar API(Atom)を使い、プログラムから予定をセットできる
Googleカレンダーを使う(3) ~ Google Calendar API で予定を書き込むサンプル~ 1 #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use Encode; use constant GAUTH_URL => 'https://www.google.com/accounts/ClientLogin'; use constant GCAL_URL => 'http://www.google.com/calendar/feeds/default/private/full'; my $email = ‘xxxxx@xxx.u-tokyo.ac.jp'; my $passwd = ‘xxxxx'; my $entry = <<'ENTRY'; <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category> <title type='text'>test desu</title> <content type='text'>nanndaka test.</content> <author> <name>akira</name> <email>maeda</email> </author> <gd:transparency value='http://schemas.google.com/g/2005#event.opaque'> </gd:transparency> <gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'> </gd:eventStatus> <gd:where valueString='Rolling Lawn Courts'></gd:where> <gd:when startTime='2007-11-17T15:00:00.000Z' endTime='2007-11-17T17:00:00.000Z'></gd:when> </entry> ENTRY Encode::_utf8_off($entry);} 2 my $ua = LWP::UserAgent->new(); my $auth = $ua->post(GAUTH_URL, { Email => $email, Passwd => $passwd, source => 'test', service => 'cl' }); my($auth_token) = $auth->content =~ m/Auth=(.+)/; my $req = HTTP::Request->new(POST => GCAL_URL); $req->header('Authorization', 'GoogleLogin auth=' . $auth_token); $req->content_type('application/atom+xml'); $req->content_length(length $entry); $req->content($entry); my $res = $ua->request($req); print $res->status_line . "\n"; if ($res->is_redirect && $res->header('Location')) { $req->uri($res->header('Location')); print $ua->request($req)->status_line . "\n"; } 参照 http://as-is.net/blog/archives/001122.html
フリーのSNSソフトウエアを改造する OpenPNEを (単にメジャーらしいので)調査 Mixiと似た機能を提供するソフトウエア PHPライセンスで提供 http://q.hatena.ne.jp/1160981934 PHP, MySQLにて動作 カレンダー機能あり Googleカレンダーのような共有機能はないが、次のとおり改造は可能らしいhttp://bestpc.s153.xrea.com/pukiwiki/pukiwiki.php?%A5%B9%A5%B1%A5%B8%A5%E5%A1%BC%A5%EB%A4%CE%B6%A6%CD%AD%B2%BD
最初から自作する 必要と思われる機能 ユーザ認証 (以下2つとも試したことはないです) 予定の管理 スケジュール表の表示 CGI::Session (Perlの場合) PEAR::Auth (PHPの場合) 予定の管理 DBソフト(MySQLかPostgressSQL) スケジュール表の表示 HTML いっそ、最初から認証機能やDBとの連携機能のある Webフレームワーク(Ruby on RailsやCatalystなど)を 使ったほうがわかりやすい??
Ruby on Rials っぽく MVCモデルで考える M (Model) データベース部分のこと。 MySQLやPostgressSQLを使って実装。 V (View) インターフェイス部分のこと。 HTMLで実装。 C (Controll) ロジック部分。プログラムを組もう!
View から考える (1) ガジェット風のインターフェイス 赤字で表示された日付をクリックすると、 イベント内容を記した フキダシがでるとか。 11月 Webページに貼り付けて利用可。 (インラインフレームなど)
View から考える (2) 卓上カレンダー風のインターフェイス イベントタイトルをクリックすると、 イベント内容を記した フキダシがでるとか。 1日(木) 2日(金) 運動会 月の予定を一画面で確認できる
View から考える (3) ToDoリスト風のインターフェイス 7日 水 8日 木 今日は楽しい mbc イベントタイトルをクリックすると、 イベント内容を記した フキダシがでるとか。 一覧性はもっとも高い。
Modelから考える イベント内容 組織ファイル 図書室ID イベントファイル 図書室ID イベントタイトル パスワード 1 多 ここに挙げたのは「たとえば」の例