Pharoといっしょ(4) あちこちの裏で暗躍? Zincなんたら、って何よ?

Joseph Halfmoon

以前にPharoのお勉強資料充実と書きました。中でもThe Pharo MOOCの動画群、とっても分かり易いです。しかし全7週のうちようやく第3週を終えたあたりです。だって1週間分に20本近くもビデオがあるのだもの、お惚け老人にはかなりな負荷っす(他にもYouTubeだらだら見る時間あるならMOOCを見ろよ、自分。)

※Pharo関係記事の投稿順Indexは こちら

※Smalltalkの法灯を継ぐモダンな処理系Pharo様を練習してます。今回の動作確認には、Windows11上のWSL2の上のUbuntu24.04LTS上のPharo 10.0.0を使用しています。

The Pharo MOOC

非常に分かり易いPharoのチュートリアルビデオ群(YouTube配信)のサイトは以下です。

https://mooc.pharo.org/

全7週分を先頭から視聴させていただいてますが、今だ第3週末です。先は長いデス。しかし今回は第5週の以下の回を先読み(予習)してしまいました。

Files in Pharo [W5S7-EN]

というのも、ちょいと「ファイル・アクセス」のプログラムを書かんと思い立ち、「日本語版のPharo by Example」を参考にファイルアクセスしようとしたのですが、どうもいけません。お世話になっております日本語版なのですが、ベースになっているPharoバージョンはかなり古く、手元で使用しているPharo 10処理系とは差異がある部分に時折遭遇します。

そういう時はMOOCのビデオを見るに限る

ように思います。ビデオを見ているだけで立派な人になれたような(錯覚)気持ちになります。

Pharoからのテキストファイル読み書き

以下はMOOCのビデオ見て練習したテキストファイルの書き込み例です。Playgroundウインドウの下にFile Browserウインドウを重ねてあります。PharoTextWrite2

 

左上の実行コードを見れば、Pharo様らしいです。

    1. 文字列 ‘abc.txt’ に asFileReferenceというメッセージを送信する
    2. するとFileReferenceなるオブジェクトが返ってくるのでこれをローカル変数abcに格納
    3. FileReferenceオブジェクトには、ファイルが存在するの(exists)?とか尋ねることもできれば、引数ブロックの結果ストリームを書き込んでね(writeStreamDo:)などもお願することもできる

実際、File Browserウインドウをみると、指定したabc.txtなるファイルが出来ており、そこには’ABC’と文字が書き込まれてました。予定どおりやね。

しかし右側部分をみると素の「writeStream」だと思っていたものが 「Znなんちゃら」などという明示的に呼び出した記憶のないものにすり替わって?ました。例によって、上位のクラスから「下請け」クラスに「丸投げ」されておるような感じっす。

以下のようにwriteStream自体は、FileReferenceクラスの中にあります。FileReference

しかし、実動部隊は以下のようです。ZnEncodedWriteStream

ここでZnなんちゃら、の登場に忘却力の年寄は過去回を見返してしまいましたぞ。

ソフトな忘却力(37) Smalltalk、Pharo、今頃になってHello world

上の過去回で、ZnEasyという、Znなんちゃらのクラスにお世話になっていたのです。テキトーなURLから画像ファイルを取り出すときに使った強力なものです。今回はその時使ったパッケージZinc-HTTPとは異なるパッケージですが、同じZincという一族らしいです。昔のPharo by Example日本語版のころはもっと素朴なクラスがファイルアクセスを担っていたけれども、いつのころからか、Zincなんちゃらがそれに置き換わっていたのか?知らんけど。

なお、テキストファイルの読み込みは以下のようでOKでした。やっぱりZnなんちゃらが暗躍。PharoTextRead2

 

以前登場のMorphといい、今回のZincといい、裏で暗躍するものどもがモダンなPharo様をささえておるようです。その辺の「下請け構造」が気になる年寄です。

Pharoといっしょ(3) 続Integer、bitShiftと16進数のとりあつかい へ戻る

Pharoといっしょ(5) PPM形式カラービットマップグラフィック(テキストファイル)出力 へ進む