IchigoJamでプログラミングが分かってきたら、MacやWindowsやLinuxなど、本格パソコンとつないで、できること増やそう!


用意するのはこちら
- パソコン(Mac / Windows / Linux)
- IchigoJam (or ピンソケット付きIchigoDake)
- USBシリアルコンバーター(aitendoなど)
- プラグソケットワイヤー(aitendoなど)
- USB-C変換 (DAISOなど)


プラグソケットワイヤーのソケット側、USBシリアルの3.3V、TXD、RXD、GNDに接続。


USBシリアル-IchigoJamを、3.3V→VCC、TXD→RXD、RXD→TXD、GND→GNDと接続(USBシリアルの電源が5Vの場合はCN5の5Vへ)。 シリアル通信は、TXD(Transfer、送信側)からRXD(Receiver、受信側)へとお互いにつなぐのがポイントです。 VCCとGNDを逆に挿してしまうとどちらかが壊れてしまうかもしれないので、慎重に!


IJUtilities」をダウンロードして、USBシリアルドライバを選択(今回は usbserial、SLAB_USBtoUARTなど、使用するUSBシリアルによって異なります)。
* IchigoJamのシリアル設定の標準は、115200bps、8bit、パリティなし、ストップビット1bitですが、触らなくてOK!


「Connect」して「led1」と打ち込み、エンター。IchigoJamのLEDが光ったら、遠隔操作実験、成功です!


LOAD0して、LISTで、IchigoJamに入っているプログラムをパソコンに転送できました!

せっかくなので、IchigoJamのボタンとLEDを使ったゲームをひとつ「エルチカゲームの豪華版」を作成。

1 @ARUN:'LCHIKA-GAME 100 W=10 110 T=TICK() 120 IF T%W=0 BEEP 130 A=T/W&1:LED A 150 IF BTN()=0 GOTO110 160 WAIT10 170 IF A=1 PLAY"T500<CEGEG<C" 180 IF A=0 PLAY"EC2" 190 WAIT 30 200 IF BTN()=0 CONT 210 IF BTN()=1 CONT 220 RUN

光った瞬間を見極めてボタンを押そう!
SAVE0すれば、@ARUNによって、電源に挿すだけ自動的に始まります!(止めたいときはESC)


ファームウェアをバージョンアップしたいときは、プラグプラグワイヤーを1本用意して、ISPとGNDを接続した状態で、USBシリアルをMacにつなぎます。 薄っすらとLEDが光った状態になったら成功。


IJUtilitiesのFirm Writerを選択、初回だけ設定画面がでるので、lpc21isp_fileをIJUtilitiesフォルダの中のものを指定しましょう。


IchigoJamの公式サイト、ダウンロードした最新ファームウェアを選択して、Install「Start」で書き込み開始!
バージョン表記が変わったことを確認しましょう!
(ichigojam-ntsc-jpkbd-withexchg.bin など、キーボード切り替え機能プログラム付きファームは、IchigoJamに保存されているファイル4を全部消してしまうので注意!)

zen4ijなど、パソコンを使った一歩先ゆくプログラミングにもチャレンジしてみましょう!


IchigoJam ap を使った教材「プログラミング教育マスター」が、BS12の番組「ドランクドラゴンのバカ売れ研究所! | 情報・ドキュメンタリー | BS無料放送ならBS12(トゥエルビ)」に登場!ドランクドラゴンの方々がプログラミングにチャレンジ!


初プログラミング、楽しんでくれた様子です!
YouTube公開、楽しみですね!

IchigoJamを使った、毎日30分のタイピングをしてくれた福井県勝山市立鹿谷小学校、1週間でどこまで速くなっているか!?

実験へのご協力いただいたみなさん、ありがとうございました!(データ整理はこれから!)


タイピングする鹿谷小の3年生


スキルアップタイム、もくもくとタイピングに取り組みます。


早速、全ステージクリアしてくれた、全記録!

ちょっと時間をもらってミニレクチャー
ESC押して、F4押してでてくるのがプログラム!
LED1、エンターで、LEDを光らせる、コンピューターとのおはなし第一歩。
ちょっとした英単語を組み合わせることで、いろいろ作れて楽しめます!


IchigoJamを使った電子アクセサリー、AmabieDakeに興味津々なこどもたち。


鹿谷小学校ユネスコスクール加盟校されています。


学校で興味持ったこどもたちなどへ提供する学びの場。鯖江にHana道場、勝山にPCN福井 勝山クラブ>!
イノベーティブなものづくり人材育成拠点、Hana道場は、鯖江駅から徒歩5分、松阜神社の参道沿いにあります。


Hana道場がある旧鯖江地方織物検査所は、国登録文化財、近代化産業遺産群となっています。かわいい外観もお気に入り!


Hana道場の内装は、80年前のベースはほぼそのままに、女性によるデザインでいい感じ。


先代の日本のスパコン京の一部が展示中。初代プロテレビゲーマー高橋名人のサイン入りファミカセも!

越前がにロボコンや、PCNこどもプロコンIchigoJam検定など、それぞれの目標に向けて思う存分修行できます。


福井県立科学技高校の先生による、カニロボコースを想定した、IchigoJam制御のロボットプログラミング実験!


テストに便利な裏返し。センサーとモーターの動き、思い通りにならないところの原因究明。


センサーを使って、白いところの内側を走り回るロボットが完成! なんかもうちょっとすっきり書けそうだななど、大きな達成感と小さな反省が、次のスキルアップにつながります。

Ichigoチョコは、こちらで入手可能!
教材販売 - ithink


BASICからオールマシン語まで、オープンデータとIchigoJamで創るプログラミング教育 - セミナープログラム
8/28-29、オープンソース関係オンラインイベント「オープンソースカンファレンス2020 Online/Kyoto」にて、IchigoJamのヒミツを話す機会、いただきました! 8/29(土)12:00-12:45が出番です。

福井県でのサイバーセキュリティキックオフ「サイバーセキュリティフォーラム&交流会 in 福井」が福井駅前ハピリンで無観客開催。 福井県内のセキュリティ関連の取組ピッチとして「CyberSakura こどもと学ぼうサイバーセキュリティー」を紹介。


PCNこどもプロコン2020の表彰式でも活躍した、能舞台でサイバーセキュリティ、テレビ局の取材あり!


「サイバーセキュリティは他⼈事ではない 〜これからの地域におけるサイバーセキュリティの重要性について〜」 by 前・ファイア・アイ株式会社最高技術責任者、元・経済産業省⼤⾂官房 サイバーセキュリティ・情報化審議官の伊東寛さんの基調講演オンライン
FireEyeは、アメリカ本社の売上1000億円(2019)のサイバーセキュリティ企業。


「北陸地域のサイバーセキュリティ関連活動」 by JAIST 丹康雄さん!
北陸サイバーセキュリティのキーパーソンから、とにかく仲間が大事と、イベントを通じたコミュニティへの参加の呼びかけ。
ICT研究開発機能連携推進会議(HIRP)北陸情報通信協議会(HICC)北陸サイバーセキュリティ連絡会


福井を代表する雑誌、URALAもサイバーセキュリティ参戦!


卒業研究を担当してくれた福井高専、齋藤徹さん!楽しく学ぶCTF(シーティーエフ、データ内のフラグ、データ内の FLAG{XXXXX} と表記された XXXXX を探す競技)
Simple Capture The Flag」(初心者向けに斎藤さんが作ったCTF練習問題

IchigoJamで解けるCTFを1問、IchigoJamで作ってみました!(解き方と回答はLTの後!)

10001101001100100000110001111111011100011010101011001011101010110010011111101

Hana道場では、IchiogJamでプログラミングを学んだこどもたちが、サイバーセキュリティー世界一を目指してトレーニング開始!(CybeSakuraレポート


























コンピューターとネットワークを知り、積み重ねてしまった潜在リスクと戦い、安心できるまちを作るための技術を学ぶ。
サイバーセキュリティは、単なるセキュリティーの上位概念。目に見えないリスクは、ウイルスだけにあらず。
ひとりひとりが意識持つことが、安心快適なまちづくりの基本です!

IchigoJam CTFの解き方
0と1なので2進法。
長さは77、8の倍数ではないので、単純な文字コードではなさそう。
Fの文字コードを2進法にすると ?BIN$(ASC("F")) → 1000110 先頭と一致
7bitずつ区切って、表示すれば、FLAGが現れる!

問題の作り方

1 S="FLAG{XXXXX}" 2 FORI=0TOLEN(S)-1:N=ASC(S+I):?BIN$(N,7);:NEXT:?

結構、おもしろいですね!
IchigoJamプリントネタとしてもいいかも!
33ステップで解説、GitHubオープンソース貢献入門、IchigoJamプリントをつくってみよう!「もじのしょうたい CHR$/ASC」とはじめてのプルリク

パソコン活用、プログラミングする上でも欠かせないタイピング。慣れていないと何をするにも時間がかかってしまいます。 タイピング苦手・・・と思ってしまう前、早いタイミングで遊びながら慣れてもらうのがいいでしょう。

どんなものでも上達のコツは毎日すること。ちょっとずつ1週間練習して、タイピング速度はどこまで速くなるでしょう?


IchigoJamを使ったプログラミングしない学習実験にご協力いただいた、福井県勝山市立鹿谷小学校の全3年生、15名。 A〜Z、アルファベットを覚え始めた頃ならいつでも始められるのがタイピング。ゲーム感覚で楽しくタイピング力、鍛えましょう!


今日の3年生の時間割、5時間目は総合、タイピングの時間!


箱に詰まったIchigoDyhook、皆さん自身で取りに来てもらい、片付けてもらうことで、先生の手間いらず!


記録がでたら、モードと番号と合わせて記録してもらいます。なわとび記録の要領です。


ある児童の記録。モード4、AからZまでランダムに出題されるタイピング、初回は80秒が、45秒まで縮んでます!


用意したモードは6つ。
1. 覚えるの簡単、数字のみ
2. 左手だけで打てるAからG
3. 右手だけで打てるHからN
4. 全アルファベット(計測対象)
5. 記号(おまけ、プログラミングなどでよく使う)
6. ランダムに出題される単語を打とう(上級編)

それぞれ起動後の最短記録が表示されます。


出題は10文字、間違えると音が鳴ります。どこにあるか最初は探すのに時間がかかりますが、それも間違い探し的で楽しんでくれてます。


謎に最高難易度、記号タイピングが人気!シフトキーの使い方、伝授しました。


ご協力いただいた、福井県勝山市立鹿谷小学校の校長先生と!
3年生はタイピング、4年生は算数、5年生は英語、3種3学年、1週間のチャレンジ。成長、感想、楽しみです!

早速、ブログで書いていただいてました!
鹿谷小学校blog: さわってみよう!IchigoDyhook

KPTでふりかえり

K = Keep (よかったこと)
- 楽しんでくれた!
- 難しい記号入力が意外と人気だった!(チャレンジ=楽しい!)
- 機材トラブルなし

PとT = Problem(問題点)と Try(改善)
- 0と8の判別が難しそう → VIDEO3の拡大文字モードへ
- タイム表示が見づらそう → 行間空けて見やすく
- モード6の単語が長い → 10単語を5単語へ
- ESC押してプログラムが止まった → 変だなと思ったら電源OFF/ONでOK!と最初に案内
- モード5の記号が初見では無理 → SHIFTの使い方解説を途中でするか最初はなしにする(シフト押してね表示をプログラムでいれるのも良さそう)

下記プログラムをライトプロテクトモードで書き込んだIchigoDakeを使っているので、消えちゃうトラブルは発生せず安心です。 プログラミング分かる子は、改造して遊んじゃうかも!?

NEW 1 @ARUN:'TYPING! 10 CLS:VIDEO3:?"TYPING!":F=101-6 20 LET[0],"NUM","A-G","H-N","A-Z","SYM","WORD" 30 FORI=1TO6:Y=2+I:LC1,Y:?I;".";STR$([I-1]) 32 T=[F+I]:IFTLC8,Y:GSB600 35 NEXT 40 K=INKEY()-48:IFK<1ORK>6CONT 50 Z=K:LC0,2+Z:?"*":WAIT30:SRNDTICK() 55 CLS:IFZ=6R=280:LRUN1 56 LET[0],48,10,0,65,7,0,72,7,0,65,26,0,33,22,10 60 W=[Z*3-3]:N=[Z*3-2]:Q=[Z*3-1] 100 L=10:?Z;".HIT ";L;" CHARS!":GSB700 120 LC0,4:FORI=1TOL:C=RND(N):?CHR$(C+W+Q*(C>14));:NEXT 130 GSB500:GOTO280 280 LC0,7:T=TICK()/6:GSB600:WAIT30 285 P=[F+Z]:IFP=0||T<P[F+Z]=T:?:?"FASTEST!":WAIT30 290 LC0,11:?"1.RETRY 2.HOME"; 300 K=INKEY():IFK=49GOTO55ELSEIFK=50RUNELSECONT 500 U=#900+4*16:M=0 510 K=INKEY():IF!KCONTELSEIFK!=ASC(U+M)BEEP:CONT 520 LCM,5:?CHR$(K):M=M+1:IFM<LGOTO510 530 RTN 600 ?DEC$(T/10,3);".";T%10;"sec":RTN 700 WAIT30:?:?"START!":WAIT30:CLT:RTN SAVE0 NEW 10 LET[0],"HELLO","GOOD","RED","CAT","DOG","SCHOOL","PEOPLE","MORING","NIGHT","NOON" 20 LET[10],"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","TEN" 30 LET[20],"BLUE","GREEN","BLACK","WHITE","BROWN","PURPLE","APPLE","ORANGE","BANANA" 40 LET[29],0 210 CLS:N=0:FORI=0TO1:N=N+1:I=[N]=0:NEXT 220 ?Z;".HIT 5 WORDS!":GSB700 240 FORI=1TO5:LC0,5:?CHR$(#C):S=RND(N):LC0,4:?CHR$(#C);STR$([S]); 250 L=LEN([S]):GSB500:NEXT 260 LRUN0,R 500 U=#900+4*16:M=0 510 K=INKEY():IF!KCONTELSEIFK!=ASC(U+M)BEEP:CONT 520 LCM,5:?CHR$(K):M=M+1:IFM<LGOTO510 530 RTN 700 WAIT30:?:?"START!":WAIT30:CLT:RTN SAVE1 LRUN0

オープンソースで、改造も簡単なIchigoJam BASICを使った学習教材づくり。 丸付けが大変、いい教材がない、そんな先生の悩みを解決するのもプログラミング!


恐竜のまち、勝山。新しくオープンした「道の駅 恐竜渓谷かつやま」のラプトルバーガー、かわいい! 恐竜をテーマにしたプログラミングやロボットも楽しそう!

TEAM IchigoJamほっかいどうより、お届けもの!プログラミングの楽しさをモノづくりをとおして伝える、新JAMCARのβ版が到着!

たくさんのわくわくする部品!


レーザーカッターで切り出したシャーシは、水に浸けておきましょう。5分もすれば、するっとむけます。


金属のモーターの外枠に接してしまわないよう絶縁用のテープを貼り、モーターにはノイズ対策コンデンサと合わせてはんだづけ。


モーターモジュールの組み立てます。


モータードライバの基板はモーター間の隙間、3Dプリンターで作った筐体内にくるっと格納!


タイヤを付けます。ビー玉を光造形3Dプリンターで作ったと思われる、3輪目モジュールがすごい。


単4電池x2の電池ケースを格納する場所。


シャーシを組み立てていきます。


プッシュリベットが便利!


IchigoDakeを乗っける場所ができました。


ロボットの目となる超音波センサーと、ロボットの口(?)として表情伝える8連LED。


目と口が付いてかわいい!(すみません、8連フルカラーLEDの取り付け向きが上下逆でした!)


バンパー基板は製作中とのことで、ユニバーサル基板とスイッチはんだ済みのバンパー用の部品。


バンパーモジュールの裏面。抵抗はしでのはんだづけも楽しい!


バンパーモジュールの表面。


ロボット筐体ができました!


続いて、IchigoDake(またはIchigoJam)に接続するベース基板の部品群。


楽しいはんだづけ、25分ほどで完成!よく使う電源ピン(VCC/GND)が増設されてます。
左のスイッチは電池を電源として使う用。ロボットとして動かしている時は停止に使えます。
右のスイッチはモーター用。テスト中はモーターの動きを4つのLEDで確認し、実際には走らせなくてもテストできて便利!

あとは、説明書どおりに配線したらできあがり!


IchigoDakeにIchigoIgaiを挿してプログラミング!
先頭行に @ARUN をいれておくと、自動起動します!(ver 1.4)

1 @ARUN 10 OUT10 20 GSB@GETDIS 30 IF A>1 GOTO 10 40 OUT0:WAIT30 50 OUT12+6*RND(2) 60 GOTO10 300 @GETDIS 310 A=0:OUT6,1:OUT6,0 320 IF IN(1) A=A+1:CONT 330 ?A 340 FORI=0TO7:LET[I*3],(I<A)*10,10,0:NEXT:WS.LED8 350 RTN

OUT10で前進。センサーが反応したら、OUT12かOUT18、ランダムに右左行って、繰り返し。
300行からの@GETDISで、超音波センサーから距離を取得しつつ、LEDの色で反応した距離を表示するBASICプログラムです。 マシン語化したり、VIDEO0で高速化すると、もっと細かく取得できます。
こんな感じに動きます!


口のように見える?光でプログラミング表情、おもしろい!


右前と左後ろのモーター作動を知らせるLED。


拡張モジュール、2方向、光センサー基板!


いろんな制御で遊べそうです!


IchigoIgaiの代わりに、IchigoDyhookの下にIchigoDyhookの箱などで少し高くして、新JAMCARを直接接続もいい感じ!

正式版、公開、楽しみですね!
TEAM IchigoJamほっかいどう 2019 – nextday programming kids

links
- IchigoJam – nextday programming kids

コンピューターへのコミュニケーションに欠かせないキーボード。 打ち心地や、キー配列など、毎日使うものだから、こだわりたい。 社内のキーボード自作ブームに乗って、まずは有名な赤軸青軸、それぞれ1キーずつ買って、レンダ性能を確認してみます。


さて、最速はどの軸か!? (軸仕入れ元「遊舎工房」、「軸の本」なるものも!)


裏面には端子がふたつ。そう、回路的にはただのスイッチです。なので、キーとキーキャップの1組から、IchigoJamなどに気軽につなげて遊べます。


モデルづくりはBlender。14mm x 14mm の穴を空けておけば、いい感じです。3つ入るキーも設計中。配線用の穴も空けておきましょう。


テスト用1キーバージョン。薄くつくりすぎて、若干びよびよと出ていますが、隠れるので問題なし。(配線穴ないので自分で開けてね版、3Dプリンター用 stlファイル


ちょうどいい小さな基板があったので、1枚使用。


10kΩでプルアップ(信号線を大きめの抵抗を経由して電源にもつないでおくこと)
IN2は、アナログにも使用するためプルアップなし。
IN3は、I2C用端子との共有な関係で外部プルアップが必要です。
IN1、IN4は、コンピューター内部でプルアップ設定してあるので、直接接続でOKです。


裏面、抵抗の切れ端を使って配線。


ひとまず1つ挿してみた。かわいい。


IN2とIN3をプルアップする入力デバイスのできあがり!


赤軸を装着。


裏面。


1行プログラムで動作確認。軽快です!

1 ?IN(1);:CONT

こちら、100レンダする時間を表示する IchigoJam BASIC のプログラム。フレームで待っているわけではないので、PCで計測するより正確です。

100 VIDEO5 110 FOR I=3 TO 1 STEP -1 120 CLS:?I:WAIT30 130 NEXT 140 CLS:?"GO!":CLT 150 FOR I=100 TO 1 STEP -1 160 ?I 170 IF IN(1) CONT 180 IF !IN(1) CONT 190 NEXT 200 T=TICK() 210 ?T/60;".";T%60/6;"ビョウ"


ギリギリ10秒を切れた。レンダ、意外と大変です。仮に16連射すると、タイムは6.2秒。名人、すごい!

オリジナルのゲームコントローラーなど、制御パネルづくりにも良いですね!
コンピューターと人との接点、ぴったりな軸、探してみましょう。

links
- 遊舎工房 | 自作キーボード&レーザーカット&UVプリント(はんだづけコーナー、あり)
- 軸の本 Mechanical Switch Data Book EARLY ACCESS - Romly Shop - BOOTH
- 軸の本2 Mechanical Switch Data Book 2 - Romly Shop - BOOTH
- メカニカルキーボードの「軸」ってどれがいいの?【違いを解説】 | けしろぐ

プログラミングの必修化、2020年から小学校、2021年から中学校、2022年から高校でスタート。 高校では「情報I」という必修と、選択の「情報II」にてプログラミングが登場します。 教員研修用教材が公開されたので貢献できるところを探してみました。


高等学校情報科「情報Ⅰ」「情報II」教員研修用教材
一番気になるのは「高等学校情報科「情報Ⅰ」教員研修用教材(本編)」の「第3章コンピュータとプログラミング」。 Python版を基本に、他のプログラミング言語版として、 JavaScript版VBA版ドリトル版 Swift版の5つのプログラミング言語を教員が選ぶスタイルになっている。

まず一番気になったのは、他言語版として用意されたものに、API・グラフ描画・ハードウェア制御の実習が省略されていること。

さらにこの数式モデルの計算結果をわかりやすく評価するため,グラフで表示することが可能なプログラミング 言語もある。
※ JavaScript では実行が難しいため,本書においては割愛する。
高等学校情報科「情報I」教員研修用教材 JavaScript版 (第3章のみ) P43
世界中にある多種多様なライブラリがあり、ブラウザのみで動作するJavaScript、グラフ表示も簡単です。オープンソースな実装と共に実習例を紹介する。

学習16で登場する福利計算。まずは下記は10年分の預金残高を表示するプログラム。model1.html というファイル名で、テキスト形式(utf-8)で保存し、ブラウザで開くだけで動く。

<script type="module"> let yokin = 100000; const riritsu = 0.05; for (let i = 0; i < 10; i++) { const risoku = yokin * riritsu; yokin += risoku; alert(`${i + 1} 年目 : ${yokin}`); } </script>


document.write や、type="module" ではない古いJavaScript(クラシックスクリプト)は2022年に教える内容としてはふさわしくないので要修正(*)。


学習16 預金複利計算のグラフ」(src on GitHub)

<body style="margin:0"> <canvas id="chart"></canvas> <script type="module"> import Chart from "https://code4sabae.github.io/kafumon/lib/Chart.mjs"; const riritsu = 0.05; const yokin = [100000]; const labels = []; for (let i = 0; i < 10; i++) { const risoku = Math.floor(yokin[i] * riritsu); yokin.push(yokin[i] + risoku); labels[i] = i + 1; } const config = { type: "line", data: { labels: labels, datasets: [{ data: yokin, borderColor: 'rgb(255, 99, 132)', fill: false, lineTension: 0 }] }, options: { title: { display: true, text: "FUKURI KEISAN" }, scales: { xAxes: [{ scaleLabel: { display: true, labelString: "Year" } }], yAxes: [{ scaleLabel: { display: true, labelString: "Yokin[YEN]" }, ticks: { beginAtZero: true } }], }, legend: { display: false } } }; new Chart.Chart(chart, config); </script>

グラフ化するライブラリとして、東京都の新型コロナウイルス対策サイトでも使われた「Chart.js」のモジュールスクリプト版「Chart.mjs」を使用。 こちらも graph1.html として保存して、ブラウザで開くだけで動作する。


5%10年では複利の効きが分かりづらいので、50年に変更した図がこちら。for文、繰り返しの回数をいろいろ変更してみるとおもしろい。

続いて、サイコロの確率のグラフ化。

学習16 サイコロの出目確率のグラフ」(src on GitHub)
type: "bar" で棒グラフにできます。 試行回数がたかだか100回だと期待値から大きく外れることがわかります。ブラウザを何度かリロードしてみましょう。

<body style="margin:0"> <canvas id="chart"></canvas> <script type="module"> import Chart from "https://code4sabae.github.io/kafumon/lib/Chart.mjs"; const deme = [0, 0, 0, 0, 0, 0] // 出目の数を数える配列 for (let i = 0; i < 100; i++) { const saikoro = Math.floor(Math.random() * 6 + 1); deme[saikoro - 1]++; } const left = [1, 2, 3, 4, 5, 6] // グラフの左方向の値指定用 const config = { type: "bar", data: { labels: left, datasets: [{ data: deme, backgroundColor: 'rgb(255, 99, 132)' }] }, options: { title: { display: true, text: "SAIKORO SIMULATION" }, scales: { xAxes: [{ scaleLabel: { display: true, labelString: "ME" } }], yAxes: [{ scaleLabel: { display: true, labelString: "KAISUU" }, ticks: { beginAtZero: true } }], }, legend: { display: false } } }; new Chart.Chart(chart, config); </script>

グラフの細かい設定は、Chart.jsのドキュメントを案内するといいでしょう。 まずは色を変えてみるとか、簡単なところ試行錯誤するのが楽しく学習するポイントです。


こちらもfor文内の繰り返し回数を増やすと確率のばらつきが収まっていく様子がわかります。 600回、6000回、60000回と増やしていくと分かりやすいです。


学習16 モンテカルロで円周率」(src on GitHub)
乱数を使った円周率の求め方、モンテカルロ法。点の数を増やすほどに精度が高くなることがわかります。グラフのtypeは、bubbleを使用。

<body style="margin:0"> <canvas id="chart" width="100" height="100"></canvas> 円周率: <span id="pi"></span> <script type="module"> import Chart from "https://code4sabae.github.io/kafumon/lib/Chart.mjs"; const red = []; const blue = []; const totalcount = 2000; // ランダムに打つ点の総数 let incount = 0; // 円に入った点の数 for (let i = 0; i < totalcount; i++) { const x = Math.random(); // 0-1 の範囲の値 const y = Math.random(); // 0-1 の範囲の値 if (x ** 2 + y ** 2 < 1.0) { // 単位円の中に入ったら incount++; // 入ったらカウンターに1を加える red.push({ x, y }); // 赤色でプロット準備 } else { blue.push({ x, y }); // 青色でプロット準備 } } pi.textContent = incount * 4.0 / totalcount; // 求まった円周率 const config = { type: 'bubble', data: { datasets: [ { data: red, backgroundColor: 'rgb(255, 99, 132)' }, { data: blue, backgroundColor: 'rgb(132, 99, 255)' } ] }, options: { animation: { duration: 0 }, title: { display: true, text: "Monte Carlo method" }, legend: { display: false } } }; new Chart.Chart(chart, config); </script>

JavaScriptを使ってもプログラミング実習できることを示しました。API編、ハードウェア編も別途書いて、GitHubへ追記しようと思います。
高等学校情報科「情報I」教育研修用教材プログラム集

もし、上記内容が難しく感じたとしたら、コンピューターやパソコンに関する基礎的な学習、タイピングや操作に対するある程度の慣れが必要です。

要修正、補足
* document.writeは、alert、console.log、DOM操作に置き換える。(w3.org document.write: Warning! This method has very idiosyncratic behavior.Document.write() - Web API | MDN
* 変数スコープが分かりやすく動作する strict mode を基本にする。(* Strict モード - JavaScript | MDNJavaScript モジュール - JavaScript | MDN

神山まるごと高専の技術教育統括ディレクター候補として、情報技術やプログラミングに関する教材のオープンデータ化を推進中です。 こんな教材がほしい、ここが分かりづらかった、一緒に教材を作りたいなど、協力したいという情報系高専生、ぜひご一報を!(夏のインターンプログラムも受付中 2020-07-10まで

ITの楽しさ伝える、福井県立科学技術高校、2年生全員向け講演。

体育館に掲げられている「技」と「創」が良い!


情報技術に関してとリクエストいただいたので「情報技術の活かし方・遊び方・学び方」と題したプレゼンテーション、IchigoJamゲームのライブコーディング、質疑応答の50分。


IchigoJamのCPU、凄い!という感想。作った私も凄いと思ったほどです。100円なのにね。スライドの16:9化に伴い、京と富岳を並べる形にアップグレード。 同じ予算なのに性能100倍!世界一のスパコン「富岳」の活躍、これからも楽しみです。


こちら、引退したスパコン「京」で、実際動いてたコンピューター。かっこいい!
7億6000万個のトランジスタでできているこのコンピューターを、88,128個つないで動かしていたのがスパコン京。 CPUの動作周波数は2GHzとみなさんのスマホと同等です。IchigoJamの48MHzともたかだか40倍しか変わりません。

計算が速い=時間の創出=社会が豊かになる

IchigoJamで三平方の定理を使った斜めの距離計算をやってみましょう。

10 ?"CALC LEN" 20 INPUT "X?",X 30 INPUT "Y?",Y 40 N=X*X+Y*Y 50 ?"X*X+Y*Y=";N

横(X)と縦(Y)の長さを入れてもらって、それぞれ自乗したものを足した数(N)。これのルートをとれば斜めの距離がでます。 ルートを計算するコマンドはないので、ひとまずシンプルに愚直に繰り返して求めてみましょう。

60 L=0 70 L=L+1 80 IF L*L<=N GOTO 70 90 L=L-1 100 ?"SQRT(";N;")=";L

長さ(L)を1足しながら自乗した値が先程計算したNを超えたら、1戻して表示するプログラム。 X=3、Y=4で結果Lが5とでました!

30, 40 だと、50。100,100だと144。数が大きくなると遅くなります。IchigoJam BASIC は、1コマンド1文字ずつ間違いがないか確認しながら丁寧に実行するので、間違っても安心な楽ちん言語ですが、その分速度が犠牲になっています。

そんな時は「マシン語」、コンピューターの能力をフルに引き出してみましょう。 BASICに似たマシン語生成用プログラミング言語 asm15 を使ったルートの計算はこちら。

R1=0 @LOOP R1+=1 R2=R1 R2*=R2 R0-R2 IF GE GOTO @LOOP R0=R1-1 RET

変数の代わりにコンピューター内部にある最も高速なメモリ、レジスタ(R0〜)を使います。IF GE GOTO は、もし、直前の計算結果が0以上だったらを意味する(GE)を使って、ループしています。 やってることはほぼ同じですね。

C言語と同様、これをマシン語に変換します。asm15 assemblerを使ってできたマシン語をメモリに書き込み、USR関数を使って呼び出しましょう。

POKE#700,0,33,1,49,10,70,82,67,144,66,250,218,72,30,112,71 ?USR(#700,25) 5 ?USR(#700,10000) 144

計算できました!大きな値でも一瞬ですね!
IchigoJamは1秒間5000万回、富岳は100京回、マシン語を使うとコンピューターの性能をフルに引き出せます。

汎用的に使えるC言語(IchigoJam BASICもC言語で作っています)、スマホやPC、サーバーでも気軽に動かせるJavaScript、並列処理に便利なC言語に似たGLSLなど、用途に合わせたいろんな言語も最終的にはそれぞれのコンピューターに合わせたマシン語となって動いています。

コンピューターと人間はステキな補完関係、うまく付き合っていきましょう!


HTMLはじめのいっぽ
30分でOK、HTMLからはじめる、自分だけのアプリづくり入門。CSSでデザインに凝るもよし、JavaScriptで動きに凝るも良し。


科学技術高校生による福井県てぬぐいがステキです!オリジナルスマホアプリづくりにもぜひチャレンジしたくなったら、どうぞお声がけください!


ハードウェア好きなら、栃木県立栃木工業高校による「SkyBerryJAM」のように、IchigoJamをベースにした、オリジナルハードづくり、楽しいかも?


講演資料「情報技術の活かし方・遊び方・学び方
CC BY のオープンデータです。ご活用ください!

福井県立科学技術高校のみなさん、楽しい時間、ありがとうございました!

携帯キャリアを使ったWiFi不要で、どこでも使える月額60円IoT、sakura.ioに新機能!
sakura.io 新オプションサービス「デバイス間通信」提供開始のご案内 | さくらインターネット

いままでサーバープログラムを経由しないとできなかったsakura.ioデバイス同士の通信が、管理画面で設定するだけで送れるようになりました! 早速、IchigoJamのIoTバージョン、IchigoSodaを使って実験したところ、超簡単!片方のIchigoSodaで次のコマンド。(for IchigoJam BASIC 1.4)

IOT.OUT 1234

設定したもう一方のIchigoSodaで

?IOT.IN() 1234 OK

通信できた!(DataStoreにも同時に貯めたり、指定したwebへ送信と併用OK!)

sakura.ioのコントロールパネルで、プロジェクトを作成、デバイスを登録し、デバイス間通信から、通信元と通信先を選ぶだけ!

動画デモです。

1. 右側のIcihgoSodaのボタンを押すと、左側のIchigoSodaのLEDが光る!
送信側

10 IF BTN()=0 CONT 20 IOT.OUT 2 30 IF BTN()=1 CONT 40 IOT.OUT 1 50 GOTO 10

受信側

10 N=IOT.IN() 20 IF N=2 LED 1 30 IF N=1 LED 0 40 GOTO 10

2. 文字列を相互に送り合うチャット!(入力時、先頭に「"」を付けてください )
どちらも同じプログラム(最大8文字まで、40行を8の倍数で128まで変更可能)

10 N=IOT.IN() 20 IF N ?">";STR$(N) 30 INPUT S 40 IF S OUT.IOT S,8 50 GOTO 10

3. 受信したら即、表示することもできます!
上記プログラムから30行、40行を削除

10 N=IOT.IN() 20 IF N ?">";STR$(N) 50 GOTO 10


IchigoSodaを持ってる人同士でいろいろ通信して遊べそうですね!
同じ送信元から複数の送信先を選べば、まとめて送信することもできます(最大設定数100)


CPUの上側についている小さなディップスイッチ、下側の[WAKE]設定を[EN](有効)側に切り替えて、IN2とGNDをLEDでつなぐと、何か受信した時にLEDを光ってお知らせすることもできます。 チャットで入力中にもメッセージ受信が分かって便利ですね。

岡山県の宇野バスでは、バスの混み具合と位置情報を送るバスIoTでの実用も始まりました!


IchigoJam BASICで、お手軽IoT、ますます加速していきそうです。 links
- sakura.io 新オプションサービス「デバイス間通信」提供開始のご案内 | さくらインターネット
- さくらインターネットが提供するIoTプラットフォームサービス、sakura.io | IchigoSoda/IchigoJam for sakura.io(ファームウェアの更新が必要です)

読めない漢字でロスする時間はもったいない。ふりがな付きドキュメントを用意して、低学年でも学びたいだけ学べる環境づくり、進めたいですね。

学校のクラブ活動での活用を想定して作成している、プログラミングで学ぶシリーズ「IchigoJamプリント」にふりがな付き「かけざん名人」を追加! と、同時に漢字にふりがなをHTMLのrubyタグを使った生成する、furigana-es を公開。

IchigoJam/furigana-es>IchigoJam/furigana-es on GitHub
HTML内にこんな風に埋め込み、CSVファイルと共にご利用ください。

<script type="module"> import furigana from "https://ichigojam.github.io/furigana-es/furigana.mjs"; window.onload = async () => await furigana.addRuby("kana.csv"); </script>


かけざん名人 - IchigoJamプリント
IchigoJamプリントは、A5印刷にちょうどいいように作成している、オープンデータなIchigoJamでの自学教材です。 GitHubでのオープンソース、貢献(バグ報告、ご要望、新しい教材作ったり修正案をプルリクしたり)も歓迎です!

links
- 「最強のプログラミング教育」著書、松田さんのオンラインお茶会、ホームIoTではじめる大人プログラミング
- プログラミングD分類、鯖江市では全小学校でIchigoJamを使ったプログラミングクラブとキーボードはじめのいっぽ

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS