僕は発展途上技術者

大人のためのScratch - ScratchでTDD(テスト駆動開発)はできるか?

先日のTokyo Rubyist Meetupにて、Introducing Scratch to Rubyistsと題して、Scratchを紹介するプレゼンをおこなったところ、プレゼンのあとで、Scratchでテストコードは書けるのか?という質問を受けました。

そのことについてFacebookで投稿したところ、PhratchのアドオンでAssertchというものがあるなど、多方面から情報をいただいたのだが、中でも Can you TDD in Scratch?(ScratchでTDD(テスト駆動開発)はできるか?)というサブタイトルがついたScratchTDDというドキュメントが面白かったので紹介したい。

結論としては「ScratchでTDDはできる」なのですが、詳細はオリジナルのドキュメントがわかりやすく丁寧に書かれているため、そちらを見てもらうとして、変数と関数を日本語に書き換えたものを紹介する。

テストを先に書いたものがこちら↓

そしてテストが通るように、「『名前』に挨拶する」ブロックを実装したものがこちら↓

プログラミングがわからなくても、Scratchがわからなくても、変数名と関数名が日本語だと、どのようなことをやっているのかおおよそ見当がつくのではないだろうか?英語ネイティブの人がソースコードを見たときに、およそこのように見えているのではないかと思うと、我々、英語ネイティブでないプログラマーに比べて彼らには大きなアドバンテージがあるんだろうなあと痛感する。

以下は、ScratchTDDの最初の例を日本語化してみたScratchプロジェクトだ。


[https://scratch.mit.edu/projects/237424372/]

ScratchTDDの後半に紹介されているFizzBuzzの例はこちら↓


[https://scratch.mit.edu/projects/237554596/]

Scratchで楽しく学ぶ アート&サイエンス
石原 淳也
日経BP社
売り上げランキング: 11,183

Scratch 3.0 の Extension(拡張機能) を試してみた

Scratchには、外部のプログラムと通信したり、独自のブロックを自分で実装でき、機能を拡張できる仕組みが備わっています。

このブログでも Scratch 1.4 での方法、および Scratch 2.0 を拡張した ScratchX を使った方法を過去に紹介している。

» Scratch(スクラッチ)を外部のプログラムなどとつなぐ「遠隔センサー接続」を解説する(その1)

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

Scratch 3.0 はまだリリースされていないが、GitHub 上でソースコードが公開されているため様々な開発者が独自に拡張したバージョンを公開している。

Scratch のフォーラムを見ていたら、3.0の拡張機能にあたるExtensionのスクリプトを簡単に試せるバージョンが公開されていたので、3.0の Extension を試してみました。

参考: Discussion Forums » Developing Scratch Extensions » Creating extensions for Scratch 3.0

なお、この情報はScratch3.0のアンオフィシャルな情報なので、試す場合は自己責任でお願いします。

まず、Extension のスクリプト(JavaScript で作ります)をローカルでも構わないのでWebサーバー上で動かす必要があります。

以下の簡単なテスト用のスクリプトをローカルに保存し、

例えばNode.jsのhttp-serverを起動します。

$ http-server

これで、先のスクリプトは http://localhost:8080/test.js でアクセスできるようになります。

Scratch ID Sheep_makerという方が用意してくれている Extension を読み込むことができる Scratch 3.0 にアクセスします。

» https://sheeptester.github.io/scratch-gui/

起動して、最初の確認画面で「試す」をクリックしたあと、左下のフォルダに + マークがついたアイコンをクリックして「拡張機能を選ぶ」の画面を開きます。

「拡張機能を選ぶ」の画面では、「Choose an extension」を選び、拡張機能のスクリプトのURL、つまり http://localhost:8080/test.js を入力してOKを選びます。

拡張機能のスクリプトが読み込まれ、新たに Test というカテゴリ(緑色の丸いアイコン)が追加されます。Test を選ぶと hello というブロックがあるのがわかります。

hello は実行されると console ログに hello と出力するブロックです。スペースをクリックしたら hello と出力するようなスクリプトを組んで、テストしてみましょう。

Scratch 3.0 Extensions の仕様は、Scratch 3.0 Extensions Specificationで公開されています。

ScratchX の拡張機能の仕様と似てはいますが、細かな違いがあります。拡張機能を読み込めるようにしたこのバージョンは公式なものではありませんが、上記仕様に従ったスクリプトが動くので、今後リリースされる Scratch 3.0 に対応したスクリプトをあらかじめテストしておくために活用できると思います。

Scratchで楽しく学ぶ アート&サイエンス
石原 淳也
日経BP社
売り上げランキング: 11,183

Maker Faire Hong Kong に参加し、深センにも行ってきました - MakerFaire HongKong編

本記事を含めた全記事は以下の通り。

今回の香港ツアーのそもそもの一番の目的は Maker Faire Hong Kong に参加することでした。

会場は香港理工大学。おなじみのロゴの垂れ幕が…

参加する前は、会場はクーラーが十分に効いた屋内だと思っていました。実際の会場は屋根はあるけれどオープンスペース。始まって1時間くらいは、珍しい環境を楽しんでいましたが、その後は汗が出っぱなし。

機械学習と Scratch とをつなげた ML2Scratch という作品を出展しました。

» TensorFlow.jsとScratchXとをつなげて、機械学習を簡単に体験、利用できるML2Scratchを作ってみました - 僕は発展途上技術者

日本にいない間に発売された著書の Scratchで楽しく学ぶ アート&サイエンス もブースの傍らに置いておきました。

何の機能も持っていない普通のWebカメラと機械学習を使うことで、画像認識が可能ということで、ペットボトルのキャップで Scratch の画面の中のペンを操作するというデモがこどもたちに結構受けていました。

他の出展者については、地元香港の小学生や中学校など学校単位での出展が多く、STEM教育の色が強い Maker Faire だなという感じでした。

実際には滝汗の暑い会場を少しでも雰囲気で冷やそうという試みなのか、カーリングだったり、

空冷システムのデモがあったりします。

ダンボール製のプラネタリウム?

実験装置を遠隔で操作するシステムです。

3Dプリンターなどファブ系の展示も多かった。

日本からは Pepper も参戦。

一人で出展しているとなかなかブースを空けるのも申し訳なく、他の出展を時間をかけて回ることはできませんでしたが、その代わりとして様々な方と交流する機会に恵まれ、日本からの参加者ということで珍しがられてか、懇親会などでも非常に親切にしてもらったり、向こうから話しかけてもらうことが多く、Maker 側として参加して良かったと感じました。

また機会があれば、他国の MakerFaire に参加したい。

Maker Faire Hong Kong に参加し、深センにも行ってきました - 深セン編

本記事を含めた全記事は以下の通り。

深センは香港から電車で正味1時間くらいで行けるのですが、国境(?)を越えるため出国入国手続きがいるので1時間半から2時間弱かかりました。

香港と深センの間には川が流れており、これを渡ると深センです。「泳いで渡ってもあの壁上がるのは大変だなあ」とか想像すると、ちょっと怖い感じ。

滞在中、香港 - 深セン間を2往復したのですが、この一番最初に渡ったときは緊張しました。

世界最大の電気街、深セン「華強北」に到着。

深センについては、以下のネット上の記事であらかじめ予習しておいたのがとても役立ちました。変化が早すぎて「地球の歩き方」の情報は役に立ちません。

» 変化し続ける街 知られざる深セン | ダイヤモンド・オンライン

噂には聞いていましたが、お店でも屋台でもどこでもスマホ決済でOKです。Alipay のアカウントを用意し、中国の銀行に口座を持っている方からあらかじめ送金しておいてもらったので便利でした。使った現金は地下鉄代のトータル10元(約160円)のみでした。

【2018/7/15 追記】 Alipay のアカウントはこちらの記事を参考にして、日本を出る前に、持っているクレジットカードで決済可能な状態にすることができました。ただし、お金を自分のアカウントに入金するには、中国の銀行に口座を持っている必要です。

あちこちに置いてあったモバイルバッテリーのレンタルボックス。使ってみたかったのですが iPhone 用はすべて出払っていました。

経済特区の深センは不思議なところです。ランチを食べるために入ったカフェの壁にはデカデカと Steve Jobs の言葉が。ここは中国だと思ったんだけど…

電気街の各ビルに入るとこんな感じです。各フロアでは様々なガジェット、電子部品が売られています。

こちらは、フロア全体どこもスマホケースを売っています。

ディスプレイがバリバリに割れてしまっていた長男の iPhone を格安で修理してもらいました。

雨が降っているにも関わらず車輪が付いたトイドローンが路上を飛んでいます。

Apple Watch みたいなやつとか…

こちら見たことあるような製品が。クリスティアーノ・ロナウド?

スマートホームコーナーには、Google Home らしき製品が。でも G のロゴはなかったです。

あまりに暑いので途中で水分補給。ジュース屋さんでももちろん Alipay で QR コード決済。

電気街から、こちらで紹介されていた世界最大の書店「深セン書城中心城」に移動しました。

» 深センに誕生した世界最大の書店は“文化不毛の地”を変えるか | 変化し続ける街 知られざる深セン | ダイヤモンド・オンライン

途中、レンタル自転車をみかけて、QRコードをスキャンしてみたのですがなぜかエラーがでて試すことができませんでした。

こちらが「深セン書城中心城」の中。広大過ぎて、端から端まで見るのに疲れます。

階段で座り込んで本を読むこどもたち。1000万人を超える人口で、平均年齢が30と少しという深センは、若者やこどもたちばかりが歩いている印象。エネルギッシュな印象を強く持ちました。

「iPhone の修理方法 129」という本を見つけたので、買って帰りました。中身は iPhone を分解した写真や回路図が満載。これ、売っていいんだろうか…

2日後にもふたたび深セン入りして、今度は東門歩行街という、渋谷を3倍くらいエネルギッシュにしたようなところにやってきました。

夕食を食べた後に訪れた屋台街ではこんなものが。食べ放題でお腹がいっぱいだったので今回はパス。お腹が空いていればサソリくらいはいけたかも…いや、無理か。蜘蛛はおいしいらしい。

「メイソウ」というなんだかいろいろなものが混ざった感のあるロゴのお店。

iPhone のイヤホンや、

トランスフ◯◯◯ー?が売っています。

ドローンや各ガジェットがあまりに安く、本当に動くんだろうかといぶかってあまり買い物をしなかったのですが、帰ってきて、ああ、もっといろいろ買ってきても良かったかなあと思っていた矢先。こどもたちのお土産にと買ってきた iPhone に直接差すタイプの扇風機を使っていたら、その後 iPhone を充電できなくなったという知らせが… 調べてみたら、

» 【注意】スマホに差して使う携帯扇風機、製品によっては端末が壊れる恐れ | カミアプ

という情報をみつけました。

幸い、一度すべて放電させてちゃんとしたケーブルで充電したら、再び充電できるようになりました。

冷静に考えたら、充電に使う部分に電気を流しているということは逆流させているわけで、まあ無理があるな、と。この扇風機は封印です。買ってくるにしても、単体で動くものにしたほうがいいなと思いました。高価な iPhone とかにつなげて、そちらがもろとも壊れてしまったら泣けます。

【2018/7/15 追記】 深センに関しては、肯定的なブログ記事や、あるいはやや否定的なメディア系などの記事もあったりだそうで、おそらく書いた人それぞれの受け止め方によるんだと思います。僕は、シンプルに勢いがある面白いところだなとは思いましたが、雑なところややや不衛生な感じとかは場合によっては受け入れられないなと感じました。

本屋で床に座り込んで本を読み耽るこどもたちのシーンは印象的で、このエピソードだけを聞くと、あるいはその写真を見ると、「日本のこどもたちはここまで学習意欲はない、これじゃあ勝てないなあ…」なんて感想が生まれそうです。しかし、日本に比べれば経済的にまだ恵まれていなかったり、いろいろと社会的な制約も多く、そこから脱するためには勉強してスキルを身につけるというのが近道なんだろうという事情、強いモチベーションがあるからなわけで、比べる事自体が間違っていると感じました。

むしろ、豊かになれば長時間働くことにモチベーションを感じにくくなるので、生産性をどんどん上げて、楽して働かない方向に進まないといけないんだろうなと思いました。また、いまやLCCを使えば2万円ほどで香港、深センを訪れることはできます。他の国にも以前と比べればとても気軽に行けるはず。日本のパスポートで世界のほとんどの国に行けるとのことで(参考 https://kaikore.blogspot.com/2018/03/Japanese-passports-worlds-powerful.html )、このメリットを活かさな手はないです。深センに限らずどこでも、もし気になる国があったら、どんどん自分の目で見に行くのが良いと思います。

Maker Faire Hong Kong に参加し、深センにも行ってきました - オクトパスカードをCITYBUSの運転手に取られた編

本記事を含めた全記事は以下の通り。

香港の人たちは総じて親切でしたし、治安は良い感じで、0時過ぎに地下鉄の駅からホテルの間を歩いていても全く危ない感じは受けませんでした。

ただ、帰りの空港行きのバスで、金額をチャージして使うオクトバスカードの使い方がわからず(専用の機械にタッチするだけだったのですが)、運転手に聞いたところ、そこのトレイに入れろと指で指示され、入れたが最後、デポジットしていた額もろとも奪われて返してもらえないという経験をしました。空港からホテルに向かうときに、同行者がほぼ同じ手口で100香港ドルをトレイにいれたら「おつりは出ない」と言われ、返してもらえないということがあったので、もしかしたら良くある手口なのかもしれません。

バス会社のCiTYBUS のホームページから苦情のメールを送っておきましたが、返事はまだない…

香港に行かれる方はご注意を。

かかる時間がそれほど変わらない電車にすれば良かったです。空港に向かう E21 という路線の「黄竹街」というパス停、2018/07/09 15:23 の出来事です。バスを特定しておくためにナンバーを撮っておきました。

Maker Faire Hong Kong に参加し、深センにも行ってきました - 香港編

先週の土日(7/7 - 8)におこなわれた Maker Faire Hong Kong に参加してきて、そのついでに深センにも行ってきたので、おもに写真中心で振り返ってみたいと思います。

本記事を含めた全記事は以下の通り。

まずは香港編。

空港からホテルまでのバスから見えた、ずらっと並んだいったい何階建てなんだろうという高層マンションの列。香港らしい。

ホテルの前の道路。ジャッキー・チェンとかが出てきそう。

そのホテルが1フロアに2部屋(ベッド2つがやっと置けるくらいの広さ)しかないのに24階建てで、同行者が最上階の部屋に泊まっていたので、その部屋から撮らせてもらったのがこの一枚。

映画「ブレードランナー」に出てきそう。

毎日スコールのような雨が降り、湿度が高く蒸し暑いのでこういう薄い感じのビールが良くあう。ピリ辛の羊肉を北京ダックとかを巻くときとかに出てくる皮で巻く料理、うまかった。

ホテルの近くの公園というか運動場。小学校低学年くらいのこどもでも11時過ぎまで公園で遊んでいて、なんとも不思議。

Maker Faire Honk Kong で知り合った方がファブ系のコワーキングスペースを運営していて、ぜひ遊びに来なよ、と言われていたので滞在最終日に見に行ってきました。

Innospot というところです。

こんなものが作れるようです。Godzi--lla

3Dプリンタとか、レーザーカッターとか。

地価がなかなか高い香港で、結構なスペースです。

香港の人たちは総じて親切でしたし、治安は良い感じで、0時過ぎに地下鉄の駅からホテルの間を歩いていても全く危ない感じは受けませんでした。

ただ、帰りの空港行きのバスで金額をチャージして使うオクトバスカードを運転手に取られた形になってしまったのですが、その話は気分が悪いので、別エントリーにしておきました。

» オクトパスカードをCITYBUSの運転手に取られた編

最後に香港といえばこちら、お約束の一枚。

Don't think, feel... - Bruce Lee

深セン編Maker Faire Hong Kong 編と続きます。

プロフィール

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

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

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

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ