1 00:00:00,560 --> 00:00:03,280 このセッションでは Pharo が何なのかを見ていきましょう。 2 00:00:03,680 --> 00:00:06,080 Pharo は純粋なオブジェクト指向言語です。 3 00:00:06,440 --> 00:00:10,720 そしてまた、IDE でもあります。 つまり、統合開発環境です。 4 00:00:11,080 --> 00:00:14,040 Pharo は Smalltalk にインスパイアされました。 Smalltalk は Pharo の精神的な父親です。 5 00:00:14,200 --> 00:00:18,520 Pharo はプログラムすることが楽しくなる パワフルでエレガントな言語です。 6 00:00:18,680 --> 00:00:23,320 Pharo で色々なことをする人たちの 素晴らしいコミュニティがあります。 7 00:00:23,480 --> 00:00:27,480 ビデオを通してこのコースで教えたいことは 8 00:00:27,640 --> 00:00:30,960 物事を進めながらスクリプトを書くことができる ライブなシステムだということです。 9 00:00:31,600 --> 00:00:36,240 Pharo を MIT ライセンスで持ち出して やりたいことをやることができます。 10 00:00:36,880 --> 00:00:41,760 Pharo がエレガントだというのは そう主張する根拠があります。 11 00:00:42,000 --> 00:00:44,160 構文はハガキに収まるサイズなのです。 12 00:00:44,320 --> 00:00:46,840 シンプルでパワフルなオブジェクトモデルは 13 00:00:47,000 --> 00:00:49,080 4 行しか要しません。 お見せしましょう… 14 00:00:49,920 --> 00:00:52,800 このスライドには Pharo の全構文があります。 15 00:00:52,960 --> 00:00:55,120 全構文というのは つまり、何も残さずということです。 16 00:00:55,280 --> 00:01:00,840 このスライドを読みさえすれば構文を 理解できるということではありません。 17 00:01:01,000 --> 00:01:03,840 何回かのセッションを通して 18 00:01:04,000 --> 00:01:07,640 構文がどう構成されているかを 理解する手助けをしていきます。 19 00:01:07,800 --> 00:01:11,120 しかし、このスライドを見れば 何を学ばなければならないかわかるでしょう。 20 00:01:11,280 --> 00:01:14,320 構文はこれ以外には何もないのです。 21 00:01:14,560 --> 00:01:17,960 同様に、オブジェクトモデルも このスライドにまとめられています。 22 00:01:18,120 --> 00:01:20,520 全てのものが動的に型を付けられていて 23 00:01:20,680 --> 00:01:22,840 全てのものがクラスのインスタンス としてのオブジェクトです。 24 00:01:23,000 --> 00:01:27,000 全てのメソッドは public で virtual で 全ての属性は protected です。 25 00:01:27,160 --> 00:01:28,640 そして単一継承です。 26 00:01:28,800 --> 00:01:33,520 ボクシングやプリミティブ型や 非プリミティブ型もなく 27 00:01:33,680 --> 00:01:36,120 総称型もありません。などなどです。 28 00:01:36,280 --> 00:01:37,160 これで全てです。 29 00:01:37,320 --> 00:01:39,960 Pharo の構文とモデルを見ましたが 30 00:01:40,120 --> 00:01:41,720 あとでまた戻ってきます。 31 00:01:41,880 --> 00:01:45,960 これでシステムの複雑度がわかるでしょう。 32 00:01:46,840 --> 00:01:50,200 Pharo は全て Pharo 自身で書かれている ということを理解してください。 33 00:01:50,360 --> 00:01:54,160 Pharo とはどういう意味でしょう? それは、文字列や文字や 34 00:01:54,320 --> 00:01:58,000 真偽値や IDE やコンパイラやソケット等々 35 00:01:58,160 --> 00:02:00,040 全てのものが Pharo で書かれている ということです。 36 00:02:00,200 --> 00:02:05,600 つまりこの 1 ページの構文とモデルを理解すれば 37 00:02:05,760 --> 00:02:08,880 Pharo の全てにアクセスすることができる ということです。 38 00:02:09,120 --> 00:02:11,840 それは知的な興奮を呼ぶものです。 39 00:02:12,000 --> 00:02:15,040 この小さな入り口の扉は 40 00:02:15,200 --> 00:02:17,080 巨大な世界に繋がっているのですから。 41 00:02:17,680 --> 00:02:20,840 この Mooc のタイトルを見ると 42 00:02:21,080 --> 00:02:24,960 immersive (没入する)という 言葉が使われています。これは何でしょう? 43 00:02:25,200 --> 00:02:27,440 Pharo はブラックボックスではないのです。 44 00:02:27,600 --> 00:02:30,280 システム全体が完全に中身を見ることが できるようになっていて 45 00:02:30,440 --> 00:02:33,440 それを見てどう実装されているかが わかるのです。 46 00:02:33,600 --> 00:02:35,480 そして Pharo はリフレクティブです。 47 00:02:35,640 --> 00:02:37,840 Pharo はそれ自身の記述を内部に持っていて 48 00:02:38,000 --> 00:02:40,480 それを使って理解することができます。 49 00:02:40,640 --> 00:02:44,880 つまり、オブジェクトの世界に 完全に没入することができるのです。 50 00:02:45,040 --> 00:02:48,080 私はこれを水槽に例えます。 51 00:02:48,240 --> 00:02:51,240 言語というものは通常はブラックボックスです。 52 00:02:51,400 --> 00:02:54,920 Pharo はブラックボックスではありません。 水槽なのです。 53 00:02:55,080 --> 00:02:59,560 オブジェクトやシステム自身の構成物を 見ることができます。 54 00:02:59,720 --> 00:03:03,960 そして水槽の中に飛び込んで オブジェクトと対話することができます。 55 00:03:04,120 --> 00:03:06,520 Pharo と遊ぶように勧めているのは 56 00:03:06,680 --> 00:03:10,080 そういう意味なのです。 57 00:03:11,160 --> 00:03:14,920 ここで、没入型システムの例をお見せします。 58 00:03:15,680 --> 00:03:19,000 没入あるいは対話的と呼びます。 59 00:03:19,360 --> 00:03:24,120 左側にはコードがあり 右側にはコードが生成するものがあります。 60 00:03:24,800 --> 00:03:30,440 プログラマーがコンパイルキーを押すたびに 61 00:03:30,600 --> 00:03:33,880 スクリーンがブルーになり 結果が右側に現れます。 62 00:03:34,040 --> 00:03:36,680 彼は常にコード修正しながら 63 00:03:36,840 --> 00:03:40,360 何をやっているのかを 右側のウィンドウで見ています。 64 00:03:40,520 --> 00:03:43,800 システムのあらゆる要素に対して これと同じことができます。 65 00:03:43,960 --> 00:03:47,000 ソケットやファイルや 66 00:03:47,720 --> 00:03:51,240 この例のように 3D に対して。 ウェブサーバーでも同様です。 67 00:03:51,400 --> 00:03:55,000 ウェブサーバーは修正されている間も機能します。 68 00:03:57,560 --> 00:04:00,960 さて、どんなサポートがあるかをお見せします。 69 00:04:01,120 --> 00:04:03,600 この Mooc 以外で Pharo を使いたい時には 70 00:04:03,760 --> 00:04:06,520 いくつか書籍があります。全てオープンソースです。 71 00:04:06,680 --> 00:04:10,440 Pharo by Example は初心者向けで いくつかの言語に翻訳されています。 72 00:04:10,600 --> 00:04:14,800 現在 Pharo 5 向けに更新しているところです。 73 00:04:14,960 --> 00:04:17,600 Deep into Pharo はより上級向けで 74 00:04:17,760 --> 00:04:19,840 ライブラリについてや 75 00:04:20,000 --> 00:04:24,760 言語やツールのあまり知られていない側面 について書かれています。 76 00:04:25,400 --> 00:04:28,160 Enterprise Pharo, a Web Perspective は 77 00:04:28,320 --> 00:04:30,840 ウェブライブラリに重点を置いています。 78 00:04:31,000 --> 00:04:35,280 WebSockets や HTTP/HTTPS サーバーや 79 00:04:35,440 --> 00:04:37,480 テンプレートなど。 80 00:04:37,680 --> 00:04:38,920 これらの書籍は皆、オープンソースです。 81 00:04:39,080 --> 00:04:43,120 このコースで主に使うのは Seaside というウェブフレームワークです。 82 00:04:43,280 --> 00:04:47,080 示された URL に 300 ページ あります。 83 00:04:47,240 --> 00:04:50,840 もっと知りたいのであれば、この本を読むと よいでしょう。 84 00:04:51,000 --> 00:04:54,240 しかし、この Mooc をやっていく上で 必要なことは 85 00:04:54,400 --> 00:04:57,400 この本を読まなくても大丈夫です。 86 00:04:58,440 --> 00:05:00,840 他の側面について興味があるのでしたら 87 00:05:01,000 --> 00:05:06,000 この本は Pharo での数値計算に関するもので 約300ページあります。 88 00:05:06,160 --> 00:05:09,600 統計的なものから 89 00:05:09,760 --> 00:05:13,280 反復法やクラスタリングまであります。 90 00:05:14,240 --> 00:05:19,120 Pharo は Pharo から学ぶシステムだ と言いましたが 91 00:05:19,280 --> 00:05:22,800 いくつか描写的なところもお教えします。 92 00:05:22,960 --> 00:05:25,880 ビデオの中でまた出てくることになります。 93 00:05:26,040 --> 00:05:29,440 Pharo のグラフィック要素はどれでも 94 00:05:29,600 --> 00:05:32,320 Cmd+Shift+Option を押しながら クリックすると 95 00:05:32,480 --> 00:05:37,840 グラフィック要素の周りに 小さなメニューが出てきます。 96 00:05:38,120 --> 00:05:42,320 これらのメニューを使って 97 00:05:42,480 --> 00:05:46,600 ビジュアルな要素の中に入って 操作をすることができます。 98 00:05:46,760 --> 00:05:48,680 Inspector と呼ばれるもの についてお見せするでしょう。 99 00:05:48,840 --> 00:05:53,120 オブジェクトのプロパティを操作したり 100 00:05:53,280 --> 00:05:55,560 実装するためのオブジェクトです。 101 00:05:55,720 --> 00:05:58,480 Finder と呼ばれるオブジェクトもあります。 102 00:05:58,640 --> 00:06:00,680 Finder で 103 00:06:00,840 --> 00:06:04,400 システムの全メソッドから match という 単語を含むものを探すことができます。 104 00:06:04,560 --> 00:06:08,640 リストを表示して メソッドのコードに直接アクセスできます。 105 00:06:08,960 --> 00:06:13,800 Spotter というツールもあります。 Shift+Enter で開くことができます。 106 00:06:14,120 --> 00:06:16,000 そこで欲しいものを書くと 107 00:06:16,160 --> 00:06:20,200 Spotter がクラスやメソッドやリソースから それを探す手伝いをしてくれます。 108 00:06:20,360 --> 00:06:22,800 それらのツール全て、ビデオで説明します。 109 00:06:22,960 --> 00:06:25,600 そして、もう一度言いますが Spotter は Pharo 自身で書かれています。 110 00:06:26,760 --> 00:06:29,680 Finder は Pharo を学び始めるために 111 00:06:29,840 --> 00:06:32,040 素晴らしい機能を提供します。 112 00:06:32,200 --> 00:06:34,560 これもビデオで紹介します。 113 00:06:34,720 --> 00:06:37,240 例を示して 114 00:06:37,400 --> 00:06:41,720 「これをやりたいのだけど、Pharo で どう書いたらいいのかわからない」と言うと 115 00:06:42,200 --> 00:06:45,360 Finder がメソッドを探してくれます。 116 00:06:45,520 --> 00:06:47,160 例えば 117 00:06:47,320 --> 00:06:51,120 「文字列が2つあります。ABとCです。 それらを連結したいのです。」と言うと 118 00:06:51,280 --> 00:06:55,240 結果は 文字列 ABC だということが 分かります。 119 00:06:55,400 --> 00:06:56,480 簡単ですね。 120 00:06:56,640 --> 00:06:58,320 そこでシステムに 121 00:06:58,480 --> 00:07:02,080 「メッセージがあればそれを教えてください。 122 00:07:02,240 --> 00:07:05,400 これらの文字列を連結したいのです。」 123 00:07:05,560 --> 00:07:08,000 すると 124 00:07:08,160 --> 00:07:11,040 「,」はSequeneableCollectionで 実装されたメソッドだと表示されて 125 00:07:11,200 --> 00:07:14,680 これが先ほどの1つ目の文字列に送られて 126 00:07:14,840 --> 00:07:17,480 3番目の文字列が得られます。 127 00:07:17,640 --> 00:07:21,240 Finder で例を探すことで 128 00:07:21,400 --> 00:07:24,040 より速くコードを書くことができます。 129 00:07:24,520 --> 00:07:28,520 この Mooc ではオブジェクト指向設計について お話します。 130 00:07:28,760 --> 00:07:31,000 それは Pharo の DNA と言えるものです。 131 00:07:31,240 --> 00:07:35,080 Pharo でプログラムする人たちは OO的にエレガントな方法で考えます。 132 00:07:35,320 --> 00:07:38,280 演習問題の中でお見せしましょう。 133 00:07:38,520 --> 00:07:42,280 よく not がどう実装されているのか訊かれます。 134 00:07:42,440 --> 00:07:46,240 多くの人は これが面白い質問だと思わないようです。 135 00:07:46,400 --> 00:07:51,240 この質問が面白いのは 基礎的なルールがそこからもたらされるからです。 136 00:07:51,400 --> 00:07:53,720 これは演習問題になります。 137 00:07:53,880 --> 00:07:57,960 Pharo でどう実装されているのかを知れば 138 00:07:58,120 --> 00:08:00,760 違う方法で考え始めることができるでしょう。 139 00:08:00,920 --> 00:08:04,480 これこそが Pharo を使う人たちの 文化の一部なのです。 140 00:08:04,720 --> 00:08:07,800 つまり、本当にエレガントな方法で デザインを考えるということです。 141 00:08:08,040 --> 00:08:13,480 Pharo をインストールする方法は Pharo のウェブサイトで示してあります。 142 00:08:13,640 --> 00:08:18,000 もちろん Mooc を通して 143 00:08:18,160 --> 00:08:21,280 Pharo をインストールするための 144 00:08:21,440 --> 00:08:23,920 必要な指示を出していきます。 145 00:08:24,080 --> 00:08:26,920 Pharo はとても簡単にインストールできます。 146 00:08:27,080 --> 00:08:30,920 OS に ドラッグ&ドロップする だけのようなものです。