naka_aki_splかも

2012-12-24

いかに最低コストで「俺もirofだ」と言い張るかの考察

いかに最低コストで「俺もirofだ」と言い張るかの考察(和訳:非破壊的にirof化する方法)(別解:おまえら日本語プログラミング言語すきだろ?)

いろふ Advent Calendar も24日目、かなりギリギリ感が出てきました。

前日は@fukai_yas さんの irof Advent Calendar 23rd : 人生、気合いと具合 - blo でした。

せっかくのクリスマスイブを飾…らないのは、残念な @naka_aki_spl の
いかに最低コストで「俺もirofだ」と言い張るかの考察(和訳:非破壊的にirof化する方法)(別解:おまえら日本語プログラミング言語すきだろ?)
です。
ほら、そこ、残念するところですよ!

なんか皆さんのネタは「いろふさんが如何に世界に満ちあふれているか」という福音の話ばっかりなので、
上記のような自分語りの利己的なネタを書いてしまって申し訳ないんですがm(__)m。
余談ですが来年の年明けの労働現場がドコ(札幌vs東京)なのか未だに確定してません。がくぶる。

----

さて。
たしか数ヶ月前に(も)、厳選された俺TLの諸兄のあいだで
「irofさんアイコンになってみる」のがプチブームになったことがありました。

それを見て当然、残念な俺様も
「あー俺もなってみたいなーirofアイコン
とか思ったものでした。

が、一方で俺は昔から俺特有の主義というか好みがありまして
「データは削除したくないなあー」
と思っていたりするんです。

単に削除だけでなく、ふつうの書き換えという行為は
「削除+追加」
ですから、これでは「削除」したことになってしまう。

そのてんVCSでバージョン管理していれば
「書き換え」は「リビジョンの追記」でしかないので
問題ありませんw
俺がVCSを好むのはそのせいです。

ようするに、いわゆる「非破壊編集」にしたい。

なんとかして、この2つの
「irofさんアイコンになってみたい」

「非破壊的編集で済ませたい」
という一見矛盾した要求が募りました。

なんとか旨い詭弁wは無いものでしょうか…

----

ある日、声が聞こえてきました。
「なかあき、、、なかあき、、、心のなかに直接語りかけています。
うまい。うますぎる。
じゃない
アイコンを、回すノデス」
と。

え?え?回すってなに?

唐突ですがここで、
この「回す」という概念について、
厳選された俺TLのお前らが大好きな「日本語」プログラミング言語を使って
解説しようと思います。

ええ。あくまで言語は「回すための道具」です。はい。

助詞の扱いが変態的(半分ほめていますが)な「なでしこ」とかじゃなく、
ここでは「ドリトル」という、とても構文が美しい、教育向けをうたってる言語にしてみます。

プログラミング言語「ドリトル」

ダウンロード」ページ( http://dolittle.eplang.jp/index.php?%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89 )いって、
ドリトルV2.30 (2011年9月16日)」っていうセクション(多分これが安定板って意味だと思います)の、
Windows,Linux用(約6MB) dolittle230.zip
ってのをゲットします。
(俺はMacのスノレパだけど問題なく動作してるっぽいです。
Mac版のインストーラも有るけど、きっと単純にラップしてるだけなんだろうなー)

で、それを適当に溶かします。

あーあとドリトル
これまたみんな大好きなJVM言語の一種なので、
Javaも前提です。(java5以降らしい)
入れてください。

bash-3.2$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-10M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
bash-3.2$ pwd
/Users/nakaaki/local/dolittle230
bash-3.2$ ls
arduino.ini             dolittle.bat            dtree.ini               myu.ini                 readme.pdf
arduino_dolittle        dolittle.jar            lib                     myuobj.ini              sample
book.pdf                dolittle.sh             lib64                   myurobo.ini
bash-3.2$ ./dolittle.sh &

このように展開場所にcdしてから
./dolittle.sh &
GUIが立ち上がります。
なんとIDEが標準装備なのですね(そういう問題か?)

起動時のスクショ 1
f:id:naka_aki_spl:20121224161647p:image

あと、
後述するbitbucketに置いてるファイルを
お好みの場所に展開してください。

展開のしかたですが、良い子wは勿論mercurialを入れてるでしょうから、
hg clone https://bitbucket.org/naka_aki_spl2/irofadcal2012_24_nakaaki
とかです。
(まあこのURLの左下あたりに「download」ありますので、悪い子はそちらでどうぞ。)

このフォルダの中は
dolittle/*
っていうファイル構成にしてますんで、
dolittle/ にcdしてください。

あ。純正のままのdolittle起動シェル(dolittle.sh)だと
好きな場所にcdした状況を想定してないっぽいので、
おれおれ修正したdolittle.shを作ってあります。
たぶんbitbucketのdolittle/dolittle.sh
純正を上書きしちまえばいいと思います。

上で起動したGUIをいったん終了し、
コマンドライン

bash-3.2$ pwd
(bitbucketのを展開した場所)/dolittle
bash-3.2$ (dollitleを展開した場所)/dolittle.sh &

って叩けば再度GUIが起動するハズ。


さて。dolittleのGUIです。
ウインドウの上のほうに「実行画面」「編集画面」というボタンが有るので、
まずは「編集画面」を押してエディタぽい画面にいきます。

(当然ですがVimモードは無さそうですorz

で、ここで例えば

(irof1.dtl)

いろふ=タートル!作る "https://raw.github.com/irof/irof_history/master/icon/icon_twitter10.gif" 変身。

とか入力し、
画面左下の「実行!」をクリックすると、

スクショ2
f:id:naka_aki_spl:20121224161645p:image
f:id:naka_aki_spl:20121224161644p:image

という実行画面を見れるわけです。
いろふさん登場。

一応説明すると、この「ドリトル」は、

てな感じらしいです。わーい。
てか個人的にはコレだけの言語スペックならむしろ
学習用に限らず業務アプリスクリプト言語として使いたい欲望に駆られます。

----

さてさて本題。
俺様がいかにイロフさんを詐称するか、が本題でしたね。
しかも非破壊で。

ドリトルのソース画面にこんな感じのソースを入力し、
(naka_aki.dtl)

なかあき=タートル!作る "naka_aki.jpg" 変身。

あとnaka_aki.jpgを用意して「実行!」すると、

スクショ3
f:id:naka_aki_spl:20121224161642p:image

になります。
これ、つまり、昔の(最初からの)俺のアイコンでした。

で、ですね。
ある日、声が聞こえたんです。

「回すのです」と。
つまり、
あ、こーすればいいじゃん、って。

(naka_aki_rof.dtl)

なかあき=タートル!作る "naka_aki.jpg" 変身。
なかあきろふ=なかあき。

なかあきろふ化ボタン=ボタン!"naka akirof" 作る。
なかあきろふ化ボタン:動作=「タイマー!作る 0.3秒 間隔 3回 回数「なかあき!30 右回り」実行」。

もどるボタン=ボタン!"戻る"作る。
もどるボタン:動作=「なかあきろふ!90 左回り」。

//いろいろ手抜きですが、まあ...
//それにしてもドリトル、無名関数の入れ子とか普通に書けるのがステキですね!!

スクショ4
f:id:naka_aki_spl:20121224161639p:image

ここで「naka akirof」ボタンを押してくだされ。
するってーと、
アイコンが回ります。
スクショ4_turn
f:id:naka_aki_spl:20121224161640p:image

この「非破壊wに、回しただけ」のアイコンが、今の俺様アイコンです。

----
え?どこがイロフさんなんだって?
うーん、判ってもらえませんかね、この侘び寂び、、、

仕方ないので実証コードwを書きます。

(naka_aki_rof_test.dtl)

なかあき=タートル!作る "naka_aki.jpg" 変身。
なかあきろふ=なかあき。

なかあきろふ化ボタン=ボタン!"naka akirof" 作る。
なかあきろふ化ボタン:動作=「タイマー!作る 0.3秒 間隔 3回 回数「なかあき!30 右回り」実行」。

もどるボタン=ボタン!"戻る"作る。
もどるボタン:動作=「なかあきろふ!90 左回り」。

実証ボタン=ボタン!"実証w"作る。
実証ボタン:動作=「
亀=タートル!作る。
亀! ペンなし -120 歩く 。
亀! 10 右回り。
亀! ペンあり 150 歩く。
亀! 150 右回り。
亀! 150 歩く。
亀! 100 左回り。
タイマー!作る 0.05秒 間隔 65回 回数「
    亀! 15 歩く 5 左回り。
」実行 待つ。
亀!45 右回り ペンなし -150 歩く 。
亀!ペンあり。
タイマー!作る 0.05秒 間隔 24回 回数「
    亀! 10 歩く 15 左回り。
」実行 待つ。
」。

スクショ5
f:id:naka_aki_spl:20121224161634p:image

これで「naka akirof」ボタンを押したあとに
「実証w」ボタンを押します。
すると、、、、
判るよね?

スクショ5_proved
f:id:naka_aki_spl:20121224161636p:image

これで、「なかあきろふ」も「いろふさん属」であることが実証されましたw
かつ、回転させただけなので、「非破壊」という目標も果たせたと強弁できるwことが実証されました。


----
あ。ソースとか一式のリポは
https://bitbucket.org/naka_aki_spl2/irofadcal2012_24_nakaaki
です。 え?もちろんMercurialです。Git?なにそれ?

あと、
ドリトルの起動sh
PWD!=sh置き場、である状況を考慮してくれてなさげなので
適当に治した差分も入れちゃった。
あーこれ本家にパッチ投げるべきなのかな?


----

明日は真祖 @irof さんが「ご奉納ーーー!!」する大事な日ですね!

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/naka_aki_spl/20121224/1356335426