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

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

Upload: taku-yamaguchi

Post on 07-Dec-2014

355 views

Category:

Technology


2 download

DESCRIPTION

オープン技術特論、2013-10-24、@はこだて未来大学 2013-10-24 v1.1 2013-10-25 v1.2 口頭説明などを追記

TRANSCRIPT

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

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

山口琢

v1.2 2013-10-24

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

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

山口琢 •  職歴

–  株式会社日立製作所

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

–  はこだて未来大学大学院博士課程(後期)

•  分野 –  文章、文書処理

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

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

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

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

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

アジェンダ

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

•  日時

•  文字

•  ハンズオン(Hands-on)

•  技術資料は英語で

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

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

狙い

「そういうポイントがあるんだ!」 – これまでの研究・開発の見直し

– これからの見積・設計に反映

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

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

アンケート (^^)/

•  OSは? Windows、Mac、…

•  ブラウザは? Firefox、Chrome、Opera、Internet Explorer、… ← 意識して複数を使った方がよい

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

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

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

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

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

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

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

生活・仕事

モデル

システム

7

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

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

IT

生活・仕事

モデル

システム

8

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

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

生活・仕事

モデル

システム

9

シナリオ 要求定義 …などなど

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

複数のシステム

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

生活・仕事

モデル

システム

モデル

システム

10

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

異なる文化

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

モデル

システム

モデル

システム

11

生活・仕事 生活・仕事

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

相互運用性 - interoperability

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

データ交換 など

情報交換

生活・仕事

モデル

システム

モデル

システム

12

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

相互運用性 - interoperability

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

データ交換 など

情報交換 モデル

システム

モデル

システム

13

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

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

相互運用性 - interoperability

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

システムの相互運用性

生活・仕事

モデル

システム

モデル

システム

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

14

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

Interoperability

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

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

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

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

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

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

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

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

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

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

生活・仕事

システム システム

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

変換 変換

17

生活・仕事 生活・仕事

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

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

← INE '89 OSI/ODAによる文書交換接続実験

個別に動作してたシステム同士をつなげる実証実験

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

– はこだて未来大学大学院博士課程(後期)

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

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

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

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

生活・仕事

システム システム

Open Standard

19

Open  Standardに  準拠して作る  

Open  Standardに  準拠して作る  

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

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

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

システム システム

Open Standard

20

生活・仕事 生活・仕事

Open  Standardに  準拠して作る  

Open  Standardに  準拠して作る  

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

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

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

– はこだて未来大学大学院博士課程(後期)

← LODチャレンジ 「最初から、つながるように作ろう」というハッカソン

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

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

Open Standard

•  最近のトレンド – 迅速な開発・普及 – 覇権

•  関係者に必要な素養 – スーパーエンジニア – 英語 – 文化的な教養

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

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

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

生活・仕事

モデル

システム

23

生活・仕事

現在 将来

システム

ビジョナリー  visionary

エヴァンジェリスト  evangelist

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

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

生活・仕事

モデル

システム

24

生活・仕事

現在 将来

システム

ビジョナリー  visionary

小林龍生(UNICODE、EPUB)  村田真(XML、EPUB)  樋浦秀樹(国際化、UNICODE)    米持幸寿(クラウド)  今城哲二(COBOL国際化)  大場みち子(SOA)    などなど…  

エヴァンジェリスト  evangelist

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

Linked Open Dataがもたらす将来…とは?

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

はこだて… ヨコハマ・アート・LOD

オープンライセンス W3C標準: URI、RDF、SPARQL

25

データ交換 など

生活・仕事 生活・仕事 ……?

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

では、日時と文字の話を…

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

システム システム

日時 文字

26

生活・仕事 生活・仕事

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

日時

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

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

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

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

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

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

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

誕生日とタイムゾーン

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

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

Googleカレンダーで実験

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

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

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

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

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

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

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

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

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

続き: 終日の場合

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

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

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

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

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

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

どうなる?

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

•  …というか、どうなって欲しい?

•  そもそも、どうなるのが正しい?

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

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

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

東京

サンフランシスコ

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

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

…ように見える

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

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

何が変わったのか?

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

それぞれのスケジューラが示す時刻に席につけばよい。

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

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

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

誕生日おめでとう! 東京

10/24 13:00

会議を始めよう!

サンフランシスコ

10/23 21:00

(サマータイム中)

会議を始めよう!

誕生日おめ…でとう?

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

10/24が誕生日

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

あるいは逆だったら… 東京

10/24 13:00

会議を始めよう!

誕生日おめ…でとう?

サンフランシスコ

10/23 21:00

(サマータイム中)

会議を始めよう!

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

10/24が誕生日

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

日付(date)と日時(datetime)

dateとdatetimeは別世界 別世界の予定同士を 比較するときは要注意

終日の予定≠0時~翌日0時 6/10 終日 ≠ 6/10 00:00~6/11 00:00

なんのために注意? 「予定」を国際的に共有するため

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

date世界

dateNme世界

カレンダーは2つの  世界が同居している

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

日課と"FLOATING" DATE-TIME

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

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

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

生活・仕事

モデル

システム

41

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

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

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. 2013-­‐10-­‐24  オープン技術特論   山口琢 42

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

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

生活・仕事

モデル

システム

43

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

DATE-­‐TIME  values  of  this  type  are  said  to  be  "floaNng"  and  are  not  bound  to  any  Nme  zone  in  parNcular.    They  are  used  to  represent  the  same  hour,  minute,  and  second  value  regardless  of  which  Nme  zone  is  currently  being  observed.      

iCalendar,  IETF  RFC  5545  

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

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

生活・仕事

モデル

システム

44

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

DATE-­‐TIME  values  of  this  type  are  said  to  be  "floaNng"  and  are  not  bound  to  any  Nme  zone  in  parNcular.    They  are  used  to  represent  the  same  hour,  minute,  and  second  value  regardless  of  which  Nme  zone  is  currently  being  observed.      

iCalendar,  IETF  RFC  5545  

?

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

iCalのfloating time zone機能

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

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

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

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

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

2つの連続したイベント

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

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

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

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

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

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

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

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

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

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

floating time zone

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

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

iCal Googleカレンダー

iCalendar, IETF RFC 5545 "floating" date-time

52

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

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

問題はどこに?

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

生活・仕事

モデル

システム

誕生日とは ? 日課

"floating" date-time

?

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

文字

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

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

「ä」の話

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

「ä」と「ä」

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

•  それぞれ何文字?

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

調べてみる

いろいろなツール /usr/bin/diff

Python、JavaScript

Word、PowerPoint

テキストエディット

などなど…

いろいろな方法 検索

文書比較

文字の長さ、文字数

などなど…

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

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

調べてみる

いろいろなツール /usr/bin/diff

Python、JavaScript

Word、PowerPoint

テキストエディット

などなど…

いろいろな方法 検索

文書比較

文字の長さ、文字数

などなど…

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

試す数が多いほどベター

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

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

違うと言ってる 2013-­‐10-­‐24  オープン技術特論 山口琢 58

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

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

同じと言ってる 2013-­‐10-­‐24  オープン技術特論 山口琢 59

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

JavaScript (Chrome)

違うと言ってる 2013-­‐10-­‐24  オープン技術特論 山口琢 60

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

Python

違うと言ってる 2013-­‐10-­‐24  オープン技術特論 山口琢 61

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

PowerPoint for Mac 2011

同じと言ってる 2013-­‐10-­‐24  オープン技術特論 山口琢 62

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

結合文字

Pythonの続き

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

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

結合文字

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

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

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

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

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

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

normalization(正規化)

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

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

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

Pythonの続き

Javaでは?Rubyでは?JavaScriptでは?… 2013-­‐10-­‐24  オープン技術特論 山口琢 66

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

そう言えば…

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

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

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

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

「が」の話

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

「が」と「が」

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

•  それぞれ何文字?

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

Microsoft Word for Mac 2011

違うと言ってる

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

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

でも、

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

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

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

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

「新しいフォルダ」

Mac OS X

Windows

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

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

…え?じゃぁDropboxって…?

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

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

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

「ä」や「が」の保存

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

コピー

POST  

ペースト

GET   コピー ペースト

比較  検索

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

「ä」や「が」の保存

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

コピー

POST  

ペースト

GET   コピー ペースト

比較  検索

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

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

「ä」や「が」の保存

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

コピー

POST  

ペースト

GET   コピー ペースト

比較  検索

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

コピー

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

日時と文字の相互運用性

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

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

76

生活・仕事 検索

比較

会議のアポ

抄録の文字数制限

Happy Birthday!

飛行機の乗り継ぎ

毎朝の散歩

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

まとめ

「同じ」とモデリング

•  会議の開始時刻

•  誕生日

•  結合文字

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

生活・仕事

モデル

システム

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

狙い(再) 「そういうポイントがあるんだ!」

– これまでの研究・開発の見直し

– これからの見積・設計に反映

•  「何かがおかしい」と感じたとき、 今日の話も思い出してください。

•  各論・詳細の勉強は、次の参考文献で。 2013-­‐10-­‐24  オープン技術特論 山口琢 78

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

参考文献: 日時

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"が説明されていることが目安

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

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

参考文献: 文字 小林龍生、"ユニコード戦記 ─文字符号の国際標準化バトル"、東京電機大学出版局 (2011/6/10)

矢野啓介、"プログラマのための文字コード技術入門 "、技術評論社 (2010/2/18)

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

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

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

生活・仕事

モデル

システム

81