僕は発展途上技術者

1月・2月で読んだ本、観た映画

一ヶ月にひとつはブログの記事を書くという目標をすっかり忘れていて、「今月書いてないですよ」とつい先程指摘されたので残り1時間で書く。

以前ブログを良く書いていたころは、読んだ本、観た映画の感想をこまめに書いていた。あとから読み返してそのとき考えていたことを思い出し、初心を思い起こしたりといったことがあるので、これから再開してみようと思う。

読んだ本

ハーモニー

ハーモニー〔新版〕 (ハヤカワ文庫JA)
伊藤計劃
早川書房
売り上げランキング: 2,753

rebuild.fm のエピソード170 でN氏(星新一っぽい)がオススメしていたのを読みました。

Googleなどが医療業界に本格参入すればこんな未来が来るのかもと思わせて面白い。この時点でまだ一冊しか読んでなかったのだがこれが2017年ベストの一冊かもと思いました。

虐殺器官

虐殺器官 (ハヤカワ文庫JA)
伊藤 計劃
早川書房
売り上げランキング: 3,867

ハーモニー読了したことをツイートしたら、未読ならこちらを、ということでオススメされたので、読みました。

ハーモニーとセットで読むべき本。。ただ、こちらは読んだあと重い気持ちになります。

観た映画

StarWars ローグ・ワン

観た後の Facebook に投稿した感想。

ローグ・ワン観てきました。いや、もう文句なし、大満足です。 スターウォーズシリーズは通常なら初日、遅くても最初の週には観るのだが、今回は受験準備中だった長男に気を使い、というか願掛けもあって、合格するまでは観ないとしていた。それもあって、期待がどんどん大きくなってからの鑑賞だったので、なおさらその期待に応える傑作だったと思います。 以降、ちとネタバレなので、まだ観ていない人は読まない方がいいかも。 モルジブのあんなに綺麗な場所をボンボン爆発させてしまってもいいのだろうか。木とかバンバンなぎ倒してしまっていたけどあれってCGなのかなあ?といらぬ心配してしまいました。 あと、登場キャラクターの名前が覚えにくいのは僕の年齢のせい?盲目の座頭市の人、観終わっての家族の会話では「頭にチがつくあの棒の人かっこよかったねー」といったようにまったく名前が出てこない。

数日後に祖母が習っている長唄を聞く機会があり、そのときの演目が「勧進帳」だったのだが、元帝国側のドロイドのK-2SOが敵に怪しまれないように、キャシアン・アンドーをこづく場面があるのを思い出し、あれは「勧進帳」だったのではないかと気づきました。

この世界の片隅に

こどものとき観たドラえもんの映画以来じゃなかろうか、映画を立ち見で観たのは。

戦争中の話をこのように描けるのは、日本人だけなのかもしれない。。。

主人公すずを演じるのがのんじゃなかったらこれほど印象に残らなかったのかもしれないというくらいはまり役だと思います。

「君の名は。」と比較されて、こちらのほうがずっといい、という声もありますが、全く別過ぎて僕は比べることはできない。

どちらもとても良い。

高い城の男(The Man In the High Castle) - Season 1

Amazon プライム・ビデオで観られます。

枢軸国側が勝利し、アメリカがナチスと日本とに分割統治されているパラレルワールドでのお話。

4年間住んでいたサンフランシスコ(日本に統治されている)の風景が良くでてくるので懐かしく思いながら観ていました。

日本人を演じている役者が中国系(あるいは韓国系?)の人が多く日本語の台詞が拙かったり、ちょいちょい日本と中国をごっちゃにしたような描写にもやもやすることも多いのだが、設定が興味深く、楽しんで観られました。

シーズン1はまあまあ良かったが、シーズン2で失速してしまうんではないかと心配。

耳をすませば

テレビでやっていたのを録画して観ました。

こどもの頃にみたときは、他のジブリ作品と全く違う恋愛もの、現代が舞台であるため、つまんねーなーと思ったものだが、大人になって観たら面白かった。

20年前の風景が懐かしい。

京王線聖蹟桜ヶ丘周辺が舞台なので、今度行ってみよう。まちクエストにも関連するクエストがあるし。。


CoderDojo藤沢、CoderDojo 嘉手納が始まりました!

今日、2人の友人がそれぞれ別々の場所で主催者となり、CoderDojoの第一回目を開催しました。

ひとつはCoderDojo調布のメンターとしてずっと参加し手伝ってくださる向井アリーさんが神奈川県藤沢でCoderDojo藤沢を、そしてもうひとつはまちクエストを一緒にやっている小川さんが沖縄県嘉手納でCoderDojo嘉手納を開催しました。

それぞれ第一回目のレポートがいましがた投稿されたばかりです。

» CoderDojo藤沢 開催しました!

» 第1回 CoderDojo 嘉手納を開催しました!

無事第一回目を開催できて自分ごとのようにうれしいです。

CoderDojoを開催したことがある人は皆わかると思うのですが、会場をおさえ、協力してくれそうな人を巻き込んで、そして募集をかけて、開催当日までは果たしてみんな来てくれるのだろうかという不安もあり、当日は皆楽しんでくれるのかなあと気を揉んだりとそれなりに大変なんです。

それを少しでも緩和してあげたいということで、藤沢の場合は、各CoderDojoのメンターやこれからCoderDojoを開催しようと思っている方々が、助っ人でかけつけていました。僕も調布メンターの猪股さんやとがぞのさんと参加してきました。

第一回目は当たり前ですが、みんな不慣れなわけですからいろいろと「次回はこうしたほうがいいね、ああしたほうがいいね」というところがでてきます。僕も終わったあとのお疲れ様会での振り返りでいくつか指摘させてもらいましたが、ただ僕が思っていることをうまく言えなかったのでここに書くとすると、いままで誰もやっていなかったこと、つまりその場所でCoderDojoの第一回目を無事開催できたということだけですでに100ポイント、「あれ失敗したねえ、これは次回から直したいね」というたとえば僕の各指摘なんかはそれぞれ、-1、-2ポイントくらいのマイナスだと思うのです。そしてそれらは次回以降、別に全部いっぺんに直す必要はなく、できるところからひとつひとつ改善していけばいい。

今日はじめて参加したこどもたちが「プログラミングって楽しい」と少しでも思ってくれたなら、さらにメンターや主催者も楽しかったと思えれば、すでに目標の大半はクリアできているのだと思うのです。

CoderDojo を創設したJames氏から聞いた「Cool でなければならない」というCoderDojoの柱を、僕は「楽しくなくてはならない」ということと解釈しています。(小中学生へのプログラミング教育を考える - CoderDojo Tokyo または下北沢 ができること) あらためてそのことを思い出すことができました。

CoderDojo藤沢もCoderDojo嘉手納も、次回以降がまた新たなチャレンジですが応援しています。ずっと続けられるよう、おたがい頑張りましょう。そしてこれからCoderDojoをつくろうという方々も、ぜひぜひお手伝いが必要なら声をかけてください。

あと、来週は立ち上げに協力させていただき、こちらも応援しているCoderDojo渋谷の第2回目が開催されます。僕もメンターとして参加しますが、協力したいという方がいたらぜひご連絡ください。

» CoderDojo渋谷@dotinstall.com

2016年振り返りと2017年の目標

2016年の目標は、

  • 体重5kg増やす
  • ブログの記事を1ヶ月3つは書く

としていましたが、両方とも未達成でした。

ただ、ブログの方は8月以外は毎月一つは書けていて、それまでよりは書く機会が増えたので、目標に設定して意識していた効果はあったと思います。

体重に関しては、世のダイエットに勤しむ方々には申し訳ないが、僕には到底無理と、早々に諦めていました。

もっと達成可能な目標にしないと意味がないね、と奥さんにも指摘されたので、下方修整した目標を設定します。

というわけで、今年の目標は、

  • 一ヶ月1つはブログの記事は書く
  • 体重を2kg増やす

です。

ブログを書くのに、Railsベースの自作のシステムを使っているのですが、年末年始に Markdown を使えるようにして格段に書きやすくなったので余裕な気がします。

以上は、前年からの持ち越し目標で、今年新たに設定した目標が以下です。

  • 新しい言語を習得する
  • 英語でのLT、プレゼンをやってみる
  • 構想中の新しいサービスを開発、リリースする

新しい言語、と僕が書くとプログラミング言語と思われるかもしれませんが、今のところ考えているのはフランス語です。

僕はフランスからの帰国子女で、子どもの時には話せていたので、これを学び直したいと思っています。新しいプログラミング言語でも良いのですが、習得した後にどちらの方が世界が広がるかな、って考えたときに自然言語の方が何倍も可能性が広がると思ったのです。

ScratchX から Sphero BB-8 をプログラミングできる scratch2bb8 を作りました

新年あけましておめでとうございます。

十数年ぶりに東京で正月を過ごしたら、1日は初詣に出かけたりしたものの、翌日には正月らしいことをすることがなくなり、ついつい何か作りたくなったというわけで、ScratchXからSphero BB-8をプログラミングできるscratch2bb8を作りました。

Sphero BB-8は、一昨年のほぼ発売日と同時に手に入れていたのですが、Spheroと違ってSDKが公開されていないため、Scratchなど外部からコントロールすることはできないと思っていました。



ところがつい先日ふと調べてみたら、以下の記事で、Cylon.jsというJavaScriptのフレームワークを使ってプログラミングできることを知りました。

» 『スター・ウォーズ』ファン必見!映画に登場したドロイド「BB-8」をブラウザから動かしてみた!

というわけで、Scratchから各種ガジェットなどをプログラミングするScratch2○○シリーズの新作、scratch2bb8を作りました。

» scratch2bb8 | GitHub

以下のデモ動画のように、ScratchXからSphero BB-8をコントロールしています。





前進、転回、後退、それにスピンができるブロックをScratchXに追加しています。



正方形を描かせるプログラムはこんな感じで書けます。



今後はLEDを制御して、本体の色を変えられるようにとかもできるようしていきたいと思います。

Creators MeetUp に参加し、CoderDojo や Scratch のことについて発表しました

Microsoft のオフィスで開催された Creators MeetUp #47 というイベントに参加し、CoderDojo や Scratch のことについて発表しました。

スライドはこちらに公開しました↓

» CoderDojo と Scratch と私 | Speaker Deck

質問をいただいたり、発表が終わった詳しく聞かれたりと、参加者の何人かの方に CoderDojo について興味を持ってもらえて良かったです。

Creators Meetup の主催者で、CoderDojo 下北沢のメンター、OSS カフェ土曜日店長の小島さんに、「CoderDojo について発表しませんか?」と誘われて参加したのですが、エンジニア・デザイナに限らず、自分はクリエイターだ、あるいはクリエイターになりたいという人が集まり、ジャンル問わず何でも話したいことを発表できるというスタイルがとても気に入りました。

言語や特定のテクノロジーをテーマとした勉強会・イベントも良いのですが、好きなこと得意なことではない、いままであまり触れていなかったことにも耳を傾けると、新しい気づきが得られたり、世界がちょっと広がる感じがします。

どの話も面白かったのですが、僕的には特に「Netflix会員登録まったなし!映像コンテンツ100本ノック!」を聞けたのが良くて、ドキュメンタリー部門で紹介されていた「コスモス:時空と宇宙」をこども達(中3と小6)に「なんか面白いらしいよ」と紹介してみたら、意外とはまったらしく結構夢中で観ていて、「宇宙ってスゲー」ってなってるのが大収穫でした。

番組の元ネタとなっているカール・セーガンの「コスモス」、僕も中学の頃に読んだのが懐かしい。。

COSMOS 上 (朝日選書)
COSMOS 上 (朝日選書)
posted with amazlet at 16.12.19
カール・セーガン
朝日新聞出版 (2013-06-11)
売り上げランキング: 54,787


COSMOS 下 (朝日選書)
COSMOS 下 (朝日選書)
posted with amazlet at 16.12.19
カール・セーガン
朝日新聞出版 (2013-06-11)
売り上げランキング: 87,347


Creators MeetUp 今後ちょくちょく参加したいと思っています。

WELQ全記事が非公開 - 盗用記事にはタイポ(タイプミス)まで含まれていた

DeNAが運営する健康情報サイトWELQの全記事が非公開になった。

» DeNAが「WELQ」全記事を非公開に 不正確な医療情報に相次いだ批判「深くお詫び」

「クレチン症」という子供の病気がある。この病気に関する正しい情報をWebで公開したいという監修されている先生の思いがあって2008年に立ち上がったこども健康倶楽部というサイトがあり、僕も開発に関わらせてもらった。

今年初めに運営の予算が尽きたのだが、それに伴いサイトが閉鎖して貴重な情報が消えてしまうのは大きな損失だと思ったので、了解を得て、僕名義のクラウドサーバーに移行して引き続き公開している。

数日前にWELQというパクリサイトがあると聞いたときに、もしやと思い検索してみたところ案の定「クレチン症」というキーワードで、WELQの記事が「家庭の医学」や「こども健康倶楽部」の記事よりも上位、トップにヒットしている。



リンク先はすでに公開停止になっているが、Google のキャッシュにはまだ残っているので、どのように盗用されているかいくつか例を挙げてみる。キャッシュもすぐになくなってしまう可能性があるので、テキストコピーを別に置いておく。

» 【テキスト版】WELQ - クレチン症と診断?知っておきたい5つのポイント!症状から治療まで完全解説

まずはオリジナルの記事。

生まれつき、甲状腺で甲状腺ホルモンをつくるはたらきが弱い病気をクレチン症(または先天性甲状腺機能低下症)といいます。正式の病名は「先天性甲状腺機能低下症(英語でcongenital hypothyroidism)」ですが、病気の原因が甲状腺にあるということが知られる前に「クレチン症」という病名がつけられ、世界各地で昔から一般的に使われていました。

» こども健康倶楽部 | Lesson2 : 先天性甲状腺機能低下症(クレチン症)はどんな病気? より

次にWELQの該当記事です。

クレチン症とは、生まれつき、甲状腺で甲状腺ホルモンをつくる働きが弱い病気のことをいいます。正式の病名は先天性甲状腺機能低下症ですが、一般的にはクレチン症という病名がつけられ、世界各地で昔から一般的に使われていました。

» WELQ - クレチン症と診断?知っておきたい5つのポイント!症状から治療まで完全解説 より

微妙にワードの順序を変えたり、言いまわしを変えているのがわかります。

え、「僕の気のせい」?「偶然」?、そういう反論があるのかもしれないので次をみてみましょう。

クレチン症の治療については、全国的に統一された「ガイドライン(診断・治療指針)」があります。
先天性甲状腺機能低下症マススクリーニングのガイドライン(1998年版)(*1:1998年版ガイドライン)日本小児科学会雑誌1998;102:817-819に掲載されています。
これは、全国どこでも同じような治療が受けられるように、クレチン症の専門家が集まって作ったのもです。

» こども健康倶楽部 | Lesson6 : 先天性甲状腺機能低下症(クレチン症)の治療

こちらがWELQの記事。

クレチン症の治療については、全国的に統一された「ガイドライン」があります。先天性甲状腺機能低下症マススクリーニングのガイドライン(2014年版)が、日本小児科学会雑誌に掲載されています。これは、全国どこでも同じような治療が受けられるように、クレチン症の専門家が集まって作ったのもです。

» WELQ - クレチン症と診断?知っておきたい5つのポイント!症状から治療まで完全解説 より

タイプミス「作ったのもです」まで一緒でした。他は巧妙に書き換えたのに、なぜか「のも」だけ残したのは、オリジナルに対する敬意なのかもしれません。

» DeNAの「WELQ」はどうやって問題記事を大量生産したか 現役社員、ライターが組織的関与を証言

をみると、こうした書き換えをシステマチックに行っていたのがうかがい知れます。裏のSEOの仕組みを考えた人とかは超絶賢い人なんだろうなあ。賢く頭が良くて、どこかネジが外れて倫理観が欠けている人は本当にタチが悪い…

少しくらいモラルに反した方法を使っても、それによって儲かるというメリットに比べるとリスクは小さいと踏んで、計算高い人のなかにはズルをする奴が現れる。

DeNAに入社する東大生が多いなんていう話を聞く。人より賢く効率の良い方法を考えつくということは、すなわちそれはレバレッジが効くということ。善い方向に向ければたくさんの人のためになるサービスを思いつくことができ、悪の方向に向ければ大量に殺戮できる兵器を作れるというのと本質的に同じだと思う。

冒頭の謝罪文により、許す人、忘れてしまう人は多いのかもしれないが、少なくとも僕の記憶にはずっと留めておく。会う人会う人、特に若い人にはこのことを伝え続けて、ズルをすることのリスクはメリットよりも大きいのだということを示す必要がある。

人の翻訳と区別がつかないんじゃなかろうかというほど大幅パワーアップのGoogle翻訳を試してみた

» Google翻訳が進化!? 精度が向上したと話題に - ねとらぼ

などでも取り上げられていますが、Google翻訳が大幅にパワーアップしたということでちょっと試してみました。

Tokyo Rubyist Meetup のイベント情報の日本語訳をお手伝いしているので、自分の翻訳とGoogle翻訳の結果を比べてみました。

まずは、僕が提供した翻訳。

Safecastは、環境問題のためのオープンシティズン(市民)サイエンスに取り組む国際的かつボランティアベースの組織です。2011年3月11日に東日本を襲った壊滅的な震災と津波により、福島第一原発のメルトダウンが起こったあと、正確で信頼の置ける放射線量の情報が公開された状態にはありませんでした。

このプレゼンでは、Safecastの試みを簡単に紹介し、Ruby on Railsで構築されたSafecastのアーキテクチャの現状やSafecast APIについて紹介します。


そして、こちらがGoogle翻訳の結果。

Safecastは、国際的なボランティア中心の組織で、環境のために市民の科学を開放することに専念しています。 2011年3月11日に東日本大震災とその後の福島第一原発の崩壊後、正確かつ信頼できる放射線情報は公開されていませんでした。
このプレゼンテーションでは、Safecastの歴史的な取り組みを簡単に要約し、Ruby On Railsを搭載したSafecastの現在のアーキテクチャとSafecast APIについて説明します。


すごい!

機械翻訳臭がまったくしません。パッと見、人間の翻訳とGoogle翻訳、区別が付かない感じではないでしょうか?

ちなみに原文はこちらです。

Safecast is an international, volunteer-centered organization devoted to open citizen science for the environment. After the devastating earthquake and tsunami which struck eastern Japan on March 11, 2011, and the subsequent meltdown of the Fukushima Daiichi Nuclear Power Plant, accurate and trustworthy radiation information was publicly unavailable.
This presentation will briefly summarize Safecast historical efforts and then describe Safecast's current architecture and Safecast API as powered by Ruby On Rails.


面白いので、他の文章も比べてみました。

僕の日本語訳がこちら。

台湾は日本と密接な関係にある島国です。地理的に近いだけでなく、文化的にも日本と強い関係があります。

台湾人は、交換留学生として、ビジネスマンとして、あるいはこれを読んでいる多くの人のように開発者として、少なからず日本に住んでいます。しかし一方で、多くの台湾の開発者は、外国で働くことを夢見ています。彼らは、西欧諸国で生活する準備のために、英語を学び、ときにはアメリカ人のような話し方を習得しようとします。

本プレゼンは、技術的な側面は少なく、どちらかと言うと台湾の開発者事情を紹介する内容です。なぜ国外で働きたいと強く思っているのか、あるいは、安価なコンピューターのOEMメーカーとして以外の台湾のあまり知られていない側面を紹介します。


そして、こちらがGoogle翻訳。

台湾は日本と密接な関係がある島国です。 地理的に近いだけでなく、文化的にも日本に関係しています。

台湾人は、交換留学生として、ビジネスマンとして、あるいはほとんどの人のように、開発者として日本に住むことは珍しいことではありません。 台湾の多くの開発者は海外で働くことを切望しており、西洋諸国での生活のために英語を練習し、アメリカ人のように話すように訓練しています。

この講演は、技術的な話には似ていませんが、台湾の開発者の地位を紹介しています。 なぜ私たちは国外で働くことを望んでいるのですか、安価なコンピュータOEMメーカー以外にはわからないことがあります。


うむ、なめらかな日本語です。。。

あれ?書き出しが一緒だったり、「台湾人は、交換留学生として、ビジネスマンとして、」の部分とか、ひょっとして、Google先生、僕の答案チラッとみたでしょ。。

ネットに公開されている文章はほぼすべてインデックスされているので、パク◯、、じゃない、いくらでも参考にできる文章があるということか。。データを持っているGoogle、最強な気がします。

ちなみに原文はこちら。

Taiwan is an island country that has a close relationship with Japan. It is not only geographically close, but also culturally related to Japan.

It is not uncommon for Taiwanese people to live in Japan, as exchange student, as businessman, or like most of you, as a developer. Many Taiwanese developers have yearned for working abroad, and so they have practiced English and even train themselves to speak like an American, to prepared for living in western countries.

This talk is less like a technical talk, but more an introduction on Taiwan’s developer status. Why we have desire to work outside our country, and things you may don’t know beyond the cheap computer OEM manufacturers.


職を脅かされる人が相当でてきそうな、、そして外国語とどう付き合うかについて根本からガラッと変えてしまうくらいのインパクトがあるような気がします。

ちなみにちなみに、次回 Tokyo Rubyist Meetup は 11/25(金) 19:00 - 21:30、渋谷の RareJob オフィスにて行なわれます。東京在住の海外のRubyist達がたくさん集まるイベントです。英語はちょっと苦手という人でも、パワーアップしたGoogle翻訳のこのクオリティならば全然問題にならなそうな。。ということを実験してみる良い機会ではないでしょうか。

» Checking Ruby Programs without Types / Introduction to Safecast

Rails のローカル開発環境でSSL(https)を使えるようにする

» iOS10から位置情報取得にはHTTPS必須?

iOS10から、位置情報取得にはhttpsが必須になったようで、httpのままだと位置情報を取得して現在地を検出することができなくなってしまいました。



開発・運営しているまちクエストの本番環境はhttps対応しているので問題ないのですが、Railsでの開発環境にiPhoneでアクセスしてモバイル環境での動作を確認するとき、通常はhttpアクセスなので困ってしまいました。

調べたところ、開発環境でも簡単にhttpsアクセスできるようにしてくれる方法をみつけました。

» jugyo/tunnels

という gem を使います。

$ gem install tunnels

でインストールしたあと、

$ rails s

でRailsサーバーを起動したあと

$ sudo tunnels 10.0.x.x:443 127.0.0.1:3000

で10.0.x.x(LAN内のプライベートIPアドレス)の443ポートへのアクセスを3000番にプロキシすることができます。

これで https://10.0.x.x のようにhttpsアクセスできるようになり、位置情報も問題なく取得できるようになりました。

Scratch 3.0 のプロトタイプをローカルマシンで動かしてみる

Scratch 3.0 のプロトタイプをローカルマシンで動かしてみました。

インストールの手順は、GitHub にあるscratch-vmに書かれている通り、git と npm が使える環境で

git clone https://github.com/LLK/scratch-vm.git
cd scratch-vm
npm install


でインストール、

npm start


で起動します。

Gobo を左右キーで動かしてみました。



「端にあたったらはねかえる」はまだ未実装のようで、Gobo がどこかに吹っ飛んでいってしまいました。

ソースコードは JavaScript で書かれているので改造しやすいし、バグなど直して貢献できるかもしれないですね。

スクラッチャーのためのScratchX入門 - その2 自作オリジナルブロックをつくろう

その1からだいぶ日にちが経ってしまったのですが、個人的にScratchXが再ブームなので、スクラッチャーのためのScratchX入門、その2を書きたいと思います。

前回のエントリーはこちら↓

スクラッチャーのためのScratchX入門 - その1 ScratchXとは?

ScratchXでは自作のブロックをつくることができます。

ブロックや、そのブロックが実行されたときの動きをプログラムするにはJavaScriptを使います。

JavaScriptで書かれたスクリプト(小さなプログラム)をScratchXで読み込むことで、そのスクリプトを実行することができるのですが、スクリプトのファイルは通常GitHubページに置くことが推奨されています。

ただし、GitHubにアカウントを作るには13歳以上でないといけないため、ほとんどのスクラッチャーには難しい上に、GitHubページを作成してそこにファイルを置くのは少し手間がかかると思います。

そこで、ローカル(みなさんが持っているパソコン上ということ)に置かれたスクリプトファイルをScratchXで読み込む方法を紹介します。本格的にScratchXの拡張機能を作ろうという場合には、GitHubページにスクリプトファイルを置く必要がでてきますが、とりあえず試してみたいという場合は、以下の方法で十分です。

まず、Bracketsというアドビが作った無料のエディタをダウンロードしてインストールしてください。

次に適当な作業フォルダを用意(たとえば Work とします)し、Bracketsを起動したら、[ファイル] > [フォルダを開く...] を選んで、workを指定します。

work以下にtest.jsというファイルを新しく作成し、以下の内容をまるごとコピペします。Bracketsの左側のタブで、work▼ 以下で右クリックのあと[新しいファイル]を選べばファイルを作成することができます。

(function(ext) {
ext._shutdown = function() {};

ext._getStatus = function() {
return {status: 2, msg: 'Ready'};
};

ext.test = function(str) {
/* ボタンが押されたときの処理を書く */
};

var descriptor = {
blocks: [
/* ブロックの定義を書く */
]
};

ScratchExtensions.register('Test', descriptor, ext);
})({});


ScratchXに必要というわけではないのですが、後で説明するBracketsのライブプレビュー機能に必要なので、work以下にindex.htmlというファイルを新しく作成します。中身は何でも構いません。空でもOKです。

以上2つのファイルを作ったら、Bracketsの右上の方、稲妻のアイコンをクリックして、ライブプレビュー機能を起動します。



するとブラウザが自動的に立ち上がり、http://127.0.0.1:50110/index.html (:以降のポート番号はランダム) といったアドレスの、先程作成したindex.htmlのページが開きます。

アドレスのindex.htmlをtest.jsに置き換え、http://127.0.0.1:5xxxx/test.js と入力し直し、ブラウザをリロードすると、test.jsの内容が表示されます。これが、これからScratchXに読み込ませるスクリプトのアドレスになります。

ScratchXのページ(http://scratchx.org)を開き、「Open Extension URL」をクリックします。

スクリプトのURL(アドレス)を入力する欄が表示されるので、先ほど開いたスクリプトのアドレス http://127.0.0.1:5xxxx/test.js を入力して、Openのボタンをクリックします。

スクリプトファイルを本当に開いていいかどうかを確認するWarning画面が表示されるので、緑色の「I understand, continue」をクリックします。

ScratchXの画面上、中央にTestというスクリプトの名前と丸い緑色のアイコンが表示されていれば、スクリプトの読み込み成功です。



このテスト用スクリプトには、まだブロックも何も定義されていません。これから、ブラウザのアラート画面を使って、実行すればtestと表示するブロックを作ってみましょう。

まず、ブロックを定義します。

Bracketsでtest.jsの中身を編集して、

/* ブロックの定義を書く */


のところに、

[' ', '%s と表示', 'test', 'テスト']


と書きます。

これはJavaScriptでの配列の書き方で、, (カンマ)で区切られたひとつひとつの値が意味を持っています。最初の ' ' (半角スペースを'で囲みます)がブロックのタイプで、一番ノーマルな実行したら何らかの処理をおこなうブロックを意味します。次の '%s と表示' がブロックに表示される文字で、%s のところが自由に文字を入力できる欄になります。3つ目の 'test' は、ブロックが実行されたときに動くJavaScriptのスクリプトの中の関数の名前になります。最後の4つ目が、さきほど %s で表したブロックの文字入力欄に最初から入っている文字になります。

3つ目の 'test' は

ext.test = function(str) {
/* ボタンが押されたときの処理を書く */
};


の ext.test の test に対応しており、ブロックがクリックされたり実行されたときの処理は、

/* ボタンが押されたときの処理を書く */


の部分に書きます。

ブラウザにアラート画面を表示する

alert(str);


に置き換えましょう。

strには、ブロックの入力欄に入力された文字が入っているので、alert(str)でstr、つまりブロックに入れられた文字がブラウザのアラート画面に表示される。

書き換えたスクリプトは以下の通りになります。

(function(ext) {
ext._shutdown = function() {};

ext._getStatus = function() {
return {status: 2, msg: 'Ready'};
};

ext.test = function(str) {
alert(str);
};

var descriptor = {
blocks: [
[' ', '%s と表示', 'test', 'テスト']
]
};

ScratchExtensions.register('Test', descriptor, ext);
})({});


このスクリプトをScratchXでもう一度読み込み直すため、ScratchX のトップページ(http://scratchx.org)を開き直し、「Open Extension URL」をクリックしてから http://127.0.0.1:5xxxx/test.js を入力し、Openのボタンをクリック、Warning画面で緑のボタンを押します。

「テスト」と表示、というブロックが「その他」にできていれば成功です。



ブロックをクリックすると、「テスト」と表示されるアラート画面が開くはずです。「テスト」の代わりに別の文字を入れてみてブロックをクリックすれば、入力した文字が表示されます。

以下、スクリプトを読み込み、「テスト」と表示するブロックを実行するまでのデモです。



機会があれば、次は別のタイプのブロックを作ってみます。


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Raspberry Piではじめる どきどきプログラミングを書きました。

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Twitter @jishiha

最近のエントリー

アーカイブ