83
オープン技術特論 国際的な相互運用とオープン技術 - 日時と文字 - 山口琢 v2 2015-01-08 v1.2 2013-10-24 20150108 オープン技術特論 山口琢 1

国際的な相互運用とオープン技術 - 日時と文字 -

Embed Size (px)

Citation preview

オープン技術特論 国際的な相互運用とオープン技術

- 日時と文字 -

山口琢 v2 2015-01-08 v1.2 2013-10-24

2015-­‐01-­‐08  オープン技術特論 山口琢 1

自己紹介: 山口琢 •  職歴

–  株式会社日立製作所

–  株式会社ジャストシステム

–  公立はこだて未来大学大学院システム情報科学研究科(博士課程後期、研究生)

•  分野 –  文章、文書処理

文書交換のためのデータ形式変換、自動レイアウト、検索、文書管理、 テキストマイニング、編集

–  スケジュール管理、年表

•  職種 –  学生、企画、開発、エヴァンジェリスト、コンサルティング

2015-­‐01-­‐08  オープン技術特論 山口琢 2

目的 •  将来、ICTシステムを設計するとき、または

ICTシステムの不具合に遭遇したとき、 「国際的な相互運用性」という観点を思い出せる/に気づく。

なぜならば •  相互運用性は軽視されがち、気づかれにくい •  後から実現するより最初から作り込む方が容易 そのために •  身近な日時・文字処理をとりあげます。 •  ハンズ・オン

2015-­‐01-­‐08  オープン技術特論 山口琢 3

スライドの一部は、あえて、 昨年度のままにしてあります。

この1年あまりの間に OS、アプリのアップデートがありました。

何か変化があったかもしれません、 確かめてみましょう。

2015-­‐01-­‐08  オープン技術特論   山口琢   4  

アジェンダ

•  相互運用性とオープンスタンダード

•  日時

•  文字

2015-­‐01-­‐08  オープン技術特論 山口琢 5

アンケート (^^)/ •  OSは?

Windows、Mac、…

•  ブラウザは? Firefox、Chrome、Opera、Internet Explorer、…

•  ワープロは? Microsoft Word、OpenOffice、Pages、…

↑可能ならば意識して複数を使った方がよい

2015-­‐01-­‐08  オープン技術特論 山口琢 6

相互運用性とオープンスタンダード Interoperability & Open Standard

2015-­‐01-­‐08  オープン技術特論   山口琢 7

2015-­‐01-­‐08  オープン技術特論 山口琢

生活・仕事

システム

8

2015-­‐01-­‐08  オープン技術特論 山口琢

生活・仕事

モデル

システム

9

2015-­‐01-­‐08  オープン技術特論 山口琢

IT

生活・仕事

モデル

システム

10

複数のシステム

2015-­‐01-­‐08  オープン技術特論 山口琢

生活・仕事

モデル

システム

モデル

システム

11

異なる文化

2015-­‐01-­‐08  オープン技術特論 山口琢

モデル

システム

モデル

システム

12

生活・仕事 生活・仕事

相互運用性 - interoperability

2015-­‐01-­‐08  オープン技術特論 山口琢

データ交換 など

情報交換

生活・仕事

モデル

システム

モデル

システム

13

相互運用性 - 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

生活・仕事 生活・仕事 協力…

相互運用を実現するパターン

•  できてしまってるものを、つなげる

•  最初から、つながるように作る

2015-­‐01-­‐08  オープン技術特論 山口琢 18

できてしまってるものをつなげる

2015-­‐01-­‐08  オープン技術特論 山口琢

システム システム

モデル モデル 標準(参照) モデル

変換 変換

19

生活・仕事 生活・仕事

•  職歴 – 株式会社日立製作所

← 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  オープン技術特論 山口琢

システム システム

日時 文字

26

生活・仕事 生活・仕事

日時

2015-­‐01-­‐08  オープン技術特論 山口琢 27

•  日時を扱うシステムは、 他システムとの相互運用性を 無視するのは難しい

•  無視しない: – 互換な範囲で作る

– どう異なるのか把握している

2015-­‐01-­‐08  オープン技術特論   山口琢   28  

誕生日とタイムゾーン

2015-­‐01-­‐08  オープン技術特論   山口琢 29

Googleカレンダーで実験

1.  1時間の予定「会議」を作成。開始・終了時刻を覚える。

2.  「設定」で現在の「タイムゾーン」を確認。 日本ですか?

3.  タイムゾーンを「太平洋時間」に設定して保存。 これサンフランシスコ。

4.  さっきの「会議」の開始・終了時刻を確認。

2015-­‐01-­‐08  オープン技術特論   山口琢 30

タイムゾーン変更 東京(UTC+9) → 太平洋時間(UTC-8、サマータイム)

2013-­‐10-­‐24  オープン技術特論   山口琢 31

続き: 終日の場合

1.  タイムゾーンを「東京」に戻す

2.  さっきの予定と同じ日に、 終日の予定「誕生日」を作成

3.  再度、タイムゾーンを「太平洋時間」に設定

4.  2つの予定の前後関係は?

2015-­‐01-­‐08  オープン技術特論   山口琢 32

どうなる?

•  Googleカレンダーではどうなると思う?

•  どうなって欲しい?

•  どうなるのが正しい?

2015-­‐01-­‐08  オープン技術特論   山口琢 33

2013-­‐10-­‐24  オープン技術特論   山口琢 34

東京

サンフランシスコ

「会議」と「誕生日」の 前後関係が変わった…

…ように見える

2015-­‐01-­‐08  オープン技術特論   山口琢 35

何が変わったのか?

•  「会議」の開始時刻は変わっていない 目盛りがずれてるだけで、同じ時刻を指している。

東京、サンフランシスコそれぞれにいる会議参加者は、 それぞれのスケジューラが示す時刻に席につけばよい。

•  むしろ「誕生日」が変わった…のか?

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つの  世界が同居している

日課と"FLOATING" DATE-TIME

2015-­‐01-­‐08  オープン技術特論   山口琢 41

2015-­‐01-­‐08  オープン技術特論 山口琢

生活・仕事

モデル

システム

42

毎朝、5時に散歩するのが日課です。  海外旅行しても、旅先で、日課を守りたい。

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  

?

iCalのfloating time zone機能

2015-­‐01-­‐08  オープン技術特論 山口琢 46

「環境設定」から ✓「時間帯のサポートを有効にする」

2015-­‐01-­‐08  オープン技術特論 山口琢 47

2つの連続したイベント

2015-­‐01-­‐08  オープン技術特論 山口琢 48

2015-­‐01-­‐08  オープン技術特論 山口琢 49

2015-­‐01-­‐08  オープン技術特論 山口琢 50

2015-­‐01-­‐08  オープン技術特論 山口琢 51

2015-­‐01-­‐08  オープン技術特論 山口琢 52

floating time zone

2015-­‐01-­‐08  オープン技術特論 山口琢

毎朝、5時に散歩するのが日課です。 海外旅行しても、旅先で、日課を守りたい。

iCal Googleカレンダー

iCalendar, IETF RFC 5545 "floating" date-time

53

? サポートしていないようだ

問題はどこに?

2015-­‐01-­‐08  オープン技術特論 山口琢 54

生活・仕事

モデル

システム

誕生日 日課

"floating" date-time

?

date

文字

2015-­‐01-­‐08  オープン技術特論 山口琢 55

「ä」の話

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

試す数が多いほどベター

CotEditor (テキストエディター)

違うと言ってる 2015-­‐01-­‐08  オープン技術特論 山口琢 59

mi (テキストエディター)

同じと言ってる 2015-­‐01-­‐08  オープン技術特論 山口琢 60

JavaScript (Chrome)

違うと言ってる 2015-­‐01-­‐08  オープン技術特論 山口琢 61

Python

違うと言ってる 2015-­‐01-­‐08  オープン技術特論 山口琢 62

PowerPoint for Mac 2011

同じと言ってる 2015-­‐01-­‐08  オープン技術特論 山口琢 63

結合文字

Pythonの続き

2015-­‐01-­‐08  オープン技術特論 山口琢 64

結合文字

•  Unicodeの特徴 •  2通りの「ä」

Pythonで見ると – u'\xe4' – u'a\u0308' ← 'a' + ''、""は結合用の文字

•  この2つを「違う」と言うソフトと「同じ」と言うソフトがある。

2015-­‐01-­‐08  オープン技術特論 山口琢 65

あれ?ということは、むしろ、 「同じ」と言ってるソフトはどうやっての?

normalization(正規化)

文字に限らず、いろいろなデータ処理で使われる

2015-­‐01-­‐08  オープン技術特論   山口琢   66  

Pythonの続き

Javaでは?Rubyでは?JavaScriptでは?… 2015-­‐01-­‐08  オープン技術特論 山口琢 67

そう言えば…

「会議」の開始時刻は変わっていない

日時で、正規化に相当する処理は?

2015-­‐01-­‐08  オープン技術特論   山口琢   68  

「が」の話

2015-­‐01-­‐08  オープン技術特論 山口琢 69

「が」と「か」

•  yamahigeのツイートからコピーして取得 •  同じ文字列?

•  それぞれ何文字?

Microsoft Word for Mac 2011

違うと言ってる

2015-­‐01-­‐08  オープン技術特論 山口琢 70

でも、

ひらがなの結合文字って、

めったに遭遇しないんじゃ?

2015-­‐01-­‐08  オープン技術特論   山口琢   71  

「新しいフォルダ」

Mac OS X

Windows

2015-­‐01-­‐08  オープン技術特論 山口琢 72

…え?じゃぁDropboxって…?

「ファイル共有」の相互運用性

2015-­‐01-­‐08  オープン技術特論   山口琢   73  

「ä」や「が」の保存

2015-­‐01-­‐08  オープン技術特論 山口琢

文字

74

講師 受講生

出題   比較  

「ä」や「が」の保存

2015-­‐01-­‐08  オープン技術特論 山口琢 75

コピー

POST  

ペースト

GET   コピー ペースト

比較  検索

「ä」や「が」の保存

2015-­‐01-­‐08  オープン技術特論 山口琢 76

コピー

POST  

ペースト

GET   コピー ペースト

比較  検索

ここまでは2種類の「ä」が保たれていた。  

「ä」や「が」の保存

2015-­‐01-­‐08  オープン技術特論 山口琢 77

コピー

POST  

ペースト

GET   コピー ペースト

比較  検索

Firefoxは、クリップボードに積むときに、正規化しているようだ。  Firefoxだと、別の課題提供方法が必要  (^^;  

コピー

日時と文字の相互運用性

2015-­‐01-­‐08  オープン技術特論 山口琢

日時: ISO、IETF、W3C 文字: UNICODE

78

生活・仕事 検索

比較

会議のアポ

抄録の文字数制限

Happy Birthday!

飛行機の乗り継ぎ

毎朝の散歩

まとめ

「相互運用性」とオープン技術

•  会議の開始時刻

•  誕生日

•  結合文字

2015-­‐01-­‐08  オープン技術特論 山口琢 79

生活・仕事

モデル

システム

まとめ

やったこと •  身近な日時・文字処理をとりあげました。 •  ハンズ・オンを行いました。 今後 •  将来、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

2015-­‐01-­‐08  オープン技術特論 山口琢

生活・仕事

モデル

システム

83