自己紹介: 山口琢 • 職歴
– 株式会社日立製作所
– 株式会社ジャストシステム
– 公立はこだて未来大学大学院システム情報科学研究科(博士課程後期、研究生)
• 分野 – 文章、文書処理
文書交換のためのデータ形式変換、自動レイアウト、検索、文書管理、 テキストマイニング、編集
– スケジュール管理、年表
• 職種 – 学生、企画、開発、エヴァンジェリスト、コンサルティング
2015-‐01-‐08 オープン技術特論 山口琢 2
目的 • 将来、ICTシステムを設計するとき、または
ICTシステムの不具合に遭遇したとき、 「国際的な相互運用性」という観点を思い出せる/に気づく。
なぜならば • 相互運用性は軽視されがち、気づかれにくい • 後から実現するより最初から作り込む方が容易 そのために • 身近な日時・文字処理をとりあげます。 • ハンズ・オン
2015-‐01-‐08 オープン技術特論 山口琢 3
スライドの一部は、あえて、 昨年度のままにしてあります。
この1年あまりの間に OS、アプリのアップデートがありました。
何か変化があったかもしれません、 確かめてみましょう。
2015-‐01-‐08 オープン技術特論 山口琢 4
アンケート (^^)/ • OSは?
Windows、Mac、…
• ブラウザは? Firefox、Chrome、Opera、Internet Explorer、…
• ワープロは? Microsoft Word、OpenOffice、Pages、…
↑可能ならば意識して複数を使った方がよい
2015-‐01-‐08 オープン技術特論 山口琢 6
相互運用性 - interoperability
2015-‐01-‐08 オープン技術特論 山口琢
データ交換 など
情報交換 モデル
システム
モデル
システム
14
生活・仕事 生活・仕事 協力…
相互運用性 - interoperability
2015-‐01-‐08 オープン技術特論 山口琢
システムの相互運用性
生活・仕事
モデル
システム
モデル
システム
The capability to communicate, execute programs, or transfer data among various functional units in a manner that requires the user to have little or no knowledge of the unique characteristics of those units
ISO/IEC 2382-01, Information Technology Vocabulary, Fundamental Terms,
via Wikipedia
15
相互運用性 - interoperability
2015-‐01-‐08 オープン技術特論 山口琢
システムの相互運用性
生活・仕事
モデル
システム
モデル
システム
The capability 能力・性能 to communicate, execute programs, or transfer data 通信する、プログラムを実行する、データを送る among various functional units さまざまな機能的な単位の間で in a manner
方法で that requires the user to have little or no knowledge 利用者に知識を求めない of the unique characteristics of those units それら単位に固有の特徴に関する
ISO/IEC 2382-01, Information Technology Vocabulary, Fundamental Terms
16
相互運用性 - interoperability
2015-‐01-‐08 オープン技術特論 山口琢
communicate, execute
programs, or transfer data
情報交換 モデル
functional unit
モデル
functional unit
17
生活・仕事 生活・仕事 協力…
• 職歴 – 株式会社日立製作所
← INE '89 OSI/ODAによる文書交換接続実験
個別に動作してたシステム同士をつなげる実証実験
– 株式会社ジャストシステム
– はこだて未来大学大学院
2015-‐01-‐08 オープン技術特論 山口琢 20
最初から、つながるように作る
2015-‐01-‐08 オープン技術特論 山口琢
システム システム
Open Standard
21
生活・仕事 生活・仕事
Open Standardに 準拠して作る
Open Standardに 準拠して作る
• 職歴 – 株式会社日立製作所
– 株式会社ジャストシステム
– はこだて未来大学大学院
← LODチャレンジ 「最初から、つながるように作ろう」というハッカソン
• みなさん(の先輩) ← はこだてMap+
2015-‐01-‐08 オープン技術特論 山口琢 22
Open Standard
• 最近のトレンド – 迅速な開発・普及 – 覇権
• 関係者に必要な素養 – スーパーエンジニア – 英語 – 文化的な教養
2015-‐01-‐08 オープン技術特論 山口琢 23
2015-‐01-‐08 オープン技術特論 山口琢
生活・仕事
モデル
システム
24
生活・仕事
現在 将来
システム
ビジョナリー visionary
エヴァンジェリスト evangelist
Linked Open Dataがもたらす将来…とは?
2015-‐01-‐08 オープン技術特論 山口琢
はこだて… ヨコハマ・アート・LOD
オープンライセンス W3C標準: URI、RDF、SPARQL
25
データ交換 など
生活・仕事 生活・仕事 ……?
• 日時を扱うシステムは、 他システムとの相互運用性を 無視するのは難しい
• 無視しない: – 互換な範囲で作る
– どう異なるのか把握している
2015-‐01-‐08 オープン技術特論 山口琢 28
Googleカレンダーで実験
1. 1時間の予定「会議」を作成。開始・終了時刻を覚える。
2. 「設定」で現在の「タイムゾーン」を確認。 日本ですか?
3. タイムゾーンを「太平洋時間」に設定して保存。 これサンフランシスコ。
4. さっきの「会議」の開始・終了時刻を確認。
2015-‐01-‐08 オープン技術特論 山口琢 30
続き: 終日の場合
1. タイムゾーンを「東京」に戻す
2. さっきの予定と同じ日に、 終日の予定「誕生日」を作成
3. 再度、タイムゾーンを「太平洋時間」に設定
4. 2つの予定の前後関係は?
2015-‐01-‐08 オープン技術特論 山口琢 32
何が変わったのか?
• 「会議」の開始時刻は変わっていない 目盛りがずれてるだけで、同じ時刻を指している。
東京、サンフランシスコそれぞれにいる会議参加者は、 それぞれのスケジューラが示す時刻に席につけばよい。
• むしろ「誕生日」が変わった…のか?
2015-‐01-‐08 オープン技術特論 山口琢 36
誕生日おめでとう! 東京
10/24 13:00
会議を始めよう!
サンフランシスコ
10/23 21:00
(サマータイム中)
会議を始めよう!
誕生日おめ…でとう?
2015-‐01-‐08 オープン技術特論 山口琢 37
10/24が誕生日
あるいは逆だったら… 東京
10/24 13:00
会議を始めよう!
誕生日おめ…でとう?
サンフランシスコ
10/23 21:00
(サマータイム中)
会議を始めよう!
2015-‐01-‐08 オープン技術特論 山口琢 38
10/24が誕生日
「誕生日」の相互運用性
2015-‐01-‐08 オープン技術特論 山口琢 39
データ交換
日付・日時
スケジューラー スケジューラー
東京 サンフランシスコ
お誕生日 おめでとう!
10/24が誕生日
IT どうなっていればよい?
日付(date)と日時(datetime)
dateとdatetimeは別世界 別世界の予定同士を 比較するときは要注意
終日の予定≠0時~翌日0時 6/10 終日 ≠ 6/10 00:00~6/11 00:00
なんのために注意? 「予定」を国際的に共有するため
2015-‐01-‐08 オープン技術特論 山口琢 40
date世界
dateFme世界
カレンダーは2つの 世界が同居している
iCalendar: 3.3.5. Date-Time 19980118T230000
DATE-TIME values of this type are said to be "floating" and are not bound to any time zone in particular. They are used to represent the same hour, minute, and second value regardless of which time zone is currently being observed. For example, an event can be defined that indicates that an individual will be busy from 11:00 AM to 1:00 PM every day, no matter which time zone the person is in. In these cases, a local time can be specified. The recipient of an iCalendar object with a property value consisting of a local time, without any relative time zone information, SHOULD interpret the value as being fixed to whatever time zone the "ATTENDEE" is in at any given moment. This means that two "Attendees", in different time zones, receiving the same event definition as a floating time, may be participating in the event at different actual times. Floating time SHOULD only be used where that is the reasonable behavior. 2015-‐01-‐08 オープン技術特論 山口琢 43
2015-‐01-‐08 オープン技術特論 山口琢
生活・仕事
モデル
システム
44
毎朝、5時に散歩するのが日課です。 海外旅行しても、旅先で、日課を守りたい。
DATE-‐TIME values of this type are said to be "floaFng" and are not bound to any Fme zone in parFcular. They are used to represent the same hour, minute, and second value regardless of which Fme zone is currently being observed.
iCalendar, IETF RFC 5545
2015-‐01-‐08 オープン技術特論 山口琢
生活・仕事
モデル
システム
45
毎朝、5時に散歩するのが日課です。 海外旅行しても、旅先で、日課を守りたい。
DATE-‐TIME values of this type are said to be "floaFng" and are not bound to any Fme zone in parFcular. They are used to represent the same hour, minute, and second value regardless of which Fme zone is currently being observed.
iCalendar, IETF RFC 5545
?
floating time zone
2015-‐01-‐08 オープン技術特論 山口琢
毎朝、5時に散歩するのが日課です。 海外旅行しても、旅先で、日課を守りたい。
iCal Googleカレンダー
iCalendar, IETF RFC 5545 "floating" date-time
53
? サポートしていないようだ
「ä」の話
2015-‐01-‐08 オープン技術特論 山口琢 56
「ä」と「a」 • yamahigeのツイートからコピーして取得
– できれば、Firefoxは使わない…理由は後述
• 同じ文字列? • それぞれ何文字?
調べてみる
いろいろなツール /usr/bin/diff
Python、JavaScript
Word、PowerPoint
テキストエディット
などなど…
いろいろな方法 検索
文書比較
文字の長さ、文字数
などなど…
2015-‐01-‐08 オープン技術特論 山口琢 57
調べてみる
いろいろなツール /usr/bin/diff
Python、JavaScript
Word、PowerPoint
テキストエディット
などなど…
いろいろな方法 検索
文書比較
文字の長さ、文字数
などなど…
2015-‐01-‐08 オープン技術特論 山口琢 58
試す数が多いほどベター
結合文字
• Unicodeの特徴 • 2通りの「ä」
Pythonで見ると – u'\xe4' – u'a\u0308' ← 'a' + ''、""は結合用の文字
• この2つを「違う」と言うソフトと「同じ」と言うソフトがある。
2015-‐01-‐08 オープン技術特論 山口琢 65
あれ?ということは、むしろ、 「同じ」と言ってるソフトはどうやっての?
↓
normalization(正規化)
文字に限らず、いろいろなデータ処理で使われる
2015-‐01-‐08 オープン技術特論 山口琢 66
「ä」や「が」の保存
2015-‐01-‐08 オープン技術特論 山口琢 77
コピー
POST
ペースト
GET コピー ペースト
比較 検索
Firefoxは、クリップボードに積むときに、正規化しているようだ。 Firefoxだと、別の課題提供方法が必要 (^^;
コピー
日時と文字の相互運用性
2015-‐01-‐08 オープン技術特論 山口琢
日時: ISO、IETF、W3C 文字: UNICODE
78
生活・仕事 検索
比較
会議のアポ
抄録の文字数制限
Happy Birthday!
飛行機の乗り継ぎ
毎朝の散歩
まとめ
やったこと • 身近な日時・文字処理をとりあげました。 • ハンズ・オンを行いました。 今後 • 将来、ICTシステムを設計するとき、または
ICTシステムの不具合に遭遇したとき、 「国際的な相互運用性」という観点を思い出してください。
• 各論・詳細の勉強は、次の参考文献で。
2015-‐01-‐08 オープン技術特論 山口琢 80
参考文献: 日時
Internet Engineering Task Force (IETF)、"Internet Calendaring and Scheduling Core Object Specification (iCalendar) RFC 5545"
http://tools.ietf.org/html/rfc5545
168ページ
他に…あまりない – プログラミング言語の解説書、解説記事
– "floating time zone"が説明されていることが目安
2015-‐01-‐08 オープン技術特論 山口琢 81
参考文献: 文字 小林龍生、"ユニコード戦記 ─文字符号の国際標準化バトル"、東京電機大学出版局 (2011/6/10)
矢野啓介、"プログラマのための文字コード技術入門 "、技術評論社 (2010/2/18)
2015-‐01-‐08 オープン技術特論 山口琢 82