2022-11-18
群馬県ICT教育イノベーションアドバイザー、金沢市プログラミング教育ディレクター、MAZDA Incredible Labの松田孝さんとプログラミング教育ディスカッション in 金沢 / CRAFEAT(クラフィート)。総務省地域情報化アドバイザーとして福井県にもご協力いただいています!

群馬県など、実体験を元に作成された、元学校の先生による、学校の先生向けの書籍「IchigoJamでできるテキストプログラミングの授業 | くもん出版」を出版。中学、高校での本格プログラミングに向けた体制づくり、ぜひ進めましょう。


ARで自分の料理を体験するCRAFEAT、奥村さん。写真は合成です。


「vr-crafeat」
アプリは、その場で3Dスキャンして、JavaScriptで作ったVR/AR対応のwebアプリ。iPhone 13 Proの精密距離センサーを使った3Dスキャンアプリ Scaniverse でスキャンし、3Dファイルとしてエクスポートし、JavaScriptのVR/AR用オープンソースライブラリA-Frameを使って、読み込み、3D空間上に設置するだけ。IchigoJamで言う、LOCATEとPRINTをするだけですが、ARになるとインパクトがあります。 <script type="module"> import { cr, rgb, asset } from "https://js.sabae.cc/aframe.js"; const scene = cr("a-scene"); scene.setAttribute("renderer", "colorManagement: true;"); document.body.appendChild(scene); const y = 1.53; const scale = 3; { const obj = cr("a-entity", scene); obj.setAttribute("gltf-model", asset("https://code4fukui.github.io/vr-crafeat/kani-burger.glb")); obj.setAttribute("position", { x: 0.15 * scale, y, z: -.5 }); obj.setAttribute("scale", { x: scale, y: scale, z: scale }); } { const obj = cr("a-entity", scene); obj.setAttribute("gltf-model", asset("https://code4fukui.github.io/vr-crafeat/shishiniku.glb")); obj.setAttribute("position", { x: -0.15 * scale, y, z: -.5 }); obj.setAttribute("scale", { x: scale, y: scale, z: scale }); } </script> 上記コードをWebプログラミング道場「ES-Jam」に貼り付けて、「見てみる」ボタンを押すだけ。簡単にいろいろ試せます!

ここで使っているJavaScriptもIchigoJam BASICもテキストプログラミング。

IchigoJam BASICでの表示はこんな感じで書きます(PRINTは省略形?としてもOK)

10 PRINT "A" 20 WAIT 60 30 PRINT "B" RUN

RUN on IchigoJam web

ネット上にあるさまざまなライブラリをインポートして使うことができるJavaScript。IchigoJam風の見た目と機能を提供するライブラリ ij.js を使って、JavaScript化してみましょう。
<script type="module"> import { ij } from "https://js.sabae.cc/ij.js"; ij.print("A"); await ij.wait(60); ij.print("B"); </script> ブラウザで表示するためのscriptタグ表記、ライブラリのインポートが加わり、アルファベットの小文字が基本で、awaitやカッコやセミコロンが登場しますが、ほぼ一緒ですね。

IchigoJamでおなじみ、かわくだりゲームはこんな感じです。

<script type="module"> import { ij } from "https://js.sabae.cc/ij.js"; let x = 15; for (;;) { ij.lc(x, 5); ij.print("O"); ij.lc(ij.rnd(32), 23); ij.print("*"); await ij.wait(3); x = x - ij.btn(28) + ij.btn(29); if (ij.scr(x, 5)) { break; } } </script> IchigoJam BASICと違って、行番号とGOTOを使わず、中括弧を使ったブロック「{ ... }」を使ってプログラムの流れを制御します。forのブロックで無限ループ、終盤のifで条件に一致した時だけに実行されるブロックに注目です。IchigoJam BASICには登場しない break は、ループの中断を表します。

よく使われるものだけでも10以上あるプログラミング言語ですが、基本的な書き方はどれも似たようなものなので、IchigoJam BASICで慣れてしまえば、ステップアップは容易です。Geo3x3Clawn対応、C言語も使って完成させました!


「Geo3x3 - in Clawn」

Clawnを使ったGeo3x3デコードは、標準関数だけではまだできなさそうだったので、FFI(他言語関数インターフェイス)機能を使って、JavaScriptで言うcharCodeAtとlengthを実装して、Geo3x3のデコードも実現!90言語目のサポートとなりました。


ステキ料理&食器、CRAFATE。かぐや姫が描かれた輪島塗の箱を開けると


地元の野菜を使ったステキ料理!


なんと、締めのラーメンにもカニ!


輪島塗の販売コーナー


CRAFATE in 金沢片町木倉町

links
- IchigoJamからJavaScriptへの架け橋、ij-screenタグとij.js
- IchigoJamからのステップアップ - IchigoJam BASIC / Python3 / JavaScript / Java / C言語 対照表
- 合同会社MAZDA Incredible Lab | ICTから新しい教育の形を

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS