ブラウザの上部に「安全ではありません」「Not Secure」と出るサイト。だいぶ少なくなってきましたが、まだ目にします。

安全ではないと言われると普通、心穏やかではいられません。それを見たら、すぐに閉じるという人もいました。よく見るので特に気にしていない人は、それはそれで危険です。

日経新聞一面にてそのリスクが発表されたのが2017年。 富山、北海道、大阪、奈良、栃木、この5都道府県はSSL未対応。早急に対応が求められます。

都道府県AOSSLダッシュボード (カラム地図7x7)」(DATA on GitHub)

ここでいう「安全ではない」とは、見ているページのデータや、何か送信したデータがSSLによって暗号化されておらず、インターネットを構成するコンピューター群を伝わっていく途中で盗み見されたり、改ざんされたりする可能性があることを意味します。

例えば行政のサイトがSSLではない場合、電子申請へのリンク先が全然違うサーバーになっていて個人情報を奪われるリスクを考えたり、自治体の情報が何らかの情報に書き換えられたものかもしれないと疑う必要があるため、そもそも新型コロナウイルスなど、重要な情報が信頼できないことになってしまっています。 (新型コロナウイルス対策ダッシュボードでも非SSL情報源の扱いを考えないと・・・)

日本の自治体のSSL取組率は72%。まだ100%になっている県はないようです。 残る非SSL自治体は、あわら市美浜町だけとなった福井県、サイバーセキュリティのキックオフイベントでのピッチ動画をいただきました。


越前がにロボコンは、こどもとともに、大人がコンピューターを基本から楽しく学ぶ、福井県庁協力のプロジェクト。 「こどもプログラミング実業団」と、その後のサイバーセキュリティ教育プログラム「CyberSakura」を、どうぞご活用ください!

今こそ必要なDX、サイバーセキュリティとうまく付き合い、AI/IoTをあらゆる業界が活用していきましょう!

links
- 地方公共団体サイト、97%に改ざん・盗み見リスク - 日経新聞一面で喚起された常時SSL(AOSSL)しないリスクと未来の情報発信
- 世界一安心できるまちを目指そう、福井県。サイバーセキュリティはじめの一歩は誰にとっても必要なものと知ること。IchigoJamでもCTF!

総務省主催の「WiCON / 高専ワイヤレスIoTコンテスト2020」の二次審査会がありました。 ハードもソフトも強い高専生ならでは。そんな高専生におなじみ電子パーツ専門店「秋月電子通商」のwebサイト。 コピペ時に、伝統の全角英数が気になります。


思いつく解決方法は3つ
1. プロキシーで変換する(HTTPなので変換可能)→ 全通信が通って重い
2. ブラウザ上で変換する(Chrome拡張)→ 特定サイトのみ適応できて軽い
3. コピーする際に変換する(Chrome拡張で可能?)→ 調査に時間かかるかも

ということで、スピード優先、2でいきます。FAXっぽいwebに続く、Chrome拡張第二弾。(src on GitHub)

Chrome拡張の設定ファイル manifest.json を用意します。

{ "name": "zen2han", "version": "1.0.0", "manifest_version": 2, "description": "zenkaku alphabets and numbers to hankaku", "content_scripts": [{ "matches": ["*://akizukidenshi.com/*"], "js": ["content.js"] }] }

matchesで適応するサイトを指定、jsで今から作成するプログラムのファイル名 content.js を指定しておきます。

const toHalf = s => { if (s === null || s === undefined) return s const ZEN = "0123456789()/−!&: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" const HAN = "0123456789()/-!&: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" let s2 = "" for (const c of s) { const n = ZEN.indexOf(c) if (n >= 0) { s2 += HAN.charAt(n) } else { s2 += c } } return s2 } const toHalfText = parent => { if (parent.children.length === 0) { parent.textContent = toHalf(parent.textContent); } else { for (const c of parent.children) { toHalfText(c); } } } toHalfText(document.body); document.title = toHalf(document.title);

HTMLのドキュメント構造(DOM)を再帰的に辿り、子を持たない textContent の全角英数を半角英数に変更するJavaScriptのプログラムです。 ついでに、タイトルも変換しておきましょう。

あとは chrome://extensions/ を開き、「Load unpacked」で読み込むだけ!
適応したい他のサイトがあれば、matchesをいじり、リロードしましょう。快適電子パーツブラウジングが完成です!

経産省のオープンソース、IMIコンポーネントツール全角半角統一コンポーネントなど外部ライブラリを使った変換もありですが、強力すぎるChrome拡張、セキュリティ確保のために極力依存なしでの実装がオススメです。 (Hana道場では中学生がサイバーセキュリティ入門スタート!


今年から審査委員として参加中。日本中にある高専、その地域性も審査項目の一つ。それぞれ特色あるバラエティー豊かな作品達。 採択されたテーマの仕上がりが楽しみです。残念ながら採択されなかったものも、チャンスはたくさんあります。ぜひ独自に実現する道、探りましょう。応援します!


高専ワイヤレスIoTコンテスト(WiCON) (@Kosen_WiCON) / Twitter
高専ワイヤレスIoTコンテスト、通称WiCONのタイトルロゴも決定!Twitterの運用も始まりました。 きっと来年度も開催されるので、身近な課題5GやIoTなど、ワイヤレスで解決できそうなネタ、普段から意識してみるといいですよ。

イノベーションのタネは様々な日常にあり。
視界広げていきましょう!

日本社会にテクノロジーが根付かない原因は信頼か? 独自開発のIoTとZen言語による解決を目指すコネクトフリーCEO、帝都久利寿さん。 マイクロソフトと任天堂があるシアトル出身、5才からプログラミングし、10代で会社を売却し、単独来日、再び創業。 日本&技術好きの同志。

プログラムが使うメモリ、使ったまま忘れたり、使ってはいけないところを触るとソフトウェアは停止する。 このいわゆるバグは、アプリを使う人をイライラさせ、車や社会インフラなどで起きると多大な影響を引き起こす。

現在主力となっているプログラミング言語の解決方法に、自動的にメモリを回収する仕組みを使う方法(GoやTypeScriptなど)、所有権という概念を入れて管理する(Rust)という方法がある。 Zen言語はそのどちらでもなく、後片付け構文とメモリ確保の明確化で安全にするというアプローチ。

IchigoJam BASICでは、そもそも使うメモリ量を固定化しているため問題が起きない。 Zen言語はこの古典定期かつ堅牢なメモリ使用方法を、一段上位で管理するイメージ。

GCを使う言語はランタイム(作ったプログラムを動かすために必要なベースプログラム)で容量が大きくなってしまうが、ZenはRust同様、ゼロランタイム。 IchigoJamなど、小さな組み込み用途にも使える。


zen4ij - Zen language for IcihgoJam
早速実験「かわくだり」のZen言語版が動いた。コンパイル済みバイナリ124byteと小さい。
(参考、Rust版 132byte、C版 116byte、Ruby版 325byte + runtime 2,376byte)

const ij = @import("std15.zen"); export fn main() i32 { ij.cls(); var x: i32 = 15; var score: i32 = 0; while (true) { ij.locate(x, 5); ij.putc(236); ij.locate(ij.rnd(32), 23); ij.putc('*'); ij.putc(10); ij.wait(3); const c = ij.inkey(); if (c == 28) { x -= 1; } if (c == 29) { x += 1; } if (ij.scr(x, 5) != 0) { break; } score += 1; } return score; }

IchigoJam BASICのかわくだり 150byteとの比較

10 CLS:X=15:S=0 20 LC X,5:?CHR$(236) 30 LC RND(32),23:?"*" 40 WAIT 3 50 C=INKEY() 60 X=X-(C=28)+(C=29) 70 IF SCR(X,5) ?S:END 80 S=S+1 90 GOTO 20

@マークで始まるものはZenの組み込み関数、std15.zenにてIchigoJamのAPIを定義している。 例えば、1文字表示するij.putcは、下記のように定義し、IchigoJam APIと接続している。

pub fn putc(x: u8) void { const addr = @intToPtr(*u16, 0xC4); const f = @intToPtr(fn(u8) void, addr.*); f(x); }

u8は、符号なし(unsigned)8bitの意味。Rustに似ているが、関数の返り値型に"->"が不要でよりコンパクト。 @intToPtrを使うことで、物理メモリにもアクセスできるので、OSづくりにも対応できる。(Rustではunsafeを使用する)


Zen言語のドキュメントだけでなく,コンパイラのエラーも日本語対応!優しい! (コンソールで export LANG=ja と設定してみよう)
ごきげんよう、Zenへようこそ | Zen Language Documentation


IchigoDyhookがあれば、亀蔵でもサクっと取り出し、 IchigoJam BASIC プログラミング!
久利寿氏、超久々のBASICでPRINT/GOTOループを決めているところ。

社会のあちこちで活躍するソフトウェアだが、本領発揮はまだまだこれから!
日本のソフトウェア技術力、どんどん上げていこう!


@yrm__ (IchigoLatte MINIScript)、 @kristopher (Zen language)、 @taisukef (IchigoJam BASIC)
国産言語プチサミット in 鯖江!

links
- C言語よりコンパクトに! Zen言語開発者からのプルリクとマシン語の気持ち

IchigoJamに高性能な目を付けてみましょう。
目とは、光の三原色の強さを二次元配列上に受け取り、左右の差で立体的に知覚する器官。
カメラはそれをデジタルで実現したデバイスです。

毎秒何十枚もの画像を処理するのはIchigoJamのCPUでは荷が重いので、画像処理付きのデバイスを使います。 秋月電子で見つけた「Sipeed M1n Module AI Development Kit based on K210(RISC-V)」を使って、赤が右にあるか左にあるかをデジタル入力で受け取れるセンサーを作ってみました。


センサー実験と、IchigoJamにつないで動かしている様子。


64bit RISC-V 400MHz x 2core + AIエンジン + カメラ で、1,450円、すごい時代です。


LEDを光らせてみましょう。
IchigoJamよりちょっとだけむずかしいです。
WindowsやMacが使いこなせるようになったら、ぜひチャレンジしてみましょう!
USB-Cで接続し、CoolTerm(for macOS)などで接続して、microPythonでプログラミングします。

fm.register(20, fm.fpioa.GPIO1) led = GPIO(GPIO.GPIO1, GPIO.OUT) led.value(1)

お行儀が悪いですが、20ピンとGNDにLEDを直結して実験してみましょう。 コンピューターK210は、ピン毎に自由に機能を割り当てできます。fm.registerで表にでているGNDの隣の20ピンにGPIO1を割り当て、GPIO1をOUTに設定。 valueで1に設定すると、光ります!

while 1: led.value(1) time.sleep(0.5) led.value(0) time.sleep(0.5)

設定後、こんなプログラムで0.5秒ごとにエルチカできます。(ちなみにIchigoJamではこんな感じ)

1 LED1:WAIT30:LED0:WAIT30:CONT

コンパイル不要で、IchigoJamっぽい感覚で使えます。

rshellを使うと、シェルから接続できて、IchigoLatte感覚でファイルの作成もできて便利です。 editコマンドでviが使える!


カメラモジュールを接続してみましょう。この向きです。ちょっと固いですが、ケーブルを壊さないように慎重に!

sensorがカメラです。設定してcaptureするだけで画像が取得できて、いろいろ使えます。 サンプルを少し改造して、赤を見つけた左右位置によって、20ピンと隣の15ピンで出力して実験です。

import sensor sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) red_threshold = (40, 80, 30, 70, 0, 40) fm.register(16, fm.fpioa.GPIO0) btn = GPIO(GPIO.GPIO0, GPIO.IN) fm.register(20, fm.fpioa.GPIO1) left = GPIO(GPIO.GPIO1, GPIO.OUT) fm.register(15, fm.fpioa.GPIO2) right = GPIO(GPIO.GPIO2, GPIO.OUT) while btn.value(): img = sensor.snapshot() blobs = img.find_blobs([red_threshold]) if blobs: for b in blobs: print(b.cx()) if b.cx() > 320 / 2: left.value(1) right.value(0) else: left.value(0) right.value(1) break else: left.value(0) right.value(0)

本体に付属のボタン2つ、1つはリセット、1つは書き込みモードになるボタンですが、起動中はフリーに使えます。 16ピンをGPIO0、GPIO.INに割り当て、センサープログラムを中断するボタンとしました。


うまくいきました!boot.py として、プログラムを保存すれば、起動時に勝手に動き出します。IchigoJamのFILE0保存+ボタン押しながら起動または@ARUN相当ですね。


あとはIchigoJamにつなぐだけ、GND同士をつなぎ、20ピンと15ピンをIchigoJamのIN1とIN2に接続して、IchigoJamでテストプログラムを書いて確認しましょう。

1 ?BIN$(IN(),2):WAIT3:CONT

USB-Cから電源をとるか、VCCに3.3V、300mA以上の電源を接続すれば、単体で動作します!
コンピューターの目を使った高度なロボット操作にも気軽にチャレンジできそうです。

越前がにロボコン」では、「こどもプログラミング実業団」企画に賛同いただける企業の方、大募集中です!
AI/IoT、こどもたちと一緒に楽しく習得する企業型地域ICTクラブ、はじめませんか?

携帯キャリアを使った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(ファームウェアの更新が必要です)

徳島県神山町に2023年開校予定「神山まるごと高専」の技術教育統括ディレクターとして選ばれました。新規の私立高専としては、ほぼ50年ぶり!


「神山まるごと高専」学校長候補に、クリエイティブディレクター 菱川勢一を選出|神山まるごと高専のプレスリリース」(写真は建設予定地付近)
ベンチャー友達、Sansanの寺田さんが発起人。プロジェクト代表は、神山町のシカケ人、大南さん。電通の国見さんがコンセプトワークを担当。 合流し、設立に向けた準備委員会にてカリキュラム策定を中心に活動しています。

福井高専を卒業して20年、ずっと続く高専との縁。教官室に遊びにいったり、講演したり、インターンの受け入れもそろそろ20期。 プログラミングの講義を受け持ったこともありました。

神山まるごと高専が目指す育成人物像は、何があっても生きていける「野武士型パイオニア」。 ITというステキな道具を手段として、自分だけの表現をアート作品としてアウトプットする場づくりIT面から貢献したいと思います。

技術教育統括ディレクターとして、2023年の開校に向けて、ハードからソフトまでを楽しくすばやく学べる、オープンなコンテンツづくり実験と、自分の力でどんどん学んでいくためのシクミとシカケを考案中。 詳細は、今後決まっていく予定の専門教員の人たちと詰めていきます。基礎を楽しく押さえれば、移り変わり早いITを大いに楽しむことができるでしょう。(神山まるごと高専、教員募集開始

GIGAスクール構想により、小中学校から根本的に学校のスタイルが変わろうとしている今。高専はその一歩先行く存在であってほしい。 私立ならではの自由度と、高専という仕組みを大いに活かした学校のあり方を探る議論を続けています。


発表後の初イベント、HLAB主催の高校高専生向けオンラインサマースクールで神山まるごと高専セッション。 学長予定の菱川さんの講義、映像制作に関わる様々なプロフェッショナル。監督(ディレクター)もひとつの役割。 アプリ製作でも、学校づくりでも一緒ですね。


私からも「IT未来づくり入門」と題して、ITを使った楽しさ紹介。 jig.jp版のサマースクールこと、「jigインターン」では、全国からものづくり高専生が集まって3週間の古民家での開発合宿(2020年は2週間)。 チームによるソフトウェアづくりという楽しい仕事を模擬体験してもらっています。 ともに学ぶ仲間、大事です。神山高専はこれの5年版!?


多くのIT少年少女を育てたベーマガこと、マイコンBASICマガジン。 本日、原題の少年少女にもバトンをつなぐ、復刻した別冊付録付きの電子工作マガジンの発売日! 特集マンガは、IchigoDakeのアマビエ様版、AmabieDake! 100円CPU、載ってます。


早速、改造してみました!内蔵のプログラムに居たアマビエ様をランダムな場所で表示。
AmabieDake、電池を入れるだけでもプリインストールのプログラムで光ります。お守りにもどうぞ。)


加えて、670行のSLEEPコマンドを追加。100円のCPU、低電力状態となって待機する機能を使って、ボタンが押されたら再起動する形にしています。 ボタンを押したら、3回輝く、疫病退散ペンダントのできあがり!IoTの要は、低価格と省電力。ハードもソフトも自在に操ろう!


巻頭には、先日の小中学生向け「PCNこどもプロコン」表彰式の様子が特集されていました! 今年の中学1年生、2023年の神山まるごと高専の1期生となるチャンス!

世界中で進む、新しい教育への転換チャレンジ。
海外評価も高い、日本発のユニークな教育システム「高専」を大いに活かしていきましょう!

links
- 「神山まるごと高専」学校長候補に、クリエイティブディレクター 菱川勢一を選出|神山まるごと高専のプレスリリース
- 海外から見た高専教育
- PCNこどもプロコン

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

学校のクラブ活動での活用を想定して作成している、プログラミングで学ぶシリーズ「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を使ったプログラミングクラブとキーボードはじめのいっぽ

なぜ、こどもにプログラミングを教えるのか?
→ プログラミングが汎用的で強力なツールであり、こどもにできるほど簡単だから

社会にネット(=コンピューター)が広まる程、プログラミングの力は強まります。昔はゲームづくりや専門的な解析が中心でしたが、IoT時代、身近な課題解決にもすぐ活用できます。

「十分に発達した科学技術は、魔法と見分けがつかない(クラークの三法則)」
Bluetoothイヤホンで通話しながら歩いている様子はテレパシー、3Dプリンターはテレポーテーション、ドローンの編隊を自在に操る様はまるで魔法。自在に操れたらもっとステキです。


学校を変えた最強のプログラミング教育 | 松田孝
前原小学校元校長の松田さんの本にも、ドローンプログラミングがこどもや大人に与えたインパクトと、意外とシンプルな制御プログラミングが掲載されています。 (その後、更に改良され「FruitPunch(フルーツポンチ) x IchigoDyhook(いちごだいふく)」で、もっとシンプル、もっと手軽にドローンプログラミングできるようになっています。)


松田さんとの出会い、書いてありました!2016年12月、福井で開催した「第1回こどもプログラミングサミット」の会場にて、IchigoJamのはんだづけからのプログラミング体験をしてもらってからのご縁です。 (ナチュラルスタイル松田さんも登場!、学校は「社会の求め」に応えられるか?校長・教頭へのおすすめ本! – about yrm


zoomお茶会IoTと地方創生で共同プロジェクト進行中のKDDI松野さんも参加!
IoTは、ITの集大成。身近な課題から、世界的な課題まで、多方面での活躍が期待されていますが、深刻な担い手不足。小中学校でのプログラミング必修化は大きなチャンス!

今日テーマにしたのは、身近な課題、眠りの快適さをアップするIoT。 きっと、部屋の温湿度が大事!でも、快適と感じる状況は人によって異なります。 まずは計測。IoT対応IchigoJamと、手軽で高性能な温湿度計SHT31を使って、日々の変化を記録してみます。

1 @ARUN 10 POKE#700,#2C,#06:R=I2CR(#45,#700,2,#700,6) 20 IOT.OUT #700,8 30 WAIT 60*60*5 40 GOTO 10

I2Cで取得したデータを(10行)、IchigoSodaで送信し(20行)、5分待って(30行)、くりかえし(40行)。シンプルですね!

sakura.ioのモジュールの管理画面で、DataStoreV2 APIを設定します。1ヶ月分保存なら追加料金はかかりません。 管理画面からCSVでダウンロードができるので、あとは、解析し放題!

解析をプログラムで自動化したい場合、パソコンでデータをダウンロードしましょう。JavaScriptをパソコン上で動かす、Denoをインストールし、このプログラムを test.mjs として保存。 (sensorname: 保存するディレクトリ名、token: DataStoreV2のtoken、moduleid: 使用するモジュール)

import download from "https://code4sabae.github.io/sakuraio-es/download.mjs"; await download(7, "sensorname", "token", "moduleid", 1);

あとはコンソールで動かすだけ!

$ deno run -A test.mjs

これだけで過去1週間分のJSONデータを日付ごとにダウンロード完了です! 詳しく知りたい方は、オープンソースのJavaScriptプログラム(src on GitHub)をどうぞ。 JavaScriptについて学びたい場合は「JSはじめのいっぽ」をどうぞ。 ネットがあれば、わからないものを無限に追求できますね。(社会実装例、バスの走っている場所、混雑状況などのIoTによって進む見える化 by ダイヤ編成〚その筋屋〛公式 ❄ @Sujiya_Systemさん)

このように、実現したいことを叶える技術が急速に発展し、ネットというインフラによって多くはソフトウェア化している上に、その大半がオープンソースソフトウェアとして誰でも自由に利用でき、改造でき、その開発に貢献することもできます。

ものづくりには、ソフトウェア、ハードウェア・素材までさまざまなレイヤーがありますが、ソフトウェアづくりはコンピューターさえあれば誰にでも始められる最も手軽なものづくりです。


バリエーション豊富なIchigoJam、IchigoSodaは4G通信モジュール対応のソーダカラーがかわいいIchigoJamです。 中央のチップが、100円のCPU。今回の高精度温湿度計SHT31も右下、黒い四角がその本体。あとは電源つないで動かすだけ! 世界中から登場する小さくて安くてワクワクする電子パーツたち。 プログラミングでつないで何創る?夢、膨らみますね!

日本一プログラミングを小学校現場で実践した、松田さんによる熱い著書。
学校を変えた最強のプログラミング教育 | 松田孝
ワクワクする未来を、こどもたちへ!

福井県で始まった混雑状況オープンデータ。合わせて行いたい定量的なデータ計測を、鯖江市役所入り口にて設置!さすが鯖江市、依頼からスタートまで何もかも速い!

IchigoCounter - 鯖江市役所 人流オープンデータ
13時すぎに1分間に13人通ったピークが見られ、18時半からは人の流れが停止する様子が記録できています。


来庁者IoTカウンター実証実験中。ケースに入っていい感じ!IoT対応のIchigoJam、IchigoSodaのアンテナ2本はソフトバンクの4G回線につながっているので、既存の無線LANと無関係に安定的に動作します。 人流は200円の超音波センサー「HC-SR04」を使用。


超音波が返ってくるまでの時間を計測し、しきい値(T)を超えていたら人が通ったと仮定。1分間ごとにカウントした数をIoT.OUTコマンドで送信するだけのシンプルなプログラム。 反応してから一定時間待ち(W=1.5秒)を入れて、ひとりを重複してカウントしないようにするなどの調整はその場で観察しながら調整しました。 IchigoSodaにミニモニターとキーボードをつなぐだけで自由自在!

機材を持っていって、設置、プログラム、テスト、調整、設置完了まで1時間! 簡単にできるので、通りがかった中学校の校長先生にぜひ中学校でもIoTづくりをと、PRもできました。


鯖江市長、牧野さんも動作確認!
オープンデータ化、IT化、やれるところからどんどん進めていきましょう!

今回の鯖江市役所での実証実験ができたのは、スピーディーにOK出してくれた、市役所の方、市長のおかげです! 学生のみなさん、このステキすぎるまち、鯖江市に「jigインターン2020」で来てみませんか?(社会人の方の視察もぜひ)

全国の高専、夏休みが短縮されたことを受けて、今回は2週間に改定します。募集期間、延長しましたので、これなら参加できそう!という方、熱い町、鯖江でのインターン、ぜひご検討を!


古民家での共同生活、ウェルカム会!(昨年の様子)


jig.jp本店所在地、めがね会館にて、2週間のチーム開発(昨年の様子)


砂時計 - Matter.mjs」(box2d版Matter.jsmjsで移植)
今回は1週間短いので、事前サポートを充実させてカバーしようと思います。アプリづくりは、Swift / Kotlin / Java / JavaScript / Dartなどといろいろ選択肢はありますが、webアプリとしても使えて汎用性高いJavaScriptを基本言語として推奨。 その入門を作っていきます。

まずはこのスマホを傾けて楽しい砂時計プログラムを改造して遊ぶところからどうぞ!

<!DOCTYPE html><html><head><meta charset="utf-8"/> <title>sandglass - matter-es</title> <meta property="og:image" content="sandglass.png"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head><body> <script type="module"> import { Matter, createWorld } from "https://js.sabae.cc/matter.mjs"; const { Bodies, Body } = Matter; const world = createWorld(); const [w, h] = [500, 1000]; world.width = w; const nballs = 400; const cx = w / 2; const cy = h / 2; const ww = h / 40; const createWall = (x, y, w, h, th) => { const base = Bodies.rectangle(x, y, w * 2, h * 2, { isStatic: true }); Body.rotate(base, th); return base; } world.add(createWall(cx - w / 2, cy, ww, h / 2 + ww, 0)); world.add(createWall(cx + w / 2, cy, ww, h / 2 + ww, 0)); world.add(createWall(cx, 0, ww, w / 2, Math.PI / 2)); world.add(createWall(cx, h, ww, w / 2, Math.PI / 2)); const hole = w / 6; const hw = ww / 2; const hgap = h / 15; const th = Math.PI / 6; world.add(createWall(cx - (w + hole) / 4, cy - hgap, w / 4, hw, th)); world.add(createWall(cx + (w + hole) / 4, cy - hgap, w / 4, hw, -th)); world.add(createWall(cx - (w + hole) / 4, cy + hgap, w / 4, hw, -th)); world.add(createWall(cx + (w + hole) / 4, cy + hgap, w / 4, hw, th)); const bw = w / 60; for (let i = 0; i < nballs; i++) { world.add(Bodies.circle(cx + (w - ww * 2) * (Math.random() - .5), ww + (h / 4) * Math.random(), bw)); } document.body.onclick = () => { world.useRealGravity(); // 傾きセンサーを重力に反映(対応していたら) world.gravity.y = -world.gravity.y; // 重力反転 }; </script> </body></html>

sandglass.html とか名前を付けて保存し、ブラウザで開くだけで動きます!(要、ネット)
まずは砂の大きさを変えたり、数を変えたり、いじって見ましょう!

HTML/CSSもはじめての方は、こちらからどうぞ!(追記、JSはじめのいっぽも!)
創ろう、楽しい夏!

links
- 全国高専生向けjig.jpインターンプログラム2020 ~募集のお知らせ~
- jigintern2019のブログ(昨年参加者によるブログ)

PCNサミット2020、今年はオンライン開催!

府中から飛行機で25分、以外と近い東京都の離島、伊豆大島のこどもたちもプログラミング!こどものIchigoJam普及率10%!? 小学校の先生も参加してくれたとのこと。


府中市を中心に活動する、PCN東京多摩、まずは巨大な信号機を手で動かし、カトラリーカードを使ってみんなで考え方を話し合った上で、IchigoJamのはんだづけ、プログラミングへと進める4時間ワークショップの流れがいいですね! 自治体などとの事業連携も参考になります。


PCN東京多摩サポートで今年誕生、PCN伊豆大島!行ってみたい!


アフリカ、ルワンダ、PCNキガリ、杉山さん。現地の先生がIchigoJamで作った3作品を紹介、自動水栓システムはコロナ禍に多量にあれば大いに役立ったはずと悔しそう。 ITを活かす力と環境、世界中に広めたいですね。


PCNひろしま製教材、音声センサーを使ったカリキュラムとそれを応用した犬のアンナちゃんほえたワンアプリがいい! お手頃IoT、大人も便利に使いこなしたいですね。


山形県、PCN酒田より一番盛り上がったワークショップとして紹介された「デジタルたいこ」ワークショップ。 こちらも音センサーを使って、紙コップを叩いた音を検出して、達人的に連打するのが盛り上がったとのこと。 五感を使って、インパクト大きいイベントにするの、良いですね!


PCN大阪、パズルゲームのステージを作ってみる回の紹介。どのように楽しませるか、レベルデザインを実際にやってみると、普段遊ぶゲームや、勉強の難しさも客観的に見ることができてよい体験!


PCN北はりまは、電子部品使い放題というステキな環境。がっつり楽しんでいる小学生、夏休みの自由研究のレポートとしても書いてくれたとのこと!ステキ!


初の基板設計だったという、ヘタパッドを持ってイベントへ!自分で作ったものを展示する楽しさ、こどもにも大人にもおすすめです!


アクティブなPCN三重の岡村さん、福岡の久留米高専公開講座へも出張とのこと!高専生によるヘルプがうれしいですね。きっと次世代の高専生へとつながっていくでしょう!


PCN秋葉原、千代田区立の小学校の25周年記念に昇降口に生徒がつくったキラキラ工作を展示!電源の工夫がすごい! 小学生でも電飾、できちゃいます!


PCN福井勝山、一般社団PCN代表の松田さん、南相木村での身近な課題解決に取り組む中学生の女の子、紹介! 小さなパソコン、大きな柵も動かせます!


PCN金沢の久保田さん、コロナ禍でも負けないオンライン学習環境づくりの取組発表。かほくケーブルTVの動画がオンラインでも見られるようになり、かほく市立大海小学校のサイトでも紹介!


PCN北九州発、IchigoJam制御で風船を物理で割っちゃう風船タイマーキットが発売予定!楽しみです! PCNの通販や、秋葉原のお店、きっとPCN舞鶴の電脳工作室など、楽しいキット、じゃんじゃん企画して、作って、広げちゃいましょう!


PCN北九州でも活躍、IchigoJamミニゲームズ。オープンデータの教材、各地での活用うれしいです!


道連れパズル - RUN on IchigoJam web」原作「旅は道づれ by 柏木恭忠さん」
各地のオンライン授業での活躍うれしい、IchigoJam web を使って、今日の追加コンテンツ、41年前のパズルゲームをIchigoJam用に移植!
※ IchigoJam web の長いLIST表示、長いFILES表示時のバグ、修正しました


ガラケー時代からの知人、元Klab CTOの仙石さんもプログラミングはじめはBASIC。ブログで発見した本「BASICで広がる世界」を入手!


なんと昭和54年(1979年)と41年前の本。私、まだ0才。定価、IchigoJamと同じ1,500円!


当時、アメリカでは小学生から専門家までがBASICを愛用していたとのことですが、日本ではブレイク前夜。 この本を通じて、多くの少年や夢ある大人たちがコンピューターの世界へと足を踏み入れたのでしょう。


紹介されていた10本のゲームから、おもしろそうな、4「旅は道づれ」をセレクト。 1〜10、選んだ番号とどれかが連動して、コマがOとXとでひっくり返ります。全部Oにすればクリア! ソリティア的なゲームです。たまに連動しないものがあるのもポイント。


こちらが元プログラム。IchigoJam BASICを知っているこどもたちならスラスラ読めそう。 140行、FOR文途中で外へGOTOする書き方をOKとする解説。当時のFORコマンドのスタック、扱い方が違うのかも?

IchigoJam BASIC 用に移植した「旅は道づれ」パズルゲームがこちら!

100 S=10 110 FOR I=1 TO 10:[I+S]=0 120 R=RND(10)+1:IF I=R CONT 130 [I]=R:IF RND(10)>8 [I]=0 135 IF I=1:GOTO 150 140 F=0:FOR J=1 TO I-1:IF J=[I] AND I=[J] THEN F=1 145 NEXT:IF F=1 GOTO 120 150 NEXT 160 GOSUB 500 170 T=0 180 GOTO 200 190 PRINT "DAME!!!" 200 PRINT "DOKO?" 210 INPUT X 220 IF X<1 OR X>10 GOTO 190 240 [X+S]=![X+S]:A=[X] 250 IF A=0 GOTO 280 260 [A+S]=![A+S] 280 T=T+1:GOSUB 500 290 GOTO 200 500 PRINT:F=0 510 FOR J=1 TO 10:?J;" ";:NEXT:? 520 FOR J=1 TO 10:IF [J+S]=0 ?"X ";:F=1 ELSE ?"O "; 530 NEXT:PRINT 540 IF F=1 RETURN 550 PRINT "ANATA WA ";T; 560 PRINT "KAI DE SEIKOU SHIMASHITA!!!" 570 PRINT "TSUZUKEMASUKA (YES=1,NO=2)"; 580 INPUT Z:IF Z=1 GOTO 110 999 END

いろいろ改造したり、遊んでみましょう!

いちおしゲームとして「RPG - Beat the Z」と「両面ヘビゲー」をPCN鯖江の取組内で紹介。 プログラミングをもっと楽しめる講座づくりに向けた、いろんな改良案を大募集! 大いに刺激をもらった、PCNサミットでした。

一般社団法人プログラミングクラブネットワーク」のサイトもできてサポート体制も拡充。
すべてのこどもたちへプログラミング、届けましょう!

学生でも、プログラミング未経験でも大丈夫。
こどもたちと、仲間と一緒に学ぶ「PCN」へのご参画、どうぞご検討ください!



links
- PCN プログラミング クラブ ネットワーク

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