福野泰介の一日一創 - create every day

鯖江のものづくり友達、きものサロンまるよさんからスズムシがうるさすぎると相談あり。 一定間隔でスズムシの鳴き声が聞こえる、スズムシボックスを秋の店内にあると風流でいいのだけれど、ちょっと鳴く間隔が短すぎて、鬱陶しい、と。

9V電池を電源に、鳴き声電子回路が入っていることがわかったので、できるだけ非破壊による改造を試みる。 電源ケーブルを延長する形にして、トランジスタによる電子スイッチと、マイコンによる時間制御、マイコン用の3.3V生成が必要。


ブレッドボードで定期的に電源がONになる動作を確かめて、何秒間隔がいいか実験する
IchigoJam BASICなら、確認簡単!

10 OUT 1 20 WAIT 22*60 30 OUT 0 40 WAIT 180*60 50 GOTO 10

ONにしてから鳴くまでに間があるので、22秒間ONにすることで、ちょうど1ループ鳴く。そのままONにしておくと10秒たらずで何度も鳴くのは確かに鳴きすぎ。 ひとまず、3分間待って、再度鳴くようにしてみると、風流さが出た。


このままでは、箱に納まらないので、回路図を書いて、ユニバーサル基板にはんだづけする。 トランジスタを2段、3.3Vレギュレーター1つとIC3つ。どのようにつなぐかがパズルのようで楽しい。 Upverterなどで基板を起こしてもいいが、時間とお金が少々かかる。


IchigoJamよりコンパクトな、IchigoDakeでも、まだ納まらなかったのと、ちょっとオーバースペックなのも気になるので、LPC810へ移植する。 22秒間 ON にして、180秒は低電力モード(deep power down)で OFF にするプログラムを、IchigoJamからLPC810へ書き込む。

10 POKE#700,0,4,0,16,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,251,255,239,22,72,23,73,1,96,23,72,1,104,3,34,210,67,17,64,1,96,21,72,21,73,1,96,21,72,12,33,1,96,21,77,4,38,46,96,25,72 20 POKE#746,23,74,1,58,253,209,1,56,250,209,17,72,3,33,1,96,20,48,12,33,1,96,15,72,1,104,4,34,17,67,1,96,14,72,1,104,1,34,17,67,1,96,12,48,13,73,14,74,81,67,1,96,48,191,128,128,4,64,217,2,0,0,16,0 30 POKE#786,4,64,192,193,0,64,191,255,255,255,0,32,0,160,0,35,0,160,0,0,2,64,16,237,0,224,0,128,0,64,0,9,61,0,16,39,0,0,22,0,0,0,180,0,0,0 50 A=#700:L=180 100 UART3,2:OUT2,0:OUT1,0:WAIT9:OUT1,1:CLS:?"?":GSB@R 110 ?"Synchronized":GSB@R:?12000:?:GSB@R:GSB@R:?"A 0":GSB@R:GSB@R 120 ?"U 23130":GSB@R:?"W 268436096 ";L:GSB@R:UART1,2:LC0,-1:FORI=0TOL-1:?CHR$(PEEK(A+I));:NEXT:UART3,2:LC0,6:? 130 ?"P 0 0":GSB@R:?"E 0 0":GSB@R:?"P 0 0":GSB@R 140 ?"C 0 268436096 256":GSB@R:OUT2,1:OUT1,0:OUT1,1:END 150 @R:K=INKEY():IF K=13 K=INKEY():WAIT9:RTN ELSE CONT

180byteのArmマシン語をLPC810へ、書き込む(接続方法は、IchigoJamプリント参照)。30行の末尾、22と180の部分は、ONとOFFの秒数、好きな値に変えられる。(Armマシン語のソースプログラムは本記事末尾)


LPC810をIchigoDakeとピン配置をあわせるボードをはんだづけしてつくる。(LPC810の2番ピンWAKEUPをプルアップしないと、低電力モードが動作しないので注意!)


納まった!


元の箱に戻って、3分おきに鳴るように改造されたスズムシボックスのできあがり!

(LPC810を定期実行させる、Armマシン語 in asm15

DATA L #10000400 ' stack top DATA L #21 ' entry point DATA L 0,0,0,0,0 DATA L #EFFFFBDF ' VALID_CODE = 0x100000000-0x10000400-0x21 @ENTRY R0=[@SYSAHBCLKCTRL]L R1=[@USE_DEVICE]L [R0]L=R1 R0=[@FLASHCFG]L R1=[R0]L R2=3 ' flash no wait: set 0b00 R2=~R2 R1&=R2 [R0]L=R1 R0=[@PINENABLE0]L R1=[@PINENABLE0_DATA]L [R0]L=R1 R0=[@GPIO_DIR0]L R1=`1100 ' PIO0_2 and PIO0_3 [R0]L=R1 ' LED R5=[@GPIO_NOT0]L R6=`0100 [R5]L=R6 ' WAIT (WAIT_CNT * ON_SEC) R0=[@ON_SEC]L R2=[@WAIT_CNT]L R2-=1 IF !0 GOTO -1 R0-=1 IF !0 GOTO -4 ' init deep power down R0=[@PMU_PCON]L R1=3 ' PM = deep powerdown [R0]L=R1 R0+=#14 'PMU_DPDCTRL R1=`1100 ' enable 10kHz [R0]L=R1 ' deep power down R0=[@SCB_SCR]L R1=[R0]L R2=4 ' deep sleep R1|=R2 [R0]L=R1 ' wake up timer R0=[@WKT_CTRL]L R1=[R0]L R2=1 ' use 10kHz R1|=R2 [R0]L=R1 R0+=#C ' WKT_COUNT (SLEEP_CNT * OFF_SEC) R1=[@SLEEP_CNT]L R2=[@OFF_SEC]L R1*=R2 [R0]L=R1 WFI @SYSAHBCLKCTRL DATA L #40048080 @USE_DEVICE 'WKT, SCT:off, SWT, GPIO, I2C:off, FLASH, FLASHREG, RAM:off, ROM:off, SYS DATA L `1011011001 @FLASHCFG DATA L #40040010 @PINENABLE0 DATA L #4000C1C0 @PINENABLE0_DATA DATA L #FFFFFFBF @GPIO_DIR0 DATA L #A0002000 @GPIO_NOT0 DATA L #A0002300 @PMU_PCON DATA L #40020000 @SCB_SCR DATA L #E000ED10 @WKT_CTRL DATA L #40008000 @WAIT_CNT DATA L 4000000 ' 1sec (12MHz) @SLEEP_CNT DATA L 10000 ' 1sec (10kHz) @ON_SEC DATA L 22 ' (sec) @OFF_SEC DATA L 180 ' (sec)

2017年のクリスマス時に作ったものをベースに小変更。
@ON_SEC、@OFF_SEC 部分が、ONにする時間と、OFFにする時間。IchigoJam BASICからPOKE文でも簡単に変更可能。

1985年、ベーマガの発行元でもある、電波新聞社から発売されたゲーム「デーモンクリスタル」が、Nintendo Switchで復刻! 敵を倒し、謎を解き、アイテムでパワーアップしつつ、鍵を取り、次のフロアへ。現代のゲームシステムにも脈々と受け継がれています。

暗闇から探し出す感じをIchigoJamのゲームにしてみました。
音を頼りに、すばやく宝箱を探す「たからさがしゲーム」

プログラムはシンプルに短く!

10 X=15:Y=15:CLT 20 A=RND(32):B=RND(22) 30 CLS:LC X,Y:?CHR$(251) 40 K=INKEY():IF K=0 CONT 50 X=X-(K=28)+(K=29) 60 Y=Y-(K=30)+(K=31) 70 P=ABS(X-A)+ABS(Y-B)+1 80 BEEP P,3:IF P>1 GOTO 30 90 LC X,Y:?CHR$(246),TICK()

カーソル上下左右で移動、移動するたびに近いほどに高くなる音を頼りに探しましょう。
見つけたらタイムが1/60秒カウンターの値で表示されます。

100 PLAY"O4L32CEG"

このように、クリア時の音をつけると画面がなくても遊べます!

慣れてきたら上級編。ランダムに宝箱の位置が移ってしまうシカケ

65 IF RND(10)=0 GOTO20

2人で対戦できるように改造してみるとかもも、楽しいかも?

IchigoJam ver 1.3 beta 5、INPUT時、RENUM時のバグを修正したアップデート
IchigoJam 1.3b05.zip

links
- The Demon Crystal
- YMCAT(迎霧狼慢)さんのツイート: "【デーモンクリスタル秘話】
> - 1981年ベーマガ創刊号掲載のゲームがマルチプラットフォームで復刻! IchigoJam版エイリアンフィールド、改造の手引き

高専プロコン2018にて、起業家甲子園挑戦権を獲得したメンタリングのため、舞鶴高専へ。

起業家甲子園に向けてのメンタリング!
舞鶴市民の健康を守るため、舞鶴市役所と高専生の技術、いかに連携していけるかが鍵!


舞鶴高専のプロコン部の精鋭たちへ、NICT半間さんより、来年度の起業家甲子園へのお誘い!


はじめてのIoTプログラミング」スライド資料 PDF。
町田さんの時間をお借りして、電子制御工学科3年生向けに、特別授業!


LED1 であがる歓声! LEDの点灯実験は初めてだったとのこと!


好評、かわくだりゲーム!


IoT化して、スコアを送信して即席ネットワークゲーム大会!
チートも解禁してからのスコア争いも熱かった!
情報セキュリティのはじめのいっぽは、チートから! 攻めを知らずして守れるわけなし。


温度センサーをつないで、IoT温度計づくり。
多人数で一斉に送られてくる温度データ、リアルタイムにヒストグラム表示させるとおもしろい。


IchigoSodaでIoTプログラミング 舞鶴高専で福野さんの特別授業 | yet another 舞鶴電脳工作室より)


IoTコマンドでスマホからコントロール!

1 N=IOT.IN():IF N LED N-1 2 GOTO 1

たったこれだけ、楽しいIoTづくりへとチャレンジしましょう!
IchigoJam web でも、ゲームづくりはできますよっ。(IchigoJamプリント
IchigoJam webでも、IoTコマンドに対応しちゃうのもアリですね。


町田さん研究室、さかなつり x FPGAのデモ! 研究内容をわかりやすく楽しく伝える、楽しい!
下はなんと0歳の子供も楽しんだとのこと。


デモ動画!
PLL/PWM 方式による位置サーボ系の FPGA 実現


手作りスマート化された、ロボコン部の部室の鍵。取りに行くのが面倒だから作った、と、無いものは作る精神!


ご案内いただいt製作工場! キロW級のレーザー加工機! 金属も余裕で貫くとのこと。


加工サンプル、金属加工品があるのがすごい。


金属加工でつくった時計、かっこいい


舞鶴は造船所が近いということで、溶接施設も充実


大型高級切り出し加工機、学生が自由に使っているとのこと、高専生なら、高専にある機材、学科関係なくどんどん活用しちゃいましょう。


舞鶴高専訪問記 2019.1.11
紹介いただきながら撮った写真、EXIFデータとして位置情報がついているので、取り出して、マッピングし、簡単地図アプリフレームワーク「egmapjs」を使って訪問記アプリにしてみました。 町田さん、ありがとうございました!


舞鶴では松葉ガニ(ズワイガニの山陰の呼び名、福井では越前がに)のメスを、「こっぺかに」と呼ぶ?
こっぺかにロボコンというのもかわいい!(参考、小学生 越前がにロボコン


おいしい煮魚、いただきました!


起業家甲子園に向けて、気合充分!

links
- IchigoSodaでIoTプログラミング 舞鶴高専で福野さんの特別授業 | yet another 舞鶴電脳工作室
- 1時間半でわかる叡智の結晶「IoT」 - IchigoJam x sakura.io 情報セキュリティ実習 in 高知高専>

大企業とスタートアップ、新しいコラボに期待がかかるオープンイノベーション。
全く異なる文化だから難しい、だからこそおもしろい!

よくわかる オープンイノベーション アクセラレータ入門
大切なのは、情熱のベクトルが一致していることと、お互い学び合う姿勢。
視点が異なるからこそ、生まれるアイデア自体はきっとおもしろい。

ただ、アイデアの段階では価値は無し。
形にして初めて生まれるのが価値であり、権利化できるというのが現代のルール。

スタートアップはそれをすばやく形にし、大企業はそれをバックアップ。 どちらが欠けてもうまくいかないが、両方備えていても成功する保証はない。

もし、斬新なアイデアが必要なら、スタートアップだけでなく、学生・こどもにも目を向けたい。

PBL(問題解決学習)は、小学生だって早すぎることはない。 子供の視野では見えない課題、大人はどんどん積極的に見せるべき。 見せずに問題を大きくして、取り返しがつかない状態にして良い訳がない。こどもの頃から地域社会の一員として活躍できたという体験は、きっと自信となる。

そこで活用したいのは、地域ICTクラブ。

総務省により昨年取り組みが始まった、課外によるプログラミングやものづくりの学びの場「地域ICTクラブ」。 その福井県モデル「福井県こどもプログラミング協議会」での学びの場は、実証機関を終えても継続中。


ZOZOTOWNを支え、社長はPCNの代表も務める「ナチュラルスタイル」では、福井高専OBでもある社員有志によるプログラミングやロボットを学ぶ PCN福井NSクラブ が、社内スペースを使って実施されている。 休日や就業時間後に空いている会議室と、時間外でも技術を活用したいと思っている社員がいれば、全国どこでも実現可能。 企業内のシーズや、課題をこども、学生と一緒に考え、実装しよう。プログラミング実業団同士が、ロボコン、プロコンで争う姿はきっと熱い。


この日、福井高専4年電子情報工学科、非常勤講師として協力中のこの授業では、イノベーションを目指し、8つのバーチャルな会社と事業を作っての発表会。 実装できる、高専生は、力強い助っ人となる。(2/9には福井・石川高専生協力の元、総務省主催:Geospatial Hackers Program in 福井も開催!)


(写真、Hana道場 Twitterより)
鯖江の地域ICTクラブ、Hana道場では、高専生、小学生、大人が一緒にプログラミングを学ぶ。

なぜ、プログラミングか?
それは、コンピューターを使ったアウトプットの基本だから。

聞くだけでなく演奏を学び、鑑賞だけでなく絵の具で描くことを学んだのと同じ。
「テレビを見ることができる」と「テレビの仕組みを知っている」が全く違うように、
「アプリが使える」と「プログラミングができる」は別スキル。
みんな画家にならないのと同様、もちろん、本職にするかしないかは別問題。

「創造」は、文科省がテーマとして掲げるこれからを「生きる力」に欠かせない。 さまざまな仕事がどんどんコンピューターやロボットによって効率化、代替化する中、求められるのは、その人、それぞれの得意を活かした価値づくり。 コンピューターの活かし方を知っているか否かの差はますます開く。 もちろん、今に始まった話では全く無く、もう23年も前、1996年に経団連から提言されている。
創造的な人材の育成に向けて ~求められる教育改革と企業の行動~


(図、Society 5.0 - 科学技術政策 - 内閣府より)
コンピューターによる第三次産業革命の次、AI/IoTによって訪れる第四次産業革命後の日本政府が考える理想社会、Society 5.0 の要は、人間中心。 「快適、活力、質の高い生活」全員がこの三点を達成するためには、コンピューターがいかに高度化しようとも、それぞれが持てる力を存分に発揮し、誰もが誰かに必要とされなくてはならない。


(図、Society 5.0 - 科学技術政策 - 内閣府より)
Society 5.0 の要はコンピューターの大容量・高速・並列化によって実用化された、AI。AIの学習に必要になるビッグデータ。そのビッグデータを形成するのはオープンデータという「約束」である。

軽快性・経済性・安全性を兼ね備えた新しい都市を実現するためには、そのリソースとなる「都市活動データ」を収集するセンサネットワークなどの基盤的インフラを整備することが不可欠である。 公的データ・民間データの提供や、オープンデータ化を促進する制度を同時に導入することが求められる。
(「よくわかる オープンイノベーション アクセラレータ入門」 6.3.1 より)
オープンデータは21世紀のインフラ。
「リアルデータ」は「リアルタイムオープンデータ」、「公共データのオープン化」は「公共オープンデータ」とそれぞれオープンデータと明記を希望したい。
未来投資戦略2018の構成 第4次産業革命技術がもたらす変化/新たな展開:「Society 5.0」 | 首相官邸ホームページ
さらに、オープンデータなどを活用した中堅・中小企業、スタートアップ企業、NPO、市民自身によるサービスの展開を促進すべく、 新たなプレイヤーによる市場参入を可能にする新たなエリアマネジメント体制を各自治体が連携し、権限や責任の明確化を進めることが肝要である。
(「よくわかる オープンイノベーション アクセラレータ入門」 6.3.1 より)
制度自体の見直し、オープン化が合わせて必要。

社会全体がコンピューターを前提とする、Society 5.0。
もはや、従順に「仕える事」では務まらなくなってきているのが、現代の仕事。
「狩りから稲作へ」と代わった Society 2.0 と対比するなら、「仕事から創造へ」。

過去の成功経験がむしろ足かせになる新時代。
民間、行政、高専、学生、市民、こども、お互いオープンに手を取ることからはじめよう。


こちら、NSクラブでプログラミングを学ぶ、小学5年生の女の子たちからリクエストをもらって作成した「アドベンチャーゲーム」。 定義に従い、シチュエーションをグラフィック(絵文字)とテキストメッセージで表し、選択肢を選ぶことで場面が変わる。

課題が現れた どうする? 戦う?逃げる?

100 CLS 110 LC16,10:?CHR$(237) 120 LC0,14:INPUT"カダイガアラワレタ ドウスル? 1:タタカウ 2:ニゲル",N 130 IF N=1 GOTO 200 140 IF N=2 ?"ク、ニゲラレナイ":GOTO 100 150 GOTO 100 200 CLS 210 LC16,10:?"." 220 LC0,14:?"カダイヲ ヤッツケタ!"

自分だけのオリジナルな人生を創ろう!

ゲームとは、ルールで勝負を決めること。

スポーツもゲームの一種ですし、テストで点数化された学校での勉強もゲームです。
つまらないテレビゲームがあるように、ゲームのおもしろさはルール次第。
ちょっとしたルールを追加すれば、劇的に楽しいゲームになったりします。

IchigoJam 1.3 に、何か分かりやすい、かつちょっとした変化をと、カーソルスイッチを実装。
位置を指定するコマンドLOCATE(省略形LC)の第三パラメーターに1を指定すると、点滅するカーソルを表示できるようにしました。


「FIND A to Z」 IchigoJam 1.3 beta 4 以降 (カーソルスイッチ使用、IchigoBoy対応)
こちら A から Z まで、カーソル上下左右で探して、見つけたらスペースを押しましょう。Zまでのタイムを競うゲームです。 タイムの計測は、友達と、または、自分と勝負できるようになる、手軽なゲーム化手法です。

10 CLS:VIDEO3:S=ASC("A") 20 FORI=0TO15:FORJ=0TO5:LCI,J:?CHR$(RND(26)+S):NEXT:NEXT 30 CLT:N=S 40 LC0,7:IF N=S+26:?"CLEAR! TIME:";TICK()/60;:WAIT60:END 50 ?"FIND ";CHR$(N);"!"; 60 LC X,Y,1 70 K=INKEY():IF!KCONT 80 X=(X-(K=28)+(K=29)+16)%16 90 Y=(Y-(K=30)+(K=31)+6)%6 100 IF K=32 AND N=SCR() ?CHR$(0,28);:N=N+1:GOTO40 110 GOTO 60

(RUN on IchigoJam web)

アルファベット小文字をマスターするためには、10行をAからaに変えるだけ!

10 CLS:VIDEO3:S=ASC("a")

大文字も小文字も変わらないタイムがでるようになったら、次はタイピングにチャレンジ!

当時、MSXのマニュアルは何度も読んだはずでしたが、MSX BASICのLOCATEコマンドにあるカーソルスイッチには気がついていませんでした。
MSX-BASIC/LOCATE.txt at master · fu-sen/MSX-BASIC

カーソルスイッチ対応ベータ版、ダウンロードはこちら
IchigoJam 1.3b04.zip

アプリをケータイする文化は、日本から始まった!

2001年、世界初のアプリ対応ケータイとして発売された docomo F503i/P503i。 低速で高額な2Gネットワークのため、初搭載された「iアプリ」の最大容量は10kbyte(わずか約1万文字)。 この10KBになんとか納めてリリースしたパケット通信料を節約するブラウザアプリが「jigブラウザ」のベースです。

Javaのクラスを使わないのはもちろん、メソッド数を減らし、バイトコードを後処理で減らし、圧縮の最小化を図るなどなど。 いかに誰もやってなさそうな削減テクニックを編み出すか? 楽しく、あれこれ工夫できたのは、すべて利用者の喜びのため。 できた達成感と共に、一利用者としての楽しみもあって一石二鳥。 使っている内に、またやりたいことが増えるので、容量ダイエットに励み、機能アップ、というサイクル。

あれから18年、舞台はArmマイコン上のC言語でOSとして実装する、IchigoJam BASIC。 衝撃価格、100円 32bit CPU、LPC1114の容量は32KB。 8KBをユーザープログラムの保存領域として使うので、残り24KBがOSに許された容量です。

IoT、ローマ字対応を終え、いよいよ完成が見えてきた新バージョン 1.3 リリースを目前に、100byte単位の大減量に成功。勢いに乗って実装したのが RENUM コマンド!


RENUM(リナンバー、リナム)コマンドは、行番号を振り直すコマンド。
今まではプログラム内で指定してある行番号は手で変更する必要がありましたが、1.3からは自動で振り直しされます!(一部、制限あり)

1 LED1:WAIT10 2 LED0:WAIT10 3 GOTO1

とLEDを点滅させるプログラム、2と3の間にキーを押したら止めるプログラムを追加したい。 そんな時に RENUM コマンド。

RENUM OK LIST 10 LED1:WAIT10 20 LED0:WAIT10 30 GOTO10 OK

3行のGOTO1がGOTO10へと書き換わるようになりました。これで25として新たな行が追加できます。

25 IF INKEY() END

RENUMのパラーメータで1から1ずつにも振り直せます。

RENUM1,1 OK 1 LED1:WAIT10 2 LED0:WAIT10 3 IF INKEY() END 4 GOTO 1

ここで制限、RENUM100と、100行から10ずつにすると、このように一部欠けます。(GOT100、Oが欠けた)

RENUM100 OK 100 LED1:WAIT10 110 LED0:WAIT10 120 IF INKEY() END 130 GOT100

これはプログラム量が変化して、容量オーバーやプログラム領域外を破壊してしまわないように、加えて、容量不足で対策困難なための制限です。 動かせば Syntax error が起きるので手動で修正してください。行番号を1から10000など大きく変化させると、元がGSBだったかGOTOだったか分からなくなるので注意です。

実際使ってみると思いの外、快適です。今まで、ご不便おかけし、すみませんでした。

RENUM対応ベータ版、ダウンロードはこちら
IchigoJam 1.3b03.zip

IchigoJam web」 でも、体験いただけます!

IchigoJam 1.3、MacやWindowsでも動くアプリ版も準備中。

IchigoJam ver 1.3b3 メモリマップ

* ver 1.2.3との互換性を取る形で1.3b2から変更 (keybuf 126byteへ戻す、i2cbuf 54byteへ拡大)

先行公開した IchigoJam webに、続き、マイコン(LPC1114)バージョンのファームウェアを公開!
IchigoJam 1.3b02.zip」 (* 最新版は 1.3b3)
容量削減、がんばりました!

一番目立つ点は、Nが続く文字をコンマで区切る日本式ローマ字に対応し、打っている途中の文字も表示するように変更したところ。 その他、いろいろと細かい修正、調整を行い、近日正式版のリリースとなる予定です。


標準搭載となった IOT.OUT / IOT.IN コマンド、I2C用の送受信バッファを別に確保したので、配列と合わせて使っても大丈夫!

I2C実装の問題で動作しなかった 温湿度計 AM2320 (600円@秋月電子) にも対応。

10 'AM2320 20 CLS:A=#5C:B=#700:POKE B,3,0,4 30 W=I2CW(A,B,3,B+3,0) 40 R=I2CR(A,B,0,B+3,8) 50 IF R ?"I2C ERROR":GOTO 200 60 H=PEEK(B+5)*256+PEEK(B+6) 70 M=PEEK(B+7)>=128 80 T=PEEK(B+7)&#7F*256+PEEK(B+8) 90 IF H<0 ?"NO DATA":GOTO 200 100 CLS 110 ?"HUM: ";H/10;".";H%10;"%" 120 IF M ?"TMP:-"; ELSE ?"TMP: "; 130 ?T/10;".";T%10;"dC" 140 ?"MEM:";:FORI=0TO8:?PEEK(B+I);" ";:NEXT:?"" 200 WAIT 60:GOTO 30

今までのメモリマップに加えて、下記のメモリ領域が使えます。
つまり、ver1.3 では、上記プログラム、B=#110C とすることで、PCGも配列もVRAMも破壊せずに、使えます。(* b3でアドレス変更になりました)

32byte確保してある、I2Cバッファの先頭アドレスは、#110C、I2Cと覚えやすい! (b3でアドレス変更になりました)

また、#700は、LPC1114の物理RAMアドレスの先頭 0x10000000 へと移しました。
結果、マシン語使用時に、レジスタ R1 として渡される値は、必ず 0x10000000 - 0x700 となります。
1.3以降専用で作る場合、ちょっと楽できますね!
はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

今後の IchigoJam のメジャーバージョンとなる予定です。不具合、ご要望など、お寄せいただけるとうれしいです。
Facebook IchigoJam-FAN、Twitter #IchigoJam、メール ichigojam@jig.jp まで!

links
- 定数行番号のRENUMに一部対応! わずか24KBのOS、IchigoJam 1.3 beta 3

小学校での国語と英語と絡めたプログラミング。
IchigoJamを使って、アルファベットとローマ字に親しんでもらう計画。
小学校で教えるローマ字は日本式で決まり! IchigoJamプリント「ローマじでうつ、カタカナ - こくごコース」と授業計画例

思いの外、奥深かかったローマ字、日本式ローマ字にちゃんと対応したバージョンへとバージョンアップを決めました。 先行して、まずはブラウザで動くIchigoJam「IchigoJam web」、未対応だったローマ字に対応です!(カナ切り替えは、CTRL+SHIFT)

IchigoJam web

今までのローマ字入力では、入力中のアルファベットの表示をしていませんでしたが、方式変更!

ローマ字、格段に打ちやすくなりました!


IchigoJam web」とのプログラムのやり取りする、インポートとエクスポートもカタカナに対応。 全角でも大丈夫!日本語混じりのプログラムいろいろ、どうぞ思う存分作ってみてください!

links
- 訓令式に準拠した「日本式ローマ字のづづり方」と差分でまとめた「ヘボン式ローマ字」

学習を簡単にゲームっぽく楽しくする手法、クイズ。
シンプルなJavaScriptの4択クイズフレームワーク「q4.js」を作りました。


クイズ Ichigo Q - q4.js」

特徴は、CSSを使った、そこそこデザインとマルチプラットフォーム対応なレスポンシブ対応。
縦長スマホからタブレットや大画面PC、iframeによる埋め込みまで対応したシンプルなコード、ぜひ改造元として活用ください。

Chromeの開発ツールのこのボタンを押すと、いろんな大きさをデバッグできます。

横長から

縦長まで、どんな大きさでもOK!

こちらがメインのjsプログラム。タイトルや、問題文、クリア後の処理を startQuiz に渡すだけ!
まずは、単にクイズを追加、変更するところから始めましょう。
CSSをのぞいて、色を変えてみるのもいいですね。

<!DOCTYPE html><html><head><meta charset="utf-8"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/> <meta name="viewport" content="width=device-width"/> <title>クイズ Ichigo Q - q4.js</title> <meta property="og:image" content="q4js.png"/> <link rel="apple-touch-icon" href="q4js.png"/> <link rel="stylesheet" type="text/css" href="q4js.css"/> <script src=fukuno.js></script> <script src=q4.js></script> <script>"use strict" window.onload = function() { // タイトル var title = "クイズ Ichigo Q" // 問題文、正解、誤答3つ以上いくつでも var quiz = [ [ "IchigoJamでLEDをつけるには?", "LED1", "LED0", "PRINT1", "CLS", "LED" ], [ "IchigoJamの誕生日は?", "4/1", "1/5", "10/15", "10/10", "1/1", "12/31" ], [ "PEEKコマンドと同じ働きをするコマンドは?", "ASC", "CHR$", "STR$", "POKE", "CLS" ], [ "複雑すぎる式を実行しようとしてでるエラーは?", "Complex expression", "Syntax error", "Out of memory", "Too long", "Illegal argument", ], [ "IchigoJamのプログラムで使える最大サイズは?", "1024byte", "512byte", "4KB", "32KB", "1000文字", "100文字" ], [ "ALT+Cででるキャラクターは?", "ネコ", "イヌ", "宇宙人", "ハート", "宝箱" ], [ "PRINTコマンドの省略形は?", "?", "PRT", "println", "print", "P" ], [ "LCとは何の略?", "LOCATE", "LLC", "LOCATION", "LOCALIZE", "LLC" ], [ "変数の最大値は?", "32767", "32768", "255", "65535", "30000", "1024" ], [ "IchigoJamの名前の由来は?", "1,500円", "15,000円", "福井の特産物", "開発者の誕生日", "CPUの型番" ], ] // クリアした時 var callback = function() { // 即、ジャンプしたい場合はこちら // location = "https://fukuno.jig.jp/2355" // ダイアログ形式で尋ねたい場合はこちら if (confirm("クイズフレームワーク q4.js についてくわしく知りたい")) { location = "https://fukuno.jig.jp/2355" } else if (confirm("こどもIchigoJamについて詳しく知りたい")) { location = "https://ichigojam.net/" } else if (confirm("もういちど?")) { location.reload() } } // クイズスタート startQuiz(title, quiz, callback) } </script> </head><body> <div id=head>第1問</div> <div id=main> <!--<div id=ind class=indcorrect></div>--> <div id=ind class=indcorrect>正解</div> <!--<div id=ind class=indincorrect>不正解</div>--> <div id=q>魁のよみは?</div> <div id=ans> <div id=ans1>さきかけ</div> <div class=correct id=ans2>さきがけ</div> <div id=ans3>ささき</div> <div class=disable id=ans4>がけがけ</div> </div> </div> <div id=credit> <a href=https://fukuno.jig.jp/2355>CC BY fukuno.jig.jp - 4択クイズアプリ framework q4.js</a> </div> </body></html>

HTML、必要な要素を構造化して記述。
JavaScript、シンプルに呼び出すだけ。startQuiz のプログラムも64行と短い!(see q4.js)
CSS、画面幅や高さを100とするvwやvhをレイアウトやフォントの大きさの単位として使い、media query の min-aspect-ratio を使って、入れたい文字数を確保するのがポイントです。(see q4js.css
q4js.zip - まとめてダウンロード ZIP)

日本が定める、日本語をラテン文字(アルファベット)で表す「ローマ字」は、内閣告示の「ローマ字のつづり方」(訓令式と呼ばれる)と、外務省による「ヘボン式ローマ字綴方表」の2つある。

ローマ字の歴史

1867年 来日していたアメリカ人、ヘボンさん(James Curtis Hepburnさん)が作成(ヘボン式)
1885年 物理学者の田中館愛橘さん、シンプルな日本式を提案
1937年 内閣 日本式とヘボン式が融合する形で「ローマ字のつづり方」を告示(訓令式)
時期不明 外務省 「ヘボン式ローマ字綴方表」 発表(旅券法 第五条 3 にヘボン式と明記あり)

ローマ字の習得手順

日本語のラテン文字(アルファベット)表現を習得することで、日本語理解が深まり、パソコンでの日本語が入力できるようになる。 英語圏の人には、ヘボン式の方が少し実際の音に近づく利点はあるが、どのみち日本語を知らずに正しく発音することは不可能。 よって、次の2段階での習得がいい。

1. まずはシンプルな日本式を習得し、ラテン文字で表現できるようにする
2. 英語、非英語圏のラテン文字、ヘボン式を習得し、ヘボン式ローマ字でも表現できるようにする

1の段階で、パソコンでのローマ字入力も同時にできるように練習すると定着しやすい。
小学校で教えるローマ字は日本式で決まり! IchigoJamプリント「ローマじでうつ、カタカナ - こくごコース」と授業計画例

ローマ字のつづり方


1. はねる音「ん」は、 N と書く。
2. はねる音を表わす N と次にくる A I U E O Y とを切り離す必要がある場合には、 N の次に ’ を入れる。(KON'NITIHA)
3. つまる音は、最初の子音字を重ねて表わす。(NIPPON)
4. 長音は母音字の上に^をつけて表す。なお、大文字の場合は母音字を並べてもよい。
5. 特殊音の書き表わし方は自由とする。

内国告示「ローマ字のつづり方」の第1表及び第2表による。
下記、教科書検定基準に必要に応じてよって良しとある。

第2章 教科共通の条件 3 正確性及び表記・表現
(4) 漢字、仮名遣い、送り仮名、ローマ字つづり、用語、記号、計量単位などの表記は適切であって不統一はなく、別表に掲げる表記の基準によっていること。

第3章 教科固有の条件 [国語科(「書写」を除く。)] 1 基本的条件
(1) 小学校の第3学年において取り扱うローマ字のつづり方については、「ローマ字のつづり方」(昭和29年内閣告示第1号)の第1表及び第2表(「そえがき」を含む。)によっていること。

別表 ローマ字つづり
ローマ字のつづり方」の第1表(「そえがき」を含む。)によること。ただし、必要のある場合は、同告示第2表によることができること。
義務教育諸学校教科用図書検定基準(平成30年9月18日文部科学省告示第173号):文部科学省
この日本式ローマ字は、母音5文字(AIUEO)と子音14文字(KSTNHMYRWGZDBP)の計19文字のアルファベットを組み合わせるだけと、とてもシンプルなため、ひらがなを習得した小学校3年生にもたやすく習得できる。
ローマじでうつ、カタカナ - IchigoJamプリント こくごコース

ローマ字で五十音表を表示するプログラムも簡単!

10 B="AIUEO" 20 S=" KSTNHMYRWGZDBP" 30 FOR I=0 TO 14 40 FOR J=0 TO 4 50 ?STR$(S+I,1);STR$(B+J,1);" "; 60 NEXT:? 70 NEXT

YI YE とか現代では使わない表示を消したければ、IF文を1行追加すればOK!

45 IF I=7 AND (J=1 OR J=3) OR I=9 AND (J>0 AND J<4) ?" ";:GOTO 60


(RUN on IchigoJam web)

ヘボン式ローマ字のつづり方

次のつづり方が、日本式と異なる

1. はねる音「ん」は、B M P の前の場合 M 、そうでない場合 N と書く。
2. つまる音は、最初の子音字を重ねて表わす。ただし、C の前には C ではなく T と書く。
3. 長音は書かない。
4. Vは使用不可。

ヘボン式ローマ字綴方表」(外務省)を元に作成。

平成26年11月 2020年オリンピック・パラリンピック大会に向けた多言語対応協議会 道路分科会 東京都内の英語対訳共通ルール及び対訳表」の記述のルールはこのヘボン式と異なる。
- はねる音を表わすNと次にくる A I U E O Y とを切り離す必要がある場合には、Nの次に - を入れる。(訓令式や、Google翻訳では ' を使用している)
- はねる音「ん」に、Mを用いなくてもよい。(Google翻訳では M を使用していない)
- Vの使用不可は明示されていない。

ローマ字における混乱は、日本語を学ぼうとする外国人にとってハードルを無駄に上げることになっていて、もったいない。
How Romaji Can Ruin Your Day

The Japanese government uses on type of romaji (Hepburn), but the major standards organizations (ANSI and ISO) both recommend another type of romaji (Kunreishiki). Textbooks use pretty much whatever they want. It’s all a big mess.

The Complete Guide to Japanese Romaji - JapanesePod101

There are several different systems of romaji. Arguably, the two most-often used systems are the Hepburn and Kunrei (訓令式) systems.
パスポートの名前や、すでに定着してしまった固有名詞はしょうがないとして、日本語表記としてのローマ字としてはシンプルな日本式を強く推したい。

links
- 小学校で教えるローマ字は日本式で決まり! IchigoJamプリント「ローマじでうつ、カタカナ - こくごコース」と授業計画例
- 日本式と訓令式、国際規格ローマ字の関係
- ローマ字 あいうえお
- ローマ字・ネットの会(臨時ローマ字調査会議事録など掲載)

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