図書館カレンダーで使えそうな技術(改)

図書館カレンダーで
使えそうな技術(改)
平成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 = ‘[email protected]';
my $passwd = ‘xxxxx';
2
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);}
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
多
イベントタイトル
イベント内容
ここに挙げたのは「たとえば」の例