起業家甲子園への挑戦権もかかっている、北陸イノベーショントライアル HIT2019、今年は福井開催!
見事、キャンパス部門、優秀賞に輝いたのは、福井高専プログラミング研究会チーム!

CHALLENGE FUTURE AWARD、ビジネスデザイン発見&発表会2019-2020全国大会挑戦権と、NICT賞と併せた、トリプル受賞!


NICT賞は、起業家甲子園への挑戦権とシリコンバレー研修旅行!
受賞したチームのリーダー佐野くんは、小中学生向け、PCNこどもプロコン出身者!成長、うれしい!
(中1から、PCNこどもプロコン2014冬2015冬2015夏2016夏、連続受賞)


創ろう、北陸からイノベーション!


アイオーデータ細野会長、北陸総合通信局三田局長からの激励と共に、開会!


1. 石川高専、GPSランで文字を描く支援システム
走る軌跡で文字や絵を描くGPSランを手軽に!(西宮のGPSランナー
楽しいルートを距離や道沿いの休憩スポットなどと共に紹介すると楽しいかも。徒歩や、分担するのもあり。


2. 福井工大、地域住民による勝山市の魅力発信
すごくいいまちなのに人口減少は止まらない。おじいちゃんおばあちゃんに情報発信を!
勝山の地元大好き感が伝わるプレゼンでした。新しい情報発信をいち早く使うのも手のひとつ。
動画配信は、ボタンひとつで使える最も敷居が低い情報発信ツール!地元の人のリアルな魅力がストレートに伝わるかも?
勝山市の有名人、谷川さんと、松田さんにインタビュー申し込んでみるとか?


ICTシビックプライド賞


3. 富山大学、バーチャル寺子屋
場所を超えて、VRで学び合いの場、寺子屋を再現!
VRは、リアル以上の学習効果を秘めているかも。実証できると普通の学校をもひっくり返せる!?
親にとっての見守りは、子供にとってはうざい監視かも?徹底した子供目線で作ってみるのも手。


実行委員会奨励賞


4. 北陸職業能力開発大学、位置情報を利用した食品ロス低減アプリASAP
食品ロスを減らすために、店舗のセールを通知するサービス。
安売りは値段競争を生みがち、需要予測で工夫したり、売り切れごめんをオープンデータ化するのも手。
農林水産省の食品ロス削減運動マスコット、ろすのん



5. 富山県立大学、交通事故検知アプリ
事故を予測し注意喚起するアプリ
福岡県の交通事故オープンデータを使って、サービスづくりしてみると良さそう!
データはどんどん活用して、儲けてOK。活用事例が広がれば、オープンデータ化もより広く、より細かく進化します!


ICTまちづくり賞


6. 仁愛大学、あなたは大丈夫?大事な乳幼児期の食事
とっても大事な幼少期の食事を電子化した食育ポートフォリオで改善!
幼少期に味の濃いものばかり食べて、味覚障害、3人に1人!?
ほぼスマホ世代と思われる新ママに、今更不便な紙の母子手帳はもう不要。
ヒアリング協力してくれた市役所、母子手帳にかかる予算で完全電子化を提案してみては?


実行委員会奨励賞


7. 仁愛大学、募金可視化アプリ
募金後進国、日本。原因である不透明感をブロックチェーンで払拭!
NPOなど、募金を募る団体ほど通常の会社以上に透明性高くあってほしい。
何が手間なのか、一度がっつり近所のステキなNPOに寄り添って募金を募ってみると良さそう。
キャッシュレス社会、確かに小銭募金業界は大打撃かも。
ライトなクラウドファンディングとしての、動画配信、投げ銭モデルも検討の価値あり。


実行委員会奨励賞


9. 福井高専、ハビット
歯の悩みをビットの力(ディープラーニング)で解決するデバイス、ハビット。
口腔内を自分で撮影し、虫歯や病気を未然に検出。スマホで手軽に実現できるといい。
歯科医師会とは、高専生も活躍した、歯磨きロボコンでもつながりあり。


キャンパス部門、優秀賞!


ビジネスモデル発見&発表 本大会出場権


10. 国際高専、AI, ビッグデータを用いた石川発展計画
京都や金沢で発生している、観光客多すぎ問題、オーバーツーリズムをスマホアプリによる行動履歴で解決!
学校の部活で開発を進めているというアプリ、利用者がダウンロードしたくなる楽しい工夫を考えよう。
地元ならではの仕掛けがあると、相互に楽しめそう。


地域 奨励賞


11. 石川県立飯田高校、そうや!奥能登にはキリコ祭りがあるげんよ!!


急速な人口減少。特に子供の減少がヤバイ。珠洲市にある小学校は7校、去年生まれた子供は41人!?


飯田高校生が描いたゆるきゃら達!
いらすとやに習って、小学校など使えるシチュエーションを特化した使いやすいイラスト群を「CC BY 瀬戸田高校」クレジットのオープンデータ化すると広まるかも。
英語で地域の魅力を伝える動画を撮って、ゆっくり滞在する外国人向けに徹底的に良くする工夫もあり。


地域奨励賞


基調講演、福井県民衛星、名前は「すいせん」に決定!寄付へのリターンはなんと衛星写真!


飯田高校のみなさん、奥能登からようこそ福井へ!


福井県民が多く通う、福井工大、シビックプライド x IT 広めましょうー


お会いしたかった、仁愛大学、安彦先生!


懇親会にて、ヒーローインタビュー!


次は全国大会!

写真整理に使っている Ruby プログラムを改修。
JPEGのEXIF情報を使ってソートすれば、ブログ化するときに捗る!

$ gem install exifr

ライブラリをインストールして

require 'exifr/jpeg' require "date" def getTime(name) if name.end_with?(".JPG") || name.end_with?(".jpg") || name.end_with?(".jpeg") exif = EXIFR::JPEG.new(name) d = exif.date_time if d.to_s != "" return DateTime.parse(d.to_s).to_time.to_i end end return File.stat(name).mtime.to_i end f = Dir.entries(".") f.sort! do |a, b| getTime(a) <=> getTime(b) end f.each do |name| puts name end

毎日使うツールは、自分で手を入れたいですよねっ

links
- 北陸-HIT2019 | 一般社団法人テレコムサービス協会

Python編に続いて、国産言語Rubyでも、IchigoJamを制御してみましょう!

まずは、IchigoJamにUSBシリアルをつなぐか、IchigoKamuyを準備。
RubyでUSBシリアルを使うには、serialport gem を使います。

$ gem install serialport

USBシリアルのポート(port)を /dev/tty.〜 または COM3 などで指定し、LEDをつけるプログラム(test.rb)はこちら

require 'serialport' port = '/dev/tty.SLAB_USBtoUART' ser = SerialPort.new(port, 115200) ser.puts("LED1\n") p ser.gets

動かしてみましょう

$ ruby test.rb OK

光りました!(USBシリアルの制御、PythonよりRubyの方が短くわかりやすく書けました)

クラス IchigoJam.rb を作って楽しましょう!

require 'serialport' class IchigoJam def initialize @port = '/dev/tty.SLAB_USBtoUART' @ser = SerialPort.new(@port, 115200) end def puts(s) @ser.puts(s) end def gets @ser.gets end end

あとはこのクラスを使い回せばOKです!(@portに設定する値は、お使いの環境に合わせて書き換えてください)

LEDを1秒光らせる、Ruby編はこちら。

require './IchigoJam' ser = IchigoJam.new ser.puts("LED1\n") puts ser.gets ser.puts("WAIT60\n") puts ser.gets ser.puts("LED0\n") puts ser.gets

コマンドラインで気軽に使える command.rb を用意して

require './IchigoJam' ser = IchigoJam.new ser.puts("#{ARGV[0]}\n") puts ser.gets

1行、かんたんハードウェア制御!

$ ruby command.rb LED1

ちょっと複雑な例、IchigoJam BASICのプログラムを転送し、PCの何かキーが押されたらESC信号を送って止めるRubyプログラム

require './IchigoJam' ser = IchigoJam.new ser.puts("1 LED1:WAIT10\n") ser.puts("2 LED0:WAIT10\n") ser.puts("3 GOTO1\n") ser.puts("RUN\n") require 'io/console' key = STDIN.getch ser.puts("\x1b") # ESC puts ser.gets

いろいろ自在にできますね!

IchigoJam 1.4βファームウェアを使えば、マイコン内蔵フルカラーLEDのまとめて制御もこのように簡単!(リファレンス

$ ruby command.rb 'LET[0],0,10,0:WS.LED1,50'


ネットで取得したデータと組み合わせれば、派手なお知らせが実装できますね!
その他、いろいろサンプルプログラム in Ruby はこちら。
IchigoJam/IchigoJam-control-by-ruby: IchigoJam control by Ruby

PythonでもRubyでもJavaScriptでも、得意な言語で楽しいハードウェアの世界をのぞいてみましょう!
Rubyなら、IchigoJamマイコン上でも動く、Ruby on Jam もあります。

links
- Pythonで操るフルカラーLED50コ、USBシリアル x IchigoJam x Python編!
- IchigoJamでパソコンとUSBシリアル通信。Node.jsを使うとキーボードとモニタいらず – しずかなかずし
- 実機転送実行まで1秒! Ruby on Jam でサクサク楽しい組み込みアジャイル開発

IchigoJam 1.4βが落ち着いてきたので、APIを使った Ruby on Jam を進めました!

早速デモをどうぞ!
ちゃんと動いた、かわくだりゲームと、USBシリアル経由で即時に転送実行しています。

IchigoJamで動くRuby版のかわくだりゲームのソースコードはこんな感じ

cls; x=15 while true lc x,5; p 79 lc rnd(32),23; p 42; p 10 wait 3 k=inkey() x=x-(k==28?1:0)+(k==29?1:0) if scr(x,5)!=0 break end end

pは1文字表示メソッドとしています。
mruby2.0でコンパイルしたmrbファイル、3kbyteまで対応。
そこそこ余裕ある組み込み開発が可能です。

IchigoJamのファイル領域として確保している後ろ8KBの内、前半を起動用BASICプログラム(entry.bas)とmrbファイル。後半を軽量 mruby VM を置いています。 一度本体にSAVEしてしまうとVM領域が壊れてRubyとして動かなくなってしまうので、また転送してご利用ください。

VM側をいじらなければ、C言語の知識も arm のコンパイル環境も不要です。


Rubyとアジャイル開発で有名な、永和システムマネジメント 平鍋さんと、福井出身つながりのNTTコミュニケーション 山下さん、鯖江のHana道場にてディスカッション! Rubyで作るIoTオープンデータ、福井発でやりましょう!

Ruby on Jam、今回はPCでの開発を基本としていますが、IchigoJam BASIC上で行番号付きで作ったRubyのプログラムをMixJuiceIchigoSodaなど、ネットで送信して、コンパイルしたものを受信して書き込むとかに対応するのもおもしろいかも。

転送は、セクター指定で書き込みができるように改造した lpc21isp を使用。部分書き込みでデバッグが早い!サクサク楽しい、組み込み開発が実現できました!

Let's play with Ruby on Jam!
IchigoJam/ruby4ij: Ruby for IchigoJam - src on GitHub」
1. Makerfile 内の環境設定 (IchigoJam は 1.4β9 以降にしておいてください)
2. make write で mruby VM for IchigoJam を書き込み
3. make mrbc で Rubyのプログラムをコンパイルして転送、自動的に起動します!

links
- 風船 Ruby 版 (ruby4ij)/Kidspod;
- そろそろ実用!? IchigoJamボードで動くRuby OS ver 0.2.0 – about yrm

Ruby on Jam を実現した、mrubyVMの軽量実装「mruby-l1vm
その軽さを生かして、WebAssembly化。web上クライアントサイド記述言語としての可能性を探ります。


mruby on web
アプリを開き、mruby 2.0 以降でコンパイルした、中間コード mrb ファイルをドロップ。
VMがバイトコードを実行し、最終値を表示します。

サンプルプログラムとお試しバイナリ sum.mrb

a = 100 sum = 0 while a>0 sum += a a -= 1 end sum

必要なメソッドなどは、emb_method内に実装すればOK!
DOM操作などをつければ、クライアントサイドのプログラムをRubyでサクサク書いちゃうことも可能ですね!

WebAssmeblyのバイナリである、wasmファイル、4KBを超える場合 Web Workers を使う必要があります。 その場合、Web Workers を使った「murby on web - over 4KB」を参考にどうぞ!

WebAssemblyのコンパイル、現在はこのようにしています (Mac)

PRJ=test-wasm clang -emit-llvm --target=wasm32 -S -I../ -Os $PRJ.c llc $PRJ.ll -march=wasm32 s2wasm --allocate-stack 100000 $PRJ.s > $PRJ.wast wast2wasm -o $PRJ.wasm $PRJ.wast

mruby、いろいろ活用方法探ってみます!

mruby で、Ruby on Jam、Windows環境でもコンパイルと転送、できたとのこと!
mrubyがIchigoJamで動くらしい 第4回戦 - Qiita

ついに動いた、かわくだりゲーム in Ruby on Jam!

ひとまず画面出力のみ接続して、いろいろ試験中です。
mruby-L1VM、クラス対応した level 2(?) でも2.5KBで実装できました!(mruby VM level 1 in 2KB

LPC1114 IchigoJam OSが24KB、BASICプログラムの保存領域の余り3KBにmruby VMと、IchigoJam OS用のマシン語コードが収まっています。

4KBごとの書き換えに対応しているLPC1114、OSの後ろ、sector6だけ書き換えられたら速くて、OSを用意する必要もなく便利そう。

お世話になっている、lpc21ispというオープンソースな書き込みツールに、-sector オプションを追加して、プルリクも送ってみました。
taisukef/lpc21isp: lpc21isp - Portable command line ISP for Philips LPC family and Analog Devices ADUC70xx
(おまけに、うちの環境ではうまく動かない -control 用に、-controlwithoutwait オプションも追加)

バイナリデータにした軽量mrubyVM「mruby.bin」を sector6 に書き込み、IchigoJam で、LOAD0、RUNで、かわくだりゲームっぽいものを見ることができます。(カーソルがまだ効きません)

また、こちらのRubyのコード、mruby2.0.1のmrbcでコンパイルし、

cls lc 5,10 print "Hello Ruby on Jam!"

bin2basでPOKE文に変換

10 POKE#700,82,73,84,69,48,48,48,54,51,70,0,0,0,133,77,65,84,90,48,48,48,48,73,82,69,80,0,0,0,103,48,48 20 POKE#720,48,50,0,0,0,182,0,1,0,5,0,0,0,0,0,29,16,1,46,1,0,0,16,1,11,2,3,3,10,46,1,1 30 POKE#740,2,16,1,79,2,0,46,1,2,1,55,1,103,0,0,0,1,0,0,18,72,101,108,108,111,32,82,117,98,121,32,111 40 POKE#760,110,32,74,97,109,33,0,0,0,3,0,3,99,108,115,0,0,2,108,99,0,0,5,112,114,105,110,116,0,69,78,68 50 POKE#780,0,0,0,0,8

これをUSBシリアル経由でIchigoJamへ書き込み、RUNすると、画面にでます!

Let's play with Ruby on Jam!

I implemented mruby VM level 1 in 2KB ROM! Also runs on IchigoJam.
ROM2KBで動く極小 mruby-L1VM を作りました! IchigoJam でも動きます。


C言語で拡張するIchigoJam BASIC」と組み合わせて Ruby on Jam! IcihgoJam上でもこのRubyプログラムのバイナリ版、ROM容量2KBで動きました。
Ruby on Jam in ROM2KB! with bas2bin for 3KB asm

a = 100 sum = 0 while a > 0 sum += a a -= 1 end sum

sum.rb として保存したRubyファイル。mruby-2.0.1 のコンパイラ、mrbc を使って、mrbファイルを作って、mruby-L1VMへセットすればOK。(localvariableは不要なので、 --remove-lv オプションを付けて軽量化しておきましょう)
make mrb by mrbc (mruby 2.0.1), and set to mruby-L1VM.

mrbc --remove-lv sum.rb

とっても短いので、VMやコンパイラ学習用にもオススメ! メモリはすべてスタック管理なので組込の長時間運用にも向いてます。
I recommend you to learn about the VM and the compiler. No dynamic alloctations.

src on GitHub
mruby-L1VM: mruby VM implementation in 2KB ROM

人気のかわくだりゲームのRuby版はVM的には動作OK! IchigoJamと接続トライしてみます。
"Kawakudari (Rafting game)" famous game on IchigoJam also works it. I'll try to connect to IchigoJam.

cls; x=15 while true lc x,5; print "O" lc rnd(32),23; print "*" wait 3 k=inkey() x=x-(k==28?1:0)+(k==29?1:0) if scr(x,5)!=32 break end end

まったさん、スタンドアローン型Rubyの第一バージョン公開!
Mr. Matta publish the Ruby on Jam standalone edition!

- IchigoJam機で動く Ruby 、Lチカ成功! – about yrm

links
- Ruby on Jam! IchigoJamで動くROM8KBのミニ Ruby VM と、mruby ver2.0対応はじめのいっぽ - mmruby for LPC1114

平成最後の一日一創、ついにIchigoJamで動いた Ruby on Jam!

IchigoJamでかんたんなRubyのコードをmrubyで中間コードにしてLPC1114用に改造したmmrubyを転送して実行! プログラムサイズが8KBしかないので、転送もサクサク。

Rubyのプログラム、転送から実行まで!

led 1 while btn()==0 end led 0 while true out 2,1; wait 10 out 3,1; wait 10 out 4,1; wait 10 out 4,0; wait 10 out 3,0; wait 10 out 2,0; wait 10 end

LEDを付けて、ボタンが押されるまで待つ。
押されたらLEDを消して、PCN金沢フルカラーLEDアクセサリーをOUT2/OUT3/OUT4でコントロール!


プログラムはパソコン上で編集する、パターン2(パソコンを持っている人向けの Ruby on Jam)


ボタン押さなくても光らせたい?
Rubyを編集して、再度コンパイルして、転送すれば、電源オンですぐに動く Ruby on Jam のできあがり!

mmruby IchigoCakeで動いたバージョンでは、52KBあったROMをダイエットして、8KBに!(主に標準ライブラリや、浮動少数ライブラリでした)

ただし、ちょっと複雑なコードになると動かなくなってしまうので、Ruby VMの理解を深めることと併せて、mruby 2.0 対応VMを作りかけてみました。 コンパクトで、コンパイラとかアセンブラとか言語とか、いろいろ勉強になって楽しいです。

src on GitHub
taisukef/micro_mruby_for_lpc1114: micro mruby VM implementation for LPC1114

links
- Ruby on Jam!? micro mruby VM for LPC1114, ひとまずIchigoCakeで動かしてみよう
- IchigoJamでRubyは動くのか?2つのアプローチとPC上試作 kawakudari.rb

IchigoJamでRubyを動かす2つ目のアプローチ、mrubyの中間コードをIchigoJamで動かすトライ、ひとまずプログラムサイズが50KB程度だったので、ROM56KB/RAM8KBのIchigoCakeで動作確認!

点滅しました!

Rubyのコードはこちら

while true led 1; wait 10; led 0; wait 10 led 1; wait 30; led 0; wait 30 end

国産プログラミング言語 Ruby の組込版 mruby、そのサブセット mruby/c を更に削った mmruby for Arduiono One を Arm Cortex-M0 のLPC1114に移植したものです。この連携連鎖こそ、オープンライセンスなオープンソースの真骨頂!

ちょっと複雑なコードにすると落ちてしまうので、まだまだ試験段階ですが、PC/Macでコンパイルして転送する基本的なところ、動きました! どこまで切り詰めてIchigoJamで動くようにするか、どういう機能を盛り込むか、削るかのバランス調整へと進みます。

VM側のコードはそのままに、中間コード(mrbファイル)やそれを変換したものだけを転送すればすばやく試せて便利そう。 使う機能に合わせてVM側のコードが自動的に生成され、小さければIchigoJamでOK、大きければIchigoCakeと変われば便利かも。 さくらインターネットのIchigoSodaと合わせて、RubyでかんたんIoTというプログラミング中級者向け大人向けワークショップも楽しいかも?

名付けて、Ruby on Jam!
Rubyで広げよう楽しいマイコン開発!

src on GitHub
taisukef/micro_mruby_for_lpc1114: micro mruby VM implementation for LPC1114

ちなみに、IchigoJam BASIC でつくるIoTは超簡単。シンプルな実装なら、その場で数行書いてデプロイ可!
大人も手軽にIoT! IchigoJam ver 1.3 は何が違うのか?>」
こどもプログラミング+IoT=大人プログラミング! 総務省 デジタル活用共生社会実現会議 ICT地域コミュニティ創造部会にて情報提供&体験会

Rubyのまつもとさん、Ruby on IchigoJamを思案!

IchigoJamのCPU、LPC1114FN28/FDH28は、Flash32KB, RAM4KB、mrubyがターゲットとするRAM400KBとは100倍の開きあり。
でも、ぎゅっとプログラミングの楽しさにフォーカスすれば、きっと、大丈夫!

まずは、IchigoJamで人気の「かわくだりゲーム」をRubyでコンパクトに書いていてみて、コンソールで動かしてみました。

「かわくだりゲーム in Ruby」 ターミナルのフォントはIchigoJamフォントに!
できたRubyのプログラムはこんな感じ。

require "./ichigoruby" cls; x=15 while true lc x,5; print "O" lc rnd(32),23; print "*" wait 3 k=inkey() x=x-(k==28?1:0)+(k==29?1:0) if scr(x,5)!=32 break end end

こちらIchigoJam BASIC版と比べてみてください。簡単にステップアップできそうですね!

10 CLS:X=15 20 LC X,5:?"O" 30 LC RND(32),23:?"*" 35 WAIT 3 36 X=X-BTN(28)+BTN(29) 37 IF SCR(X,5) END 40 GOTO 20

かわくだりゲームを手軽に動かすために、エスケープシーケンスから探し始めましたが、リアルタイムなキー入力や、画面表示場所のチェックなどで、行き詰まり、Cursesというライブラリを使いました。

gem install curses

で、cursesをインストールし、なんちゃってIchigoJam風ライブラリ「ichigoruby.rb」と共にお試しください!
IchigoRuby src on GitHub

IchigoJamでRubyを動かす、2つのアプローチ
1. IchigoJam BASIC や、IchigoLatte 同様、スタンドアローンで動かす。
2. PCでコンパイルした中間言語をIchigoJamへ転送して、動かす。

1は、エディタやコンパイラも含めて実装する必要があるので、制限が強めのRuby。 2は単純にLPC1114を使い切るC言語より手軽な中規模組み込み開発まで使えるくらいを目指せるかも?

なんと、IchigoJam / IchigoLatte でForthが動く!
LED Blinking with Forth!? Do you want “IchigoLatte Forth” which is uncompromising programming environment for IchigoJam machine? / ForthでLチカ!?IchigoJam用 超絶硬派プログラミングOS「IchigoLatte Forth」はいかが? – about yrm

きっと、まったさんが1をやってくれそうな気がするので、こちらは2の実装、やってみます!

links
- 100円マイコンを使い倒そう!たった28byteから始めるマシン語アプリ開発
- Create Happy! Ruby City Matsue 三度目の訪問

OculusでWebVRがうまくいったので、RICHO THETAで撮った全球写真(360度写真)&全球動画(360度動画)のビューワーをつくってみました。


カーソルの左右で写真または動画を送れます。臨場感抜群すぎて、酔ってしまうほど。


ハコスコなど、スマホでもそこそこ見られるかもしれませんが、ぜひOculusでも体感ください!

- 使い方 for Mac
THETAで撮った写真や動画をパソコンにいれる(動画はコンバートしておく)
panorama viewer packをダウンロードして同じディレクトリに置く
コンソールで「ruby makelist.rb > list.js」を実行(ファイルの生成順に並んだ list.js ができる)
Oculusをつなぐ(設定方法)
panoramaviewer.html を、FirefoxNightly で開く
VRモードに切り替える
カーソル左右でシーン切り替え(上で一番最初に戻る)

A-Frameのa-videoshere機能を使っただけで簡単にできました!
ファイル名変換用に初のRuby使用!
※Macに標準でランタイムが入っているため配布して使ってもらいやすい!?

print "var list = [" f = Dir.entries(".") f.sort! do |a, b| File.stat(a).mtime <=> File.stat(b).mtime end f.each do |name| if name.end_with?(".JPG") || name.end_with?(".jpg") || name.end_with?(".MP4") || name.end_with?(".mp4") p name print "," end end print "];"

RubyはIchigoJam BASICと同じインタプリタ型のプログラミング言語、こういうファイル操作などのプログラムをパパっとつくるのにいい感じです!

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