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

Download Report

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

図書館カレンダーで
使えそうな技術(改)
平成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
多
イベントタイトル
イベント内容
ここに挙げたのは「たとえば」の例