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

地理院地図を使ったハンズオンチュートリアルを公開したところ、オープンデータ伝道師のイスマイルさんより、OSMは?と入電あり。

OSM(オープンストリートマップ)は、無料で使える地図データ。ただし、タイル(地図を画像状にしたもの)データ提供サーバーを使ったアプリとしての利用は不可。 ただ、同じ形式の地理院地図 x leafletjs ならOKと気が付き、機能はばっさり削ったシンプル版でいいことに気がつきました。

leaflet x 地理院地図を使った薄いフレームワーク「egmapjs」と、活用例アプリ「Hana道場はどこ?」を作成。


Hana道場はどこ?」 徐々に拡大していきます(動かしたら、オートスクロールは停止)
クリックしたら、Hana道場のページを開きます。
ソース on GitHub


はじまりは日本全体から! zoom = 4


色味は前回同様ちょっと補正していい感じに! zoom = 13


ハンズオン資料も書き換える予定! zoom = 17

links
- Hana道場はどこ? - leafletjs x 地理院地図 (src on GitHub)
- Documentation - Leaflet - a JavaScript library for interactive maps
- 地理院地図|地理院タイル一覧 (出展リンク先)
- JA:タイル利用規約 - OpenStreetMap Wiki

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


クイズ Ichigo Q - q4js」

特徴は、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)

jig.jp 2019年度入社予定な内定者さんとの鯖江合宿。

集合は鯖江駅!


まずは、鯖江駅構内の階段を登った駅2Fライブラリーカフェ「te to te」で作戦会議


サバエシュー」で栄養補給。


つつじバスに乗ってみます。


乗降数をリアルタイムにオープンデータ化しているシステムは、IchigoJam x sakura.io 製!
福井県鯖江市における「バス乗客リアルタイムオープンデータシステム」の事例紹介


ちょっと乗るつもりが図書館まで


図書館から徒歩15分ほどで到着、水落駅


身近なG空間データ、消火栓を発見!


福井鉄道、見える景色がスリリング


商店街メインストリートのバス停


商店街内、タケベ無線にて、美しいパソコン、MSXの動作品!カナ配列が50音順です。


ここタケベ無線は、鯖江産パソコン、IchigoJam店頭販売の1号店!


夜食に福井の冬の名物、つるっとおいしい、水ようかん!


さくらインターネット高火力サーバーを初契約!80万円ものGPUを搭載した、マシンがなんと1時間357円でレンタル可能!
CPU(Xeon E5-2623 v3 4コア ×2)に、9.3TFLOPSを誇る、GPU(NVIDIA Tesla P100 x1、時価80万円!)というスペックは、まさに、高級ゲーミングPCの計算毎秒10兆回クラス!

nVidiaのGPU、CUDA対応のffmpegを使った動画変換をコンパイルして、比較してみましたが手元の Mac Book Proの倍ちょっととそこまで高速化しませんでした(うまくいってなかったかも?)
CUDAを使ったプログラムの拡張子は、.cu 、100万個の並列計算するサンプルプログラムはサクッと動作。また時間を見つけて、超並列プログラミングにも挑戦しなくては!
CUDA 7.5 をWindows10にインストールし、Sampleコードを実行するまで - Qiita


鯖江といえば電脳メガネ!
高火力サーバーを使って、機械学習スタート!普通のパソコンでは1日がかりなところ45分で終了!


一晩使った高火力、切り上げとなって7時間分、2,499円ナリ


こちら巡った鯖江を題材に、 Vue.js を使って、webアプリ開発


サクっとつながる、Node.js を使ってつくったwebサーバープログラムとjsのwebアプリとIchigoJam!
jsアプリから小型WS2812Bの8x8マトリクスを自在に表示!
JavaScriptを使って、PCからフィジカルになにか表示するのに便利です。
IchigoJamでパソコンとUSBシリアル通信。Node.jsを使うとキーボードとモニタいらず – しずかなかずし


動いている様子!JavaScriptから使うかんたんフィジカル端末としてもどうぞ!
こちらWS2812B 8x8制御用のIchigoJam BASICのドライバです。

10 N=64 20 POKE#700,240,181,68,24,N*3,32,12,73,114,182,128,37,35,120,1,52,255,34,74,96,3,39,10,38,43,66,1,208,10,39,3,38,1,63,253,209,0,34,74,96,1,62,253,209,109,8,239,209,1,56,234,209,98,182,240,189,0,0,1,80 30 v=10 40 D=#900 50 LET[0],0,0,0 60 FORH=0TO64-1 80 IF PEEK(C*8+H/8)>>(7-H%8)&1 POKED+H*3,L/10%10,L/100%10,L%10 ELSE POKED+H*3,0,0,0 90 NEXT 100 U=USR(#700,D)

「C=ASC("A"):L=800:RUN」と改行をコマンドとしてシリアルで送ることで、その文字を指定色で表示します。


ラポーゼかわだ、宿泊者は無償で使えるステキルーム!

2020年度の新卒採用もエントリー受付してます!
2019新卒エンジニア募集! 無いものを創ろう - asm15 supported SREC format!

石川高専が先生を務めたIchigoJamプログラミング体験@津幡町まちなか科学館で発見、巨大な万華鏡に触発されて、webで動く万華鏡JSフレームワーク「websarasa.js」を開発!11月末締切、何かが当たる更紗眼鏡コンテストを開催!

goals17 / websarasa.js
SDGsカラーのアプリ「goals17」をカレイドスコープ化!
タップ or クリックするごとにパラメータが変わります。
プログラムはGitHubにあって、ライセンスは CC BY のオープンデータなので自由に改造できます。

3ステップで動かせる、websarasa.js 簡単チュートリアル

1. 好きなテキストエディタ(メモ帳でもOK)でつぎのコードをコピペ

<!DOCTYPE html><html><head><meta charset="utf-8"/> <title>websarasa.js</title> <script src="https://taisukef.github.io/websarasa/websarasa.js"></script> <script>"use strict"; var main = function(scr) { scr.loop = function(g, ts, dt, vw) { // 背景 g.setColor(255, 255, 255); g.fillRect(0, 0, 1000, 1000); // 赤い動く丸 var x = 500 + 80 + Math.sin(ts / 200) * 80; var y = 500 - 50; g.setColor(255, 0, 0); g.fillCircle(x, y, 60); }; }; </script> </head><html>

2. simple.html などと、拡張子.htmlで、名前をつけて保存
3. Chromeなどのブラウザで開く!(動く!タップするとデバッグモード

websarasa.js リファレンス

var main にセットされた関数が呼び出す main に渡される scr の loop にセットされた関数で万華鏡のように描画 * 他は、JavaScriptに準拠する g.setColor(r, g, b); // 色変更 g.drawLine(x1, y1, x2, y2); // 線を引く g.drawRect(x, y, w, h); // 四角を描く g.fillRect(x, y, w, h); // 四角で塗りつぶす g.drawCircle(x, y, r); // 丸を描く g.fillCircle(x, y, r); // 丸で塗りつぶす

#websarasa コンテスト応募方法

1. GitHubアカウントをつくる(もうもっていれば不要)
2. websarasa.js を Fork する(Forkボタン、押すだけ!)
3. Forkした(コピーした)サンプルをベースに、オリジナルの更紗眼鏡(万華鏡の別名)をつくる
4. 作品のURLと作者名を index.html に加えるプルリクを送る(2018.11.30締切)
5. 優秀作品として選ばれたら、何かを受け取る!(連絡は メールや、Twitter DM などを想定)

高専生の挑戦、求む!(もちろん中高校大学生、大人でもOKです)

links
- websarasa.js - kaleidoscope on web
- つなごう高専IT部、沖縄高専で情報セキュリティ実習&ICT委員会訪問、PCN美ら爆誕!
- 高専生が審査する小中学生プロコンいいかも!? 大人も子供も高専生もみんなで研修、IoT with PCN仙台
- 高専生が伝える小学生プログラミング at スゴイ津幡町まちなか科学館、高専生先生の意気込み&感想動画 / KidsVenture x 石川高専

4Kや8K、映像の進化は画面解像度だけでなく、時間解像度も進化してました。
通常、秒間60回、60Hzで更新される画面、なんと4倍の240Hzにも達しています。(実験では480Hzも!)

レースゲームなど、動きが激しいアクションゲームでのフレームレートはとても大事。
処理が重たいゲームで30fps(frame per second、秒間更新回数)なものは、操作の遅れが最大33ミリ秒(1秒/30)発生し、見た目にもカクカクぎこちなく見えて幻滅です。

初代ファミコンも60fps(正確には59.97fps?)のなめらかなでクイックな反応が楽しい。ゲームによっては敵が多く出すぎて「処理落ち」と呼ばれるフレームレートの低下も当時でも、よく知られた現象でした。

そんな重要な要素、フレームレートが4倍にもなった世界、ゲームに限らず未来を感じます。ブラウザ上でも手軽に実験できそうなので、JS用かんたんゲームフレーム「sg-game.js」を作って、その実現の時を待つことにしました。

サンプルアプリ「FPSChecker」は、その環境でのリフレッシュレートを表示しながら、ぐるぐる色を自身の角度を色相としながら回る円、タップまたはクリックするほどに回転周波数が変わります。 10Hzにしたときに残像で見える円の数、通常の環境では6ですが、12コ、14コ、24コと増えるはず。(480Hz環境なら48コ!)


FPSChecker」(スクリーンショットは60fps環境を模したもの)

IO-DATA製24.5インチ240Hz対応モニター「KH2500V-ZX2」を買って試してみます!
(「EX-LDGC251UTB」と同じ仕様のパッケージ違い)

今回、新設した正方形ゲーム用シンプルフレームワーク「sg-game.js」、ゲームづくりに、JavaScript言語によるプログラミング学習に、活用ください。


こちら、最小サンプル「min.html」をコピペし、min.htmlとして保存、ブラウザで開けば動きます!
PC、iPhone、iPad、Android、いずれもOK!

<!DOCTYPE html><html><head><meta charset="utf-8"/> <title>min</title> <script src="https://taisukef.github.io/sq-game/sq-game-r1.js"></script> <script>"use strict"; var gamemain = function(game) { game.loop = function(g, ts, dt, vw) { g.setColor(255, 0, 0); g.fillCircle(500, 500, ts % 1000); }; }; </script> </head></html>

正方形ゲーム専用フレームワーク sq-game.js の使い方
- gamemain メソッドをつくる
- 受け取った、game オブジェクトに 描画用ループ loop メソッドを設定する
- g は canvas、ts は時間、dt は時間差分、vw はバーチャル幅と高さ1000
- 必要なら、タップされた時の操作用に tap メソッドを設定する

こちらが、sg-game.js を使った、上記、FPSCheckerのプログラム!

<!DOCTYPE html><html><head><meta charset='utf-8'/> <title>FPSChecker</title> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta property="og:image" content="ss.png"/> <link rel="apple-touch-icon" href="icon.png"/> <script src="sq-game-r1.js"></script> <script>'use strict'; var gamemain = function(game) { game.tap = function() { if (hz == 10) hz = 0.1; else if (hz < 0.95) hz += 0.1; else hz++; }; var hz = 1; var th = 0; game.loop = function(g, ts, dt, vw) { g.setColor(0, 0, 0); var fh = 60; g.setFontSize(fh); var s = "" + fixfloat(hz + 0.05, 1) + "Hz"; g.fillText(s, 10, 10 + fh); var s = "FPS: " + Math.floor(1000 / dt) + " / " + fixfloat(dt, 2) + "ms"; g.fillText(s, vw - g.measureText(s).width - 20, 10 + fh); th += dt / 1000 * Math.PI * 2 * hz; var r = vw / 4; var x = vw / 2 + Math.cos(th) * r; var y = vw / 2 + Math.sin(th) * r; var cr = 90; var rgb = hsv2rgb(th / (Math.PI * 2) * 360 + 90, 0.8, 0.8); g.setColor(rgb[0], rgb[1], rgb[2]); g.fillCircle(x, y, cr); g.setColor(255, 255, 255); var fh = 80; g.setFontSize(fh); var s = "" + fixfloat(hz, 1); g.fillText(s, x - g.measureText(s).width / 2, y + fh / 4); }; }; </script> <style> a { color: gray !important; } </style> </head> <body> <div id="src"> FPSChecker<br> APP: CC BY <a href=https://fukuno.jig.jp/1686 target=_blank>fukuno.jig.jp</a><br> LIB: CC BY <a href=sq-game-r1.js target=_blank>sq-game.js</a><br> </div> </body> </html>

ちなみに、映画のフレームレートは秒間24コマ、CGはきれいになってもなかなか変わりませんね。
8Kで秒間240コマの映画とか、未知の体験も楽しみです。

jigインターン、がっつり開発する2週目!定時後、Adobe XD を使ったデザイン勉強会に混ざってみました!


UIデザインの便利無料ツール「Adobe XD」を使ってみるデザイン勉強会に参加し、ハンズオンで作ったTwitter風のモックアップ。 中央揃えや、等間隔など、スナップがいい感じに効いて気持ち良し。自動で出てくるピクセル単位のガイドも良し。 Designで画面をサクサクつくって、Prototypeで画面間のつながりをパパッと作れます。


できたモックアップは、ツール右上のボタンからAdobeのサーバーにアップロードして、web共有が可能(無料版は1つまで)
今回作ったもの(期間限定)」


チームみんなでモックアップを自分の手元のデバイスで確認できるので、すばやく失敗に気がつけますね! テーマカラーがまとめて変更できて便利!(シンボルの一括編集もしたい、できる?)


フロントエンド勉強会と、


デザイン勉強会。どっちも受けたかった?受けた人から聞いてみよう!


インターンOB、遊びに来てくれました!


OBにプロダクトのビジョンを説明、質疑応答から生まれる、新たな発想!


インターンOB達と食べるランチは、福井ご当地グルメ、ヨーロッパ軒 神明分店のカツ丼!


誕生105年、世界最古のカツ丼!
食べ方など詳しくはこちら「カツ丼誕生100周年!ヨーロッパ軒のソースカツ丼の食べ方
(写真は、蓋が締まりきらない、ご飯大盛りのカツ丼大)

うえるかむパーティーで行った秋吉など、ご当地チェーン店のみまとめるマップもあると良さそう!?

jigインターンDay8
初めての自炊 - jigintern2018’s diary

jigインターンDay7、OB/OGも集まるBBQの夏!

来福感謝!


炭火起こしに、ファイヤーおばあちゃん!


生年月日を (年+月+日)%4 で、テーブル分けしてBBQ!
一見簡単そうな計算に手間取る高専生・・・、任意のテーブルにうまく分かれるためのアプリ、いいかも?


お腹を満たしたら、小次郎が燕返しを編み出したという一乗滝。


突入するインターン生!


負けじと自撮りしながらの突入を敢行!冷たい水が心地よい!


広場でVRスイカ割り!
じいかろ、スマホVR「redrain - WebVR/JS」を見ながら、会心の一撃!


スマホVR「左右反転する視界(colorsightをタップして変更可)」装備し、MRスイカ割り!
見えているのにちょっと違う、MRな視界の難しさがおもしろい。
VR/MRスイカ割り、どんな視界でやると楽しいでしょう?
炎天下での長時間スマホVR、熱で停止するので、何台かで運用するのが良いです。(オススメスマホVRはこちら


割れたスイカ、おいしくいただきました。


気温38.45度、湿度41.25%、UVインデックス12.5、不快指数87と、日焼けには気をつけたいBBQ日和!


UVカットが強力なサングラス、UVインデックス12が2に!


IchigoSodaで、温度・湿度・UVインデックスを5秒おきに送信し、スマホMRで見るメガネを持っていくも、ソフトバンク圏外のため使えず! 涼しい一乗滝近くなど、秘境ほど使いたい環境見えるメガネ、BLE化してリベンジしなきゃ!(thuv - WebMegane on GitHub

IchigoSodaで動かすプログラムはこちら

'THUV uploader every 5 seconds 10 CLT:D=5*60 20 GSB@TH:V=(ANA(2)-310)/2 21 IF TICK()>D GSB@SEND:CLT 30 ?T,H,V 40 WAIT12 60 GOTO20 'for T and H 600 @TH:U=95:LET[U],#062C,#4401,#8808,#884A,#4350,#0C00,#4770:U=#800+U*2 610 R=I2CR(#45,U,2,#700,6):[0]=17500:[1]=PEEK(#700)<<8|PEEK(#701):T=USR(U+2,#800)-4500:[0]=10000:[1]=PEEK(#703)<<8|PEEK(#704):H=USR(U+2,#800):RTN 'for sakura.io 800 @SEND:LET[0],2593,19457,T,H,V,0:C=0:FORI=0TO11:C=C^PEEK(#800+I):NEXT:[6]=C:?I2CR(79,#800,13,#820,3):RTN 'for LCD 25 CLS 35 GSB@LC 900 @LC:LET[96],640,64,#5639,#C6C,#C080,64:?I2CW(62,#8C3,5)+I2CW(62,#8C0,3,#900,16)+I2CW(62,#8C8,3,#920,16):RTN 'Fukai Index 31 T=T/10:H=H/100:F=T-T*19/100+(T-T/100-143)*H/100+463 32 ?"Fukai Index:";F/10

sakura.io、1パケットで64bit幅の数値が送れるので、16bitの数値3つをまとめて送信できます。XORを使ったCRCの計算もポイントです。


再び福井で集結、jigインターンOB/OG同期達!

心も身体も洗えるBBQ - jigintern2018’s diary
jigインターン、じっくり開発する2週目に突入!

エンジニアの休日のお楽しみと言えば、ハッカソン!
jigインターンDay6の恒例行事、今年は平成最後の国体、福井国体をテーマに6チームで楽しく開発・発表・懇親会!


今年の6チーム、5分ずつの発表動画です!


優勝チームは、子供でも参加できる炬火リレーという斬新な切り口で、テープLEDと赤外線通信によるリレーのプロトタイプを実現!
こどもたちが自分で作って、リレーして回ったりするのも楽しそう!副賞は、jig帽子!


誰もが参加できる国体に!クイズ国体。福井国体にも興味がわき、ちょっと自慢できる知識が手に入るすぐれもの。公式と合わせたデザインも良かった。 副賞は、勝手提供の完全食 COMP(グミ or 粉)。


3位はやりがいを可視化する、やりがいチーム!
なぜか福井県の最低賃金と同数のポイントで溜まっていくポイント!時は金なり。自分の時間、何に投資するかの判断基準にもできそう。 副賞は、やりがいあるエバンジェリスト活動のために、IchigoJam&すべてのこどもたちへプログラミングを「PCN」シール!


テーマは福井国体。


全国各地から駆けつけてくれるインターンOB/OG、お土産提供者には与えられる、自己紹介タイム!


たくさんのお土産、ありがとう!!


まずはインプットとアイデア出し。付箋紙で思いついたアイデアをどんどんかいて、テーブルを移りながらいろいろアイデアを深めます。 その後、いい感じのアイデアを各テーブルから発表してもらって、人気投票。上位6プロジェクトでいい感じにチームが分かれて、開発スタート!


お昼!


開発!


開発!


社員運営チームとOB/OG!


開発!


開発!


はんだごてのオアシスも活躍!


開発!


開発!


開発!


炬火リレーのプロトタイプ!


可能性広がる、テープWS2812B x IchigoSoda!


盛り上がりを音量で可視化するIoTのプロトタイプ。WROOM-02使用!


IoTで参加できる、楽しいカウントダウンのプロトタイプ!


開発後は懇親会、乾杯!


久しぶり!懐かしい話、技術な話、まじめな話。世代を超えて楽しめるって良いですね!


ハッカソン後には撮り忘れた記念撮影!

今年もいよいよスタート、高専生活最高の思い出づくりに挑戦、jig.jp 高専インターン2018!

全国13高専から16名の高専生。


集合場所は、鯖江、jig.jp本店、めがね会館。


ウェルカムパーティーは、福井になんと27店舗!やきとりの名門、秋吉


写真映えするやきとり。小さく量を食べるのが秋吉流。

Day2は、楽しい企画会議、ウォームアップにGoogleMapsを使った高専マップと13高専を表す地図アプリのソースコードを紹介。

GoogleMapsで全国高専マップ!

マップアプリハンズオン資料も見ながら進めるだけで、誰でも簡単マップアプリづくり。

Innovative Tomorrow」のゲストは舞鶴高専出身、さくらインターネット田中さんでした!
衛星オープンデータ化プロジェクトを紹介!

全国高専キャンパスのオープンデータを使って、高専マップづくりへと応用してみました。 現在のGoogleマップの衛星写真は田中さんが言っていたように、アメリカの衛星写真が使われていて利用規約が別途定められていますね。

jig.jp高専インターン2018マップ!


Innovative Tomorrow」非同期共演、プログラミング入門、アナログ入力と条件分岐編として福井高専出身、福野も出演。良い高専の日となりました。
女優さんもIchigoJamはんだづけ! 光るアイスのプログラミングと録画できるデジタルメガネ - Innovative Tomorrow

ここから3週間、毎日インターンブログもスタート!
jig.jp インターン2018始まります! - jigintern2018’s diary

株式会社jig.jp、15回目の株主総会と取締役会。 今までの2人代表制を1トップ化し、事業展開の高速化を図り、 私は新たに設けた会長職に就任、次の15年を見据えた広域な価値創造にコミットする新体制がスタートです。

福野泰介 新肩書
株式会社 jig.jp 取締役会長(株式会社 A Inc. 取締役 / 株式会社 B Inc. 代表取締役社長)
英語表記:jig.jp co., ltd. chair Taisuke Fukuno
※オープンデータや、IchigoJamなど、事業構築中のグループ会社 B Inc. は社長継続


社内全メンバーと株主の方へ、IchigoJam 15th anniversary edition をプレゼント。
BASICのスピードが気になるならば、Armマシン語を使ってフルパワーを出し切りましょう。

Armマシン語でハローワールド
HELPコマンドでメモリマップを確認

HELP MEM MAP #000 CHAR #700 PCG #800 VAR #900 VRAM #C00 LIST

まずは画面の左上(VRAM:#900)に一文字表示させるマシン語

R3=#9 R3=R3<<8 [R3+R1]=R0 RET

からハンドアセンブルするか、asm15でアセンブルして、メモリに書き込み実行!

POKE#700,9,35,27,2,88,84,112,71 U=USR(#700,ASC("A"))

プログラミングの楽しさが伝わりづらい「ハローワールド」を、ちょっとひねって、大文字を小文字に変換するプログラムにしてみます。

R3=#9 R3=R3<<8 @LOOP R2=[R0+R1] R2-34 IF 0 GOTO @END R2+=#20 [R3+R1]=R2 R3+=1 R0+=1 GOTO @LOOP @END RET

終了記号がダブルクォート(アスキーコード34)なのがポイントです。
どんなモダンな言語でプログラミングしようとも、マシン語レベルではGOTO分岐とGOTOループが基本なのだと気がつけます。

POKE#700,9,35,27,2,66,92,34,42,4,208,32,50,90,84,1,51,1,48,247,231,112,71 U=USR(#700,"HELLO WORLD")

スペースがアットマークに変わってしまう問題に気が付きました?どう直すといいでしょう?
ヒント:Cortex-M0 Armマシン語表 (asm15表記、抜粋)と試行錯誤!
参考:はじめてのマシン語 - IchigoJamではじめるArmマシン語その1

1段ギアが上がった、スピードのjig、ツールのjig。
ミッションは不変の「利用者に最も近いソフトウェアを提供し、より豊かな社会を実現する」
これからもよろしくおねがいいたします!

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