JavaScriptを使った


2016/0602/14:20
『実践としてのプログラミング講座』(清水亮/中公新書ラクレ)を読みながらのプログラミング修行4日目。



とうとうJavaScriptを使った。といっても「JavaScript」ブロックの中の「実行」をはめ込んだだけだが。


今日の課題は「ご飯のレシピ」タイマーを作ること。ごはんを炊くためには、お米を水に浸し、火にかけて、蒸らさなければならない。それぞれに必要な時間が異なる。もちろん、そのたびに、それ用に設定されたタイマーを呼び出せば良いのだが、それは面倒である。どうせなら、ご飯を炊く作業を一連のタイマーで管理できれば便利ではないか。


「パペット」ボックス、「ビヘイビア」ボックス、「リアクション」ボックス、「JavaScript」ボックスから必要な部品を引っ張り出してきて、はめ込んでいく。実行に入れるプログラムは、昨日までに作ったタイマーである。実行で、作ったプログラムのブックマークのアドレスを放り込むなんて、なんかできるプログラマーになったような気分である(全然違うけど)。


プログラムというのは、一つ何かができた時に「じゃあ、こうなったらもっと便利じゃない」と思いついたことを、実現するために組むものなのだ。ということが、わかったのだ。


ちなみに、今日作った『ご飯のレシピ』のプログラムは、150行のコードになる。コードを眺めると、基本的に英語で書かれている。何となく意味がわかるような、わからないような。でも、そんなこと理解できなくても、複合タイマーを作ることができた。なんだか、ちょっとだけ偉くなった気分だ。


昨日のI/O

In:
『実践としてのプログラミング講座』

『初歩から学ぶマグネシウム
Out:
某原稿下書き:5枚
某原稿下書き:7枚

昨日の稽古:

タイマーを進化させた


2016/0601/08:40
『実践としてのプログラミング講座』(清水亮/中公新書ラクレ)を読みながらのプログラミング修行3日目。


今日はタイマーをさらに進化させた。昨日作ったのは、10分タイマーである。初日には3分タイマーを作った。要領を覚えたので、これで何分のタイマーでも好きなように作ることができる。カップラーメン用なら3分、座禅用なら15分、仕事用なら45分といった案配で、いくらでも増やせば良い。


そこでプログラミング思考が芽生える。


◯◯分のタイマーをたくさん用意して選んで使うのもいいけれど、タイマーの時間設定できれば、もっと便利じゃないか。というか、iPhoneのタイマーはそうなってるじゃないか。でも、iPhoneのタイマーは、Appleのエンジニアが、すごいプログラムを書いているから、あんなに簡単に使えるんでしょう?


というほど、大したことではないらしい。自分でもタイマーをカスタマイズ(ちょっと違うか?)できるのだ。


今日使うツールは「シンプルプロンプト」ブロックである。これを使うことにより
「ユーザーが入力したデータは「グローバル変数」の「入力された文字列」として扱うことができる(同書、P27)」


その後で「変数」ブロックから「グローバル変換(入力された文字列)」を選んではめ込む。完成である。


ちょうど、この原稿のこの部分を書いている時に、設定した10分が経ったようで、いきなり『ジャーン』とかMacから音がしてびっくりした。


びっくりして、また一つ賢くなった。というか「こうだったら、もっと便利じゃん」を実現していくのが、プログラミングなのか。なるほど。別にコードを書かなくても(書けなくても)、ブロックを並べるだけでコーディングはできるということ。これは便利である。

昨日のI/O

In:
『実践としてのプログラミング講座』

『創造の源流2015版』

Out:
某原稿下書き:5枚
某原稿:8枚

昨日の稽古:

ジョギング40分・筋活30分

タイマーを改造した

2016/0531/08:50
昨日は「キッチンタイマー」を作ってみた。当初の設定は「10」秒でアラームを鳴らすようになっていたが、これを「180」秒に変更することに成功した。
もし、このタイマーをiPhoneで呼び出すことができれば(ブラウザーChromeに変えたから、iPhoneにもChromeを入れると呼び出せるはずだ)、カップラーメンを作るときに楽になるかもしれない(たぶん、それほど楽にはならないと思う)。
ともかく、今日の課題は、このタイマーを変更すること。

『実践としてのプログラミング講座』p22からの内容である。
これには「変数ブロック」と「代入ブロック」を使うことになる。「ブロック」というのは、部品とか計算式(プログラムのかたまりといったほうがよいか)みたいなものだ。

まず「変数ブロック」から「代入」を選んで、「変数」をセットしていくと10分のタイマーができた。

この「moonblock」は、ボックスの凸凹の具合で、そこに入るのか/入らないのかが直感的にわかるようになっているところ。
緑の枠で囲まれた、一番右側の「数値」を変更すれば、タイマーを好きな時間に設定できる。このタイマーを使えば、仕事時間の設定をすることができる。45分集中したら休憩する。そんなルールを実行するためには、「10」を「45」に変えればよい。

おそらくは上からの流れが、プログラミングの流れになっていて、それは「タイマーを作るときには、このように考えるのだ」という思考のフローにもなっている。

一つ賢くなったような気分だ!

今日のコードはこれ↓
[{
"x": -665,
"y": -140,
"constructorName": "TimerBoardBlock",
"variables": {
"countdir": "countdown",
"fold": "-",
"seconds": "180",
"behavior": {
"x": 0,
"y": 0,
"constructorName": "ListenerBlock",
"variables": {
"eventType": "timeup",
"fold": "-",
"handler": {
"x": 0,
"y": 0,
"constructorName": "SEBlock",
"variables": {
"sesrc": "jingle.wav"
},
"next": null
}
},
"next": {
"x": 0,
"y": 0,
"constructorName": "ListenerBlock",
"variables": {
"eventType": "init",
"fold": "-",
"handler": {
"x": 0,
"y": 0,
"constructorName": "AssignBlock",
"variables": {
"a": {
"x": 0,
"y": 0,
"constructorName": "PropertyBlock",
"variables": {
"name": "count"
}
},
"op": "=",
"b": {
"x": 0,
"y": 0,
"constructorName": "ComputeBlock",
"variables": {
"a": {
"x": 0,
"y": 0,
"constructorName": "NumberBlock",
"variables": {
"value": "60"
}
},
"op": "*",
"b": {
"x": 0,
"y": 0,
"constructorName": "NumberBlock",
"variables": {
"value": "10"
}
}
}
}
},
"next": null
}
},
"next": null
}
}
}
}]

ここまで20分。2日目にして、賢くなった気がする自分がいる。

昨日のI/O

In:
In:
『実践としてのプログラミング講座』

『日本語シソーラス』第二版
Out:
某原稿:7枚

昨日の稽古:

タイマーができた!

2016/0530/10:20
『実践としてのプログラミング講座』清水亮/中公新書ラクレを読みながら、プログラミングを勉強してみることにした。

P19からの「キッチンタイマー」プログラムに挑戦してみた。まず「moonblock.jp」にアクセスせよと書かれている。Google Chromeでアクセスしてみる。こんな画面が出てきた。

書かれているように「ゲーム」から「タイマーボードブロック」を引き出し、次に「リアクション」から「タイマーが終了した」ときと、「音を鳴らす」と書かれたパーツを選ぶ。それをドラッグすると、「タイマーボードブロック」にすぽんと収まる。これでタイマーができたらしい。ほんまかいな?
ほんまや!

タイマーが動いて、音が鳴った。
これが、56年生きてきたおっちゃんの『人生初プログラム』である。しかも、このタイマーは時間や鳴らす音を変更できる。これはプログラムである。遂に、私もプログラマーを名乗ることになったのだ。

ちなみに、この人生初のプログラムは、下記のようなコードに表現されるらしい。

[{
"x": -267,
"y": -164,
"constructorName": "TimerBoardBlock",
"variables": {
"countdir": "countdown",
"fold": "-",
"seconds": "180",
"behavior": {
"x": 0,
"y": 0,
"constructorName": "ListenerBlock",
"variables": {
"eventType": "timeup",
"fold": "-",
"handler": {
"x": 0,
"y": 0,
"constructorName": "SEBlock",
"variables": {
"sesrc": "alarm.wav"
},
"next": null
}
},
"next": null
}
}
}]

ここまで20分。初日としては、十分だと思う。なかなかおもしろいぞ、プログラミング。

昨日のI/O

In:
『実践としてのプログラミング講座』

Out:
某原稿推敲60枚
某原稿下書き6枚

昨日の稽古:

ジョギング

空手と文章の共通項



「型」について空手と文章を学ぶ研修会を開催します


2月9日の10時から16時半まで。京都の烏丸竹屋町を西に入って、少し下ったあたり。京都トコ会館の1階。お弁当、お茶、お菓子がついて受講費は12,960円。どんな研修会なのか、興味を持っていただけた方は、下記をお読みください。


型といえば、まず空手。もしかすると能楽を思い浮かべる方もいるかもしれない。型とは一体何か。そんなことを考え始めるようになり、専門誌『トレーニング・ジャーナル』誌に、これまで8回の連載記事を書かせていただいた。


書き進めてみてわかることがあり、さらに謎が深まる部分もある。とりあえず現時点ではっきりしているのは、まずは「型に自分をはめること」である。その第一の狙いは、自分の偏りを正すことにある。


モノの見方に引きつけて話すなら、自分の認知バイアスを自覚し、認知の偏りを矯正することだ。身体操作でいうなら、右利き左利きといった利き腕・利き足による、体の歪みを少しでも直すことにある。そのために型に自分をはめる。然る後に、正しい動きを身につける。


ただし、これではまだ使いものにならない。正しい型を身に付けたら、次は型を破るのである。型を自分なりにカスタマイズするというか、自分に合わせるというか、状況に応じて変えるというか。


たとえば唐手の型稽古の動きは、相手が唐手の技で攻めてきた時の対応を想定したものではない。それでは護身には使えない。およそ、すべての古武道の型稽古は、同じ理念にもとづいていたはずだ。たまたま、自分と同じ武道(それも同じ流派)を身に付けた敵が、襲ってくることは、まずあり得なかったはずだから。


さらに稽古を重ねれば(万日をもって真となす)、最初に覚えた型を離れて自由自在に動きながら、それでも型のエッセンスに基づいた動きになる。これを以って「守破離」という。


前置きが長くなってしまったけれど、そんなことを感じてもらう研修会をやらせていただくことになった。まず空手を通じて「型」に触れていただく。自分の五体を動かして「型」を体感していただく。


その後に、今度は文章の「型」を身に付けていただく。脳科学的にいうなら、型を身につけるとは、小脳に回路を作ることでもある。例えば、熱湯に手を突っ込んだ時には、反射的に手を引っ込めるはずだ。そして『その後で』熱い、と感じる。小脳の回路での反射行動は意識に先行する。


空手の型がめざすのは、この境地である。文章についても、正しい型を身に付ければ、書くのがずいぶん早く楽になる。ただ自分が書いた文章は、空手の相手と違って逃げることがない。だから、何度でも攻める、すなわち推敲することができる。推敲にもコツがある。これを知れば、読みやすく伝わりやすい文章になる。


そんな講座、あと少しだけ人数に余裕があるそうなので、興味のある方は、ぜひお越しください。



昨日のI/O

In:
某大学法学部&理工学部教授インタビュー
『定理が生まれる』セドリック・ヴィラーニ
Out:
某社社長取材原稿

昨日の稽古:

成人式とは



今日は成人式だそうだ


成人式といえば、1月15日と決まっていたはずなのだが、最近はどうも違うらしい。違うといえば成人式に限らない。いつからそうなったのかは知らないが、祝日は今や変動相場制である。その年の暦に応じて、都合よく変えられる。


変わるだけではない。いつの間にか、休みが増えていたりする。昨年はシルバーウィークなるものができていた。何ですか、それは? 敬老の日の近くに、よくわからんけど国民の休日ができたのだという。おかげで去年は5連休だったらしい。


敬老、シルバーとくれば、てっきり「ジジババ万歳」的休日なのかと思えば、豈図らんや。5月の「ゴールデン」ウィークに対応して、9月の「シルバー」ウィークとなるらしい。そんな休みの存在などつゆ知らず。取材して原稿を書く自営業者としては、祝日=取材のできない日である。つまり、勝手に休みを増やされると、こちらとしては死活問題となりかねない(とまでいうとちょっと大げさですけどね)。


幸いにして、昨年9月は、新たに取材をするよりも、溜まりに溜まった原稿を早く書かねばならなかったため、祝日はむしろ「原稿を催促されない、ありがたい日」として機能した。それはそれでよかったのだ。


ともかく「成人の日」である。


この日には、全国各地で成人式が行われるようだ。女性は振り袖などを着飾り、男子も目一杯おめかしして出かけるらしい。そして式が終わると「もう酒飲んでも文句言われないんだぜ」とばかりに酔っ払って、馬鹿騒ぎをする。時に、暴力沙汰を起こしてニュースに取り上げられる。


その成人式にお誘いがなかった。正確にいえば、あったのかもしれないが、招待状のようなもの(が来るのだとしたら)を見た記憶がない。二十歳の時に住んでいたのは、滋賀県のとある町である。そこには高3の夏休み、だから17歳の時に引っ越した。往復5時間かけて通っていた学校は、奈良にあった。故に、その町に知り合いは一人もいない。もしかすると町役場の成人者リストから漏れていたのかもしれない。


ついでにいえば、小学校卒業と同時に京都の伏見から大阪の枚方に引っ越したために、小学校時代の友だちとも離ればなれで音信不通である。だから、仮に届いていたはずの招待状を持って、知り合いの一人もいない町の成人式に出たところで、何も楽しくなかったに違いない。


では、自分が成人したのは一体いつなのだろうか。「あなたが大人になったと思ったときのことを、400字程度で書いてください」とは、時々行っている文章講座で生徒さんに出す課題である。この課題に対して、自分ならどう答えるのだろう。


初めて一人でバイクで泊まりがけのロングツアーに出た日とか、バイクで事故って相手と一人で話をつけた日とか、あるいは就職して自宅を出て一人暮らしを始めた日とか。もっともらしいことならいくらでも言えるのだが………。


たとえ文章講座とはいえ、なんという恐ろしい質問を迂闊にしていたことかと、いま思い知りました。これまでの受講生の皆さん、実に答えにくい課題を出してしまっていて、すみませんm(__)m


昨日のI/O

In:
『匂いの記憶』
Out:
某大学講演原稿
某誌掲載用某社取材原稿
某社オウンドメディア掲載原稿

昨日の稽古:

ジョギング40分、套路10分

未だに見る夢


定期的に襲われる悪夢がある


単位が足りないとか、後期試験に寝坊して間に合わなくなったとか。大学時代5年間の過ごし方に、未だよほど思うところがあるからだろう。これでは「卒業できませんね」と事務の人から言われる夢を見る。悪夢である。


実際には、もちろん、きちんと卒業証書をいただいている。たとえ、その単位のほとんどが「可」だったとしても、あるいは卒業に必要な144単位中ざっと80単位を5回生で取ったとしても、一応は文学士である。ただし、きちんと勉強しなかったことも否定できない。


大学生活5年間で読んだ本の数は、おそらく今の1年分に満たないだろう。大学時代にきちんと勉強しなかったことが、未だにコンプレックスとなっているようだ。だから今朝方も妙な夢を見た。


ある教授の勉強会に参加している。といっても勉強会のメンバーではなく、オブザーバーとして取材をする立場のようだ。とはいえ、一応そのテーマについては理解しているものと先生からは思われていて、時に意見を求められることもある。はっきりとは覚えていないが、スポーツ系のテーマのようだ。


そこであるとき、したり顔で述べた意見に対して、先生が怒り出すのだ。「専門家でもないくせに、わかったようなことを言わないように。所詮、あなたは、この程度の成績ではないですか」と言いながら、先生は胸のポケットから封筒を出した。その表書きは、成績証明書となっていた。そして先生は「ほれ、この通り」と、私の成績書を突き出す。


ぐっ!と詰まったところで目が覚めた。もっとちゃんと勉強しておけばよかったといくら思い返しても、後悔先に立たずである。せめて、いま仕事で関わらせていただいている内容に関しては、資料をしっかり読み込んで理解した上で話を伺い、それをほかの人にわかりやすく伝える文章を書くことで、少しでも深く学ぶ。そんなことを心がけている。


それにしても、いつまで、この手の夢を見続けるのだろうか。

昨日のI/O

In:
『匂いの記憶』
Out:
某大学講演原稿
某社取材プロット
某社オウンドメディア・コンテンツプロット

昨日の稽古:

ジョギング50分