このセッションでは Pharo が何なのかを見ていきましょう。
Pharo は純粋なオブジェクト指向言語です。
そしてまた、IDE でもあります。 つまり、統合開発環境です。
Pharo は Smalltalk にインスパイアされました。 Smalltalk は Pharo の精神的な父親です。
Pharo はプログラムすることが楽しくなる パワフルでエレガントな言語です。
Pharo で色々なことをする人たちの 素晴らしいコミュニティがあります。
ビデオを通してこのコースで教えたいことは
物事を進めながらスクリプトを書くことができる ライブなシステムだということです。
Pharo を MIT ライセンスで持ち出して やりたいことをやることができます。
Pharo がエレガントだというのは そう主張する根拠があります。
構文はハガキに収まるサイズなのです。
シンプルでパワフルなオブジェクトモデルは
4 行しか要しません。 お見せしましょう…
このスライドには Pharo の全構文があります。
全構文というのは つまり、何も残さずということです。
このスライドを読みさえすれば構文を 理解できるということではありません。
何回かのセッションを通して
構文がどう構成されているかを 理解する手助けをしていきます。
しかし、このスライドを見れば 何を学ばなければならないかわかるでしょう。
構文はこれ以外には何もないのです。
同様に、オブジェクトモデルも このスライドにまとめられています。
全てのものが動的に型を付けられていて
全てのものがクラスのインスタンス としてのオブジェクトです。
全てのメソッドは public で virtual で 全ての属性は protected です。
そして単一継承です。
ボクシングやプリミティブ型や 非プリミティブ型もなく
総称型もありません。などなどです。
これで全てです。
Pharo の構文とモデルを見ましたが
あとでまた戻ってきます。
これでシステムの複雑度がわかるでしょう。
Pharo は全て Pharo 自身で書かれている ということを理解してください。
Pharo とはどういう意味でしょう？ それは、文字列や文字や
真偽値や IDE やコンパイラやソケット等々
全てのものが Pharo で書かれている ということです。
つまりこの 1 ページの構文とモデルを理解すれば
Pharo の全てにアクセスすることができる ということです。
それは知的な興奮を呼ぶものです。
この小さな入り口の扉は
巨大な世界に繋がっているのですから。
この Mooc のタイトルを見ると
immersive (没入する）という 言葉が使われています。これは何でしょう？
Pharo はブラックボックスではないのです。
システム全体が完全に中身を見ることが できるようになっていて
それを見てどう実装されているかが わかるのです。
そして Pharo はリフレクティブです。
Pharo はそれ自身の記述を内部に持っていて
それを使って理解することができます。
つまり、オブジェクトの世界に 完全に没入することができるのです。
私はこれを水槽に例えます。
言語というものは通常はブラックボックスです。
Pharo はブラックボックスではありません。 水槽なのです。
オブジェクトやシステム自身の構成物を 見ることができます。
そして水槽の中に飛び込んで オブジェクトと対話することができます。
Pharo と遊ぶように勧めているのは
そういう意味なのです。
ここで、没入型システムの例をお見せします。
没入あるいは対話的と呼びます。
左側にはコードがあり 右側にはコードが生成するものがあります。
プログラマーがコンパイルキーを押すたびに
スクリーンがブルーになり 結果が右側に現れます。
彼は常にコード修正しながら
何をやっているのかを 右側のウィンドウで見ています。
システムのあらゆる要素に対して これと同じことができます。
ソケットやファイルや
この例のように 3D に対して。 ウェブサーバーでも同様です。
ウェブサーバーは修正されている間も機能します。
さて、どんなサポートがあるかをお見せします。
この Mooc 以外で Pharo を使いたい時には
いくつか書籍があります。全てオープンソースです。
Pharo by Example は初心者向けで いくつかの言語に翻訳されています。
現在 Pharo 5 向けに更新しているところです。
Deep into Pharo はより上級向けで
ライブラリについてや
言語やツールのあまり知られていない側面 について書かれています。
Enterprise Pharo, a Web Perspective は
ウェブライブラリに重点を置いています。
WebSockets や HTTP/HTTPS サーバーや
テンプレートなど。
これらの書籍は皆、オープンソースです。
このコースで主に使うのは Seaside というウェブフレームワークです。
示された URL に 300 ページ あります。
もっと知りたいのであれば、この本を読むと よいでしょう。
しかし、この Mooc をやっていく上で 必要なことは
この本を読まなくても大丈夫です。
他の側面について興味があるのでしたら
この本は Pharo での数値計算に関するもので 約300ページあります。
統計的なものから
反復法やクラスタリングまであります。
Pharo は Pharo から学ぶシステムだ と言いましたが
いくつか描写的なところもお教えします。
ビデオの中でまた出てくることになります。
Pharo のグラフィック要素はどれでも
Cmd+Shift+Option を押しながら クリックすると
グラフィック要素の周りに 小さなメニューが出てきます。
これらのメニューを使って
ビジュアルな要素の中に入って 操作をすることができます。
Inspector と呼ばれるもの についてお見せするでしょう。
オブジェクトのプロパティを操作したり
実装するためのオブジェクトです。
Finder と呼ばれるオブジェクトもあります。
Finder で
システムの全メソッドから match という 単語を含むものを探すことができます。
リストを表示して メソッドのコードに直接アクセスできます。
Spotter というツールもあります。 Shift+Enter で開くことができます。
そこで欲しいものを書くと
Spotter がクラスやメソッドやリソースから それを探す手伝いをしてくれます。
それらのツール全て、ビデオで説明します。
そして、もう一度言いますが Spotter は Pharo 自身で書かれています。
Finder は Pharo を学び始めるために
素晴らしい機能を提供します。
これもビデオで紹介します。
例を示して
「これをやりたいのだけど、Pharo で どう書いたらいいのかわからない」と言うと
Finder がメソッドを探してくれます。
例えば
「文字列が2つあります。ABとCです。 それらを連結したいのです。」と言うと
結果は 文字列 ABC だということが 分かります。
簡単ですね。
そこでシステムに
「メッセージがあればそれを教えてください。
これらの文字列を連結したいのです。」
すると
「,」はSequeneableCollectionで 実装されたメソッドだと表示されて
これが先ほどの1つ目の文字列に送られて
3番目の文字列が得られます。
Finder で例を探すことで
より速くコードを書くことができます。
この Mooc ではオブジェクト指向設計について お話します。
それは Pharo の DNA と言えるものです。
Pharo でプログラムする人たちは OO的にエレガントな方法で考えます。
演習問題の中でお見せしましょう。
よく not がどう実装されているのか訊かれます。
多くの人は これが面白い質問だと思わないようです。
この質問が面白いのは 基礎的なルールがそこからもたらされるからです。
これは演習問題になります。
Pharo でどう実装されているのかを知れば
違う方法で考え始めることができるでしょう。
これこそが Pharo を使う人たちの 文化の一部なのです。
つまり、本当にエレガントな方法で デザインを考えるということです。
Pharo をインストールする方法は Pharo のウェブサイトで示してあります。
もちろん Mooc を通して
Pharo をインストールするための
必要な指示を出していきます。
Pharo はとても簡単にインストールできます。
OS に ドラッグ＆ドロップする だけのようなものです。