================================================================================
サイボウズの予定表データをAgendaに取り込むプログラム「Psibou」
Version 1.02 (2005.8.18)
三橋憲行
================================================================================
【目次】
1. 概要
2. 動作環境
3. インストール
4. アンインストール
5. 使用方法 (準備)
6. 使用方法 (日次処理)
7. 使用方法 (詳細)
8. 注意制限事項
9. 著作権・配布条件等
10.変更履歴
1. 概要
このプログラムは、サイボウズの予定表から出力したCSVファイルを、PsionのAgenda
ファイルに取り込むものです。本プログラムはPSIONのアプリケーションとして動作
し、取り込み処理はPsion上にあるAgendaファイルとCSVファイルで行います。
本プログラムにおける取り込み処理は、単に予定を取り込むのではなく、Agendaの予
定とサイボウズの予定の対応を記録しておくことにより、サイボウズ側の更新を反映
することができます。更新の反映はサイボウズからAgendaへの一方向しか行えません
ので同期とは言えませんが、単純な取り込みと異なり、何度取り込んでも、登録が重
複する心配はありません。
本プログラムで行う基本的な取り込みは、以下の手順で行われます。
・サイボウズ予定表から出力したCSVファイルを、Psion上に転送する。
・Psion上で本プログラムを起動し、取り込み処理を行う。
なお、Psion上にUniFEPが導入されている場合は、CSVファイルから取り込む際に、漢
字コードを変換することも可能です。
2. 動作環境
本プログラムは、以下の環境を必要とします。
・サイボウズOffice Ver.4
* 他のバージョンについては資料がないため、未確認です。
・Psionへのファイル転送手段
・Psion Series5, 5mx, Revo またはこれらと互換の機種
・MD5.OPX(Ver.0.03以降)がPsion上に導入されていること
* MD5.OPXは近藤玲史さんが開発された、MD5チェックサムを計算するためのOPXで
す (http://www01.upp.so-net.ne.jp/rey/)
・漢字コードの変換を行う場合は、UniFEP for EPOC(または 5mx, Revo, V2)
3. インストール
Psibouのインストールを行う前に、MD5.OPX(Ver.0.03以降)を入手し、Psion上にイン
ストールしてください。(MD5.OPXの入手方法は第2章を参照してください)
次にPsibouをインストールします。ZIPファイルを展開すると以下のファイルが生成さ
れます。
./ ----- Psibou_ja.txt 本テキスト
Psibou.SIS インストールファイル
srcs/ ------- Psibou.opl 本体のソースリスト
Psibou.oph
Psibou.mbm
UniCvt.opl UniOPX操作用モジュールのソース
UniCvt.oph
ここからPsibou.SISファイルを取り出し、Psion上にインストールしてください。
Psibouのインストール中に、Agenda2.OPXも自動的にインストールされます。インス
トールが終了すると、Extrasバー上に細胞の断面図を模した、駄洒落のようなアイコ
ンが現れます。
4. アンインストール
Psionのコントロールパネルに "Add/remove" アイコンがある場合は、"Add/remove"
ダイアログ上で、Psibouを選択し、削除してください。そうでなければ、C:ドライブ
およびD:ドライブの "\Ssystem\Apps\" ディレクトリ下にある "Psibou" ディレクト
リを、丸ごと削除してください。
5. 使用方法(準備)
取り込みを行う前に、まずPsibouファイルを作成する必要があります。Psibouファイ
ルは取り込みの個別設定、および取り込まれた予定の状態を記録します。取り込みは
Agendaファイル、サイボウズ予定表のCSVファイル、Psibouファイルの3つのファイル
を使用して行われます。この方法は一見煩雑に思われることでしょう。しかし一度
Psibouファイルを作成すれば、取り込み設定の変更を望まない限り、再びPsibouファ
イルを作成する必要はありません。更に日々の取り込みの際に行うのは、Psibouファ
イルを選択することだけになり、AgendaファイルやCSVファイルを都度選択する必要は
ありません。もし貴方が2、3の異なるAgendaファイルとサイボウズ予定表の組合せ
を使用したいならば、各々の取り込み設定をそれぞれのPsibouファイルに保存するこ
とが可能です。Psiobuファイルの作成は以下の手順で行います。
5.1. 準備
まず取り込み対象のAgendaファイルとサイボウズ予定表のCSVファイルを作成しま
す。CSVファイルはPsion上に転送しておいてください。
5.2. Psibouファイルの作成
PsionのExtrsバーからPsibouを起動します。"Opening Psibou file." というタイ
トルのダイアログが、ファイルが何も選択されていない状態で開きます。ダイアロ
グ上の[Create/Edit...]ボタンをタップすると、Psibouファイルを作成するための
ナビゲーションダイアログが起動します。
ナビゲーション #1/6: Agendaファイルの選択
取り込み先のAgendaファイルを選択します。このダイアログではAgendaファイル
のみが表示されます。もし選択したファイルが他のアプリケーションで使用され
ている場合は、そのファイルを閉じます。選択したAgendaファイルが読取専用の
場合は、次のステップに進むことができません。
ナビゲーション #2/6: サイボウズCSVファイルの選択
取り込むサイボウズCSVファイルを選択します。このダイアログではどの形式の
ファイルでも表示されますが、CSVファイル以外が選択されている場合は、次の
ステップに進むことができません。選択したファイルが読取専用の場合も、同様
に次のステップに進むことができません。
ナビゲーション #3/6: 取り込み対象期間の設定
取り込み対象期間の開始日を-1〜366の間で設定します。この値は、過去何日分
まで取り込むかを意味します。終了日が設定された期間中にある予定は取り込み
対象となります。例えば設定値が7で、取り込みを行う日が4月10日とすると、4
月3日以降に終了する予定が取り込み対象です。設定値が-1の場合、対象期間は
限定されません。この設定は取り込み処理にかかる時間を節減するためのもので
す。したがって、設定期間を長くすると、それだけ取り込み処理に要する時間が
長くなりますので、注意が必要です。
ナビゲーション #4/6: 取り込み対象となるエントリ種類の選択
取り込みたいエントリの種類を少なくとも1種類選択します。anniversaryは同期
できません。
ナビゲーション #5/6: その他の設定
ここでは新規Agendaエントリのシンボル文字と、文字コード変換について設定し
ます。前者は、サイボウズのCSVファイルから予定を取り込む際に、Agendaのエ
ントリに付けるシンボル文字を設定します。何も設定されていないか、空白文字
の場合は、シンボル文字が付きません。
後者は取り込みの際に、文字コードの変換を行うか否かを設定します。Noneを選
んだ場合は変換を行いません。コード変換はShiftJISまたはEUC-JPから選択でき
ますが、UniFEPが導入されていない場合、および導入されているUniFEPが選択し
たコード変換をサポートしていない場合は警告を表示し、次に進むことができま
せん。
ナビゲーション #6/6: Psibouファイルの保存
最後にPsibouファイルの名前を設定します。ファイル名には ".001" のような3
桁の数字からなるサフィックスを付加しないでください。Psibouは3桁の数字か
らなるサフィックスを持ったバックアップファイルを作成します。
上記の設定が終ると新しいPsibouファイルが作成され、画面は最初の "Opening
Psibou file." のダイアログに戻ります。AgendaファイルおよびCSVファイルの場
所、これらのファイルの固有のID、環境設定はこの新しいPsibouファイルに保存さ
れます。これらの設定作業は、設定を変更したり、別の取り込みの組合せを作成し
ない限り、再び行う必要がありません。
6. 使用方法(日次処理)
作成したPsibouファイルを用いてAgendaファイルにサイボウズCSVファイルの予定を取
り込むには、以下の操作を行います。
6.1. Psionへの、CSVファイル転送
他システム上のサイボウズ予定表クライアントで、取り込みたい範囲の予定をCSV
ファイルに書き出します。そして、書き出したCSVファイルを、PsiWin等を用いて
Psion上に転送します。転送されたCSVファイルは、Psibouファイルを作成した時
と同じ場所に置く必要があります。
6.2. 取り込みの実行
Psibouファイルをタップするか、あるいはPsionのExtrasバーからPsibouアイコン
を選びます。Psibouファイルをタップした場合、すぐに取り込みが開始されます。
ExtrasバーからPsibouアイコンを選択した場合は、Psibouファイルを選択するダイ
アログが表示されます。ダイアログが表示されたら、Psibouファイルを選択して
[OK]ボタンをタップします。
7. 使用方法(詳細)
本章では、まだ説明していない幾つかの機能について説明します。
7.1. 既存の設定を変更する
最初のダイアログ "Opening Psibou file" でPsibouファイルが選択されている時
に、[Create/Edit...]ボタンをタップすると、選択されているPsibouファイルを編
集するか否かの確認が表示されます。変更を開始するには、[Edit]ボタンをタップ
します。すると、設定変更をナビゲートするためのダイアログが開始されます。そ
れらはPsibouファイルを新規作成する際のダイアログと似ています。
ナビゲーション #1/5: Agendaファイルの選択
このステップでは、Agendaファイルの場所およびファイル名を変更することがで
きます。ただし、AgendaファイルはPsibouファイルを作成した時のものと同じで
ある必要があります。異なるAgendaファイルが選択された場合は、"It seems to
be a different Agenda file." という警告、および、選択を変更してよいかを
確認するメッセージが表示されます。変更を承認した場合は次のステップに進む
ことができます。Agendaファイルの同一性を検査する方法は、IDエントリのテキ
ストをPsibouファイルに保存されたものと比較するものです。このIDエントリは
Psibouファイルの作成時にAgendaファイルへ挿入されたものです。これは1980年
1月1日の00:00のAppointmentエントリで、そのテキストは作成時の日付時刻から
生成したMD5ハッシュ値です。IDエントリの内部的な固有のID値および、書き込
まれている値は、Psibouファイルに保存されています。
なお、"It seems to be a different Agenda file." のダイアログ表示時に、ダ
イアログ下部に表示された "Do not verify calendar ID anymore." のチェック
ボックスにチェックした場合、これ以降Agendaファイルの同一性チェックは行わ
なくなります。
ナビゲーション #2/5: サイボウズCSVファイルの選択
このステップでは、サイボウズ予定表のCSVファイルの場所およびファイル名を
変更することができます。
ナビゲーション #3/5: 取り込み対象期間の設定
このステップはPsibouファイル作成時と同じです。5.2章を参照してください。
ナビゲーション #4/5: 取り込み対象となるエントリ種類の選択
このステップはPsibouファイル作成時と同じです。5.2章を参照してください。
ナビゲーション #5/5: その他の設定
このステップはPsibouファイル作成時と同じです。5.2章を参照してください。
Psibouファイル上書きの確認
このダイアログでは、変更した設定を保存するか破棄するかを選択します。選択
後、画面は最初のダイアログ "Opening Psibou file." に戻ります。
7.2. 詳細な設定
Psibouファイル作成または変更ナビゲーションの最後のステップに、[More...]と
いうボタンがあります。これをタップすると、詳細な設定が行えます。
ナビゲーション #1/3: 「プリセット文字列」と「場所」の区切り文字
サイボウズ予定表の予定および場所には「会議」「休暇」など、管理者が設定
した規定の文字列リストをプルダウンメニューで選択して入れることが可能です
が、Agendaに予定を取り込む際、この文字列とテキストボックスに入力した任意
の文字列を区切るための文字が前者です。設定していない場合は、二つの文字列
を区切り文字を狭まずに、直接連結します。なお、Psibouファイル作成時の初期
値には、":" が設定されています。
後者は件名と場所の区切り文字です。Agendaのエントリには場所の項目がありま
せんので、Psibouはサイボウズ予定表の「場所」の値をAgendaの件名の中に挿入
してます。件名本体と場所を区別するため、ここで定義した区切り文字を用いま
す。この設定を変更すると、Agendaのエントリに既に挿入されている場所の文字
列が識別できなくなるため、注意が必要です。なお、Psibouファイル作成時の初
期値は設定されません。
ナビゲーション #2/3: 取り込み対象期間外の予定に関する動作
長期に亘って取り込みを行っていると、次第にファイルが肥大して行きます。
ディスク容量を節約するため、Psibouでは取り込み対象期間外のエントリ状態や
Agendaファイル内のエントリを、自動的に削除することが可能です。取り込み対
象期間外のエントリ状態を削除すればPsibouファイルの、取り込み対象期間外の
エントリ自体を削除すればAgendaファイルの肥大化を防ぐことができます。
ナビゲーション #3/3: 埋め込みオブジェクトのあるAgendaエントリに関する動作
PsibouはSketchやSheetなどの埋め込みオブジェクトのあるAgendaのエントリを
更新することができません。これらのエントリがPsibou側で更新された場合は、
元のエントリを埋め込みオブジェクトを除いて複写し、複写したエントリを更新
します。そして、このダイアログの設定に基いて元のエントリを削除または残し
ます。"Backup original" を選択した場合、元のエントリは削除されませんが、
サイボウズ側の予定との紐付けは抹消されます。
最後のダイアログで[Commit]をタップすると変更が確定し、画面はPsibouファイル
の作成または編集ナビゲーションの最後のステップに戻ります。詳細設定の変更内
容は、基本設定の保存時に、共にPsibouファイルに保存されます。
7.3. 共通設定
取り込みの個別設定はPsibouファイルに保存されますが、アプリケーション全体で
共通の設定は、"Psibou.ini"という設定ファイル内に定義されます。"Psibou.ini"
ファイルは "C:\System\Apps\Psibou" ディレクトリの下にあるテキストファイル
で、以下の設定が "キー=値" の形式で定義されています。
キー: backup
データ形式: 10進整数
値の範囲: -999 〜 999
省略時値: -1
意味:
バックアップ世代数の最大値。各ファイルはこの設定の絶対値の世代までバック
アップされます。バックアップされたファイルは ".001" のような昇順の数のサ
フィックスが付きます。数値は001から始まり、同名のファイルがあると指定さ
れた世代まで増分されます。この項目の設定値が0の場合は、バックアップを作
成しません。値が正数の場合、最大の世代番号のファイルが既に存在した時に、
代わりのファイル名をたずねます。負数の場合は、最大の世代番号のファイルが
あっても無条件に上書きします。
キー: lastUsedFile
データ形式: 文字列
値の範囲: 255文字以内
省略時値: なし
意味:
最後に使用したPsibouファイルのパスです。この項目はアプリケーション終了時
に自動的に更新されます。
キー: alwaysShowDialog
データ形式: 10進整数
値の範囲: 0 または 1
省略時値: 0
意味:
値が1の場合は、Psibouファイルのアイコンをタップしてアプリケーションを起
動した時でも、最初のPsibouファイル選択ダイアログを表示します。0の場合は
ダイアログを表示することなく、すぐに取り込みを開始します。
キー: logging
データ形式: 10進整数
値の範囲: 0 または 1
省略時値: 1
意味:
値が1の場合、取り込み処理中にテキスト形式のログをファイルに出力します。
ログファイルは "C:\System\Apps\Psibou\Psibou.log" に置かれ、取り込みを実
行する毎に上書きされます。
キー: notVerifyUid
データ形式: 10進整数
値の範囲: 0 または 1
省略時値: 0
意味:
値が1の場合、Agendaファイルが、Psibouファイル作成時のものと同一であるか
の検査を行いません。この項目はAgendaファイル内のIDエントリが異なる場合
に表示されるダイアログで、"Do not verify calendar ID anymore." をチェッ
クすると、自動的に1に設定されます。
8. 注意制限事項
8.1. サイボウズ予定表のCSVファイル取り込み時に漢字コードの変換を行う場合、変
換後の文字列長が255バイトを超える文字列については、256文字以降を切り捨て
ます。その際、マルチバイト文字の境界についてのチェックは行いませんので、
場合によっては文字列の末端に、文字化けが発生する可能性があります。
8.2. 本プログラムでは、Agendaファイルの読み書きにAgenda2.opxを用いています。
そのため、"Synchronize with other agendas" のようにAgenda2.opxがサポート
していない項目は、同期処理によって失われることがあります。
8.3. ファイルサイズ節約のため、エントリの更新状態を調べる方法として、エントリ
の全データを比較する代りに、MD5値の比較を行っています。そのため、極めて
稀ながら、更新された筈のエントリが、更新されていないと判断されてしまうこ
とが有り得ます。
8.4. Agendaでは各エントリに対して、内部的な固有のIDを付けて管理しています。
Psibouではこれを利用してエントリを特定しているのですが、Agendaでエントリ
の削除後に新規エントリを追加すると、削除したエントリのIDが再利用されてし
まいます。このような場合に、Agenda側で追加したエントリが上書きされてしま
わないよう、取り込み時にAgenda側のエントリが更新されていたら、対応するサ
イボウズ側のエントリを新に追加し直します。その結果、Agenda側でエントリが
重複する場合があります。
8.5. 取り込み処理の際に、過去にAgendaに取り込んだサイボウズの予定エントリが、
取り込み元のCSVファイルに無い場合、そのエントリはサイボウズ側で削除され
たと見なし、Agendaファイルに取り込んだ対応するエントリを削除します。しか
し、サイボウズで予定をCSVファイルに書き出す際、書き出し期間の開始日の初
期値が、書き出し当日の日付になっているため、初期値を変更し忘れて出力し、
そのままAgendaへの取り込み処理を行ってしまうと、既に取り込まれている過去
のエントリをすべて削除してしまう恐れがあります。このような事態を防止する
ため、過去のエントリはCSVファイルに無くても削除されません。
なお、取り込み対象期間より古いAgendaエントリを削除する設定がされている場
合、対象期間外のエントリについては、CSVファイル中にあるか否かにかかわら
ず削除されます。
8.6. サイボウズの個々の予定エントリには識別情報としてIDが付いていますが、繰り
返しの予定には、すべて同じIDが振られてしまいます。そこで本プログラムでは
サイボウズの予定エントリを識別するために、IDと日付を足した文字列を使用し
ます。そのため一度取り込んだ予定の日付をサイボウズ側で変更すると、別の予
定と認識され、変更ではなく削除+追加となります。
9.7 サイボウズでは午前0時0分に対して、0:00 と 24:00 の二通りの表記方法が存在
しますが、Agendaは 24:00 を受け入れません。PsibouはサイボウズのCSVファイ
ル中に 24:00 の表記を検出した場合、23:59 に変更します。
9. 著作権・配布条件等
9.1. 本プログラム、および一緒に配布される関連の生成物(ソースコード、アイコン、
文書等)の著作権は、Symbian社の所有であるAgenda2.opxを除いて、作者に属し
ます。
9.2. 本プログラムは著作権者によって、無償で配布されます。本プログラムの使用に
あたっては、商用、非商用を問わず、いかなる費用も発生しません。
9.3. 本プログラムを使用したことによる、身体的、精神的、物的、金銭的、社会的、
宗教的、政治的、および他のあらゆる損害に対し、作者は一切、賠償責任を負い
ません。本プログラムの使用にあたっては、上に述べたようなあらゆる損害に対
して賠償を受ける権利を放棄しなくてはなりません。
9.4. 本プログラムを入手したすべての人は、Symbian社より割り当てられた正規のア
プリケーションUIDを除き、著作権者の承諾無しに、本プログラムのソースコー
ドの全部または一部を自身の著作物のために再利用すること、および商用、非商
用を問わずその著作物を配布することが可能です。
9.5. 本プログラムのソースコードを再利用して自身の著作物を作成する人は、本プロ
グラムに関して他の人が所有する権利である、自由な配布、自由な使用、自由な
再配布、自由な再利用のいずれをも制限してはなりません。
9.6. 本章において上に掲げたすべての条項は、本プログラムを使用するか、あるいは
ソースコードを再利用した時点で、同意したものとみなします。
10. 変更履歴
Ver.1.00 (2004.08.26):
・新規公開。
Ver.1.01 (2004.09.18):
・サイボウズのCSVファイル中に24:00の表記があると、異常終了してしまう不具合
を修正。
Ver.1.01 (2004.09.18):
・サイボウズのCSVファイル中に24:00の表記があると、異常終了してしまう不具合
を修正。
Ver.1.02 (2005.08.18):
・Psibouファイルのパスにスペース文字が含まれていると、Psibouファイルのアク
セスに失敗する不具合を修正。
・Agendaファイルの同一性検査を行わない設定を可能にした。