第31回の高専プロコン競技部門を勝手に創るオンライン会。APIサーバー、Javaのクライアント、C言語のクライアント、JavaScriptのクライアントとそれぞれ役割分担して開発中。(src on GitHub競技ルールの後半)


対戦している様子!・・・ただ、コアにバグがあるようで、途中青忍者が消失する現象あり。

JavaScriptのクライアント、クラスを作って整理。デタラメに置いてデタラメに動くAIプログラムはこんな感じに書けます。(src on GitHub)

import { KakomimasuClient, Action, DIR } from "./KakomimasuClient.js" import util from "../util.js"; const kc = new KakomimasuClient("a3", "デタラメ", "サンプル", "a3-pw" ); let info = await kc.waitMatching(); const pno = kc.getPlayerNumber(); const nagents = kc.getAgentCount(); const points = kc.getPoints(); // ポイントの高い順ソート const pntall = []; for (let i = 0; i < points.length; i++) { for (let j = 0; j < points[i].length; j++) { pntall.push({ x: j, y: i, point: points[i][j] }); } } const pntsorted = pntall.sort((a, b) => b.point - a.point); info = await kc.waitStart(); // スタート時間待ち while (info) { // ランダムにずらしつつ置けるだけおく // 置いたものはランダムに8方向動かす const actions = []; const offset = util.rnd(nagents); for (let i = 0; i < nagents; i++) { const agent = info.players[pno].agents[i]; console.log(pno, agent); if (agent.x === -1) { // 置く前? const p = pntsorted[i + offset]; actions.push(new Action(i, "PUT", p.x, p.y)); } else { const [dx, dy] = DIR[util.rnd(8)]; actions.push(new Action(i, "MOVE", agent.x + dx, agent.y + dy)); } } kc.setActions(actions); info = await kc.waitNextTurn(); }

一歩進めて、周りの点数の高いところから狙っていき、壁破壊も行うAIにしたものがこちら。(src on GitHub)

const dirall = []; for (const [dx, dy] of DIR) { const x = agent.x + dx; const y = agent.y + dy; if (x >= 0 && x < w && y >= 0 && y < h && checkFree(x, y)) { const f = field[y][x]; if (f.type === 0 && f.pid !== -1 && f.pid !== pno) { // 敵土地、おいしい! dirall.push({ x, y, type: f.type, pid: f.pid, point: f.point + 10 }); } else if (f.type === 0 && f.pid === -1) { // 空き土地優先 dirall.push({ x, y, type: f.type, pid: f.pid, point: f.point + 5 }); } else if (f.type === 1 && f.pid !== pno) { // 敵壁 dirall.push({ x, y, type: f.type, pid: f.pid, point: f.point }); } } } if (dirall.length > 0) { sortByPoint(dirall); const p = dirall[0]; if (p.type === 0 || p.pid === -1) { actions.push(new Action(i, "MOVE", p.x, p.y)); poschk.push({ x: p.x, y: p.y }); poschk.push({ x: agent.x, y: agent.y }); // 動けなかった時用 } else { actions.push(new Action(i, "REMOVE", p.x, p.y)); poschk.push({ x: agent.x, y: agent.y }); } } else { // 周りが全部埋まっていたらランダムに動く


圧勝!・・・おや、フィールドに忍者がいる!?コアのバグ修正が必要です。
何か気づいたことがあれば、Issuesまで、お寄せください。

C言語版クライアントのサンプル、Windowsで動かなかったのを修正。Windowsでは標準のスタック領域が1Mbyteしかないようで、メモリ確保できずに落ちてしまうことが判明。ヒープ領域を使う malloc/free を使うよう、変更(src on GitHub)。 ただ、JSONのパースなど、もうひと手間必要なので、手っ取り早くAIプログラミングにチャレンジしたい人は、JavaScript版かJava版がオススメです。

次回、8/20(木)20:00〜に、練習試合します!
Code for KOSENSlackまでどうぞ!

暑い夏でも涼しく開発できるSCCにて、Code for Sabae もくもく会

もくもく作ったもので遊んでもらっている様子。上を常に見ることになる、非日常VRゲーム。


ballfall VR」(src on GitHub)
実寸大のテニスコート(シングルサイズ 奥行き23.77m x 幅8.23m)で、なぜか跳ね回る無数の巨大ボールから避け続けるゲームを作りました。 実際のテニスコートで安全に遊ぶのがオススメです。


カメラ=自分の顔が当たると暗転してゲームオーバー。リトライは、コントローラーのトリガー(またはマウスクリック)。

ライブラリにA-Frameを使ったシンプルなJavaScriptで作った、webアプリ。 遠く離れた場所同士でも楽しくスポーツできるかも?

発表の時間!


かつて開発にも参加したことある「Astah」のプラグイン!


Googleによるスマホアプリ開発環境、Flutterを使ったアプリ開発にチャレンジ。


今年の高専プロコン競技部門予定だった「囲みます」のAIづくり。


CSVから2Dアニメーション生成ツールを使ってみた。


FlutterでMVCモデルよりもいい感じのモデルを探ってみた。


Flutterで、カメラを使ってみた。(複数のカメラを同時に使おうとすると落ちる)


UnityとかHSPによるゲームをつくってみた。


もくもく会とは、もくもくそれぞれ思い思いの何かを作ろうと集まり、最初に宣言、質問や、雑談、おやつを交えつつ、それぞれ何か作って、最後に成果発表する気軽なイベントです。 自宅ではなんとなく気が散ってしまう人でも、きっと大丈夫!

今回はFlutterに偏ってましたが、ノンテーマなので、何を持ち込んでもOKです! もくもくお絵かきする、モデリングする、書道するとかでも問題なし!


NT鯖江2020 - PukiWiki」なにか(N)つくって(T)、発表しよう!
次回開催と、年一の成果発表の場「NT鯖江2020」をお楽しみに!


おやつタイムに西鯖江駅向かいの「めだか」まで散歩。


鯖江名物「やまうに」を使ったやまうにたこやき!


200種類あるという豊富なメニュー!


熊丼!


猪肉うどん、薬味として、やまうに付き!


気になるお店、鯖江に初のボルダリング上、新スポーツスポット「SKI PRO SHOP J1 with Bolder-Works」(map)


中は広々!3日に1コースは増えますよ、とのこと。期間限定、入会金無料!

links
- webをFAX風にするChrome拡張「faxinizer」Code for Sabae もくもく会 at SCC

ブラウザの上部に「安全ではありません」「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!

福井県でのサイバーセキュリティキックオフ「サイバーセキュリティフォーラム&交流会 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」とはじめてのプルリク

コンピューターやネットワークが社会が深く広く使われている現代におけるサイバーセキュリティは、セキュリティの一部ではなく、実生活全般の安全に関わる上位概念として捉える必要があります。

Hana道場の向かい、Hana工房で開催されたサイバーセキュリティー勉強会。来年本格実施予定の中高生向けのサイバーセキュリティコンテスト「CyberSakura」に向け修行中。 参加に名乗りを上げた、中学1年生3人が受講。サイバーセキュリティの入門とコンテストに向けた模擬競技が行われました。

サイバーセキュリティとは、コンピューター、ネットワーク、データを使い続けられるよう保全すること。 社会にとっての普通の状態を持続するためには、オンライン、オフライン問わず発生しうる迷惑なハッキング行為、悪意のないうっかりや、地震まで、さまざまなリスクに備える必要があります。

CyberSakura」は、その知識と実行力を養うコンテストを含む教育プログラム。
エキシビジョンマッチに向け、日本全国の中学1年生から高専高校の2年生までを募集中です。
CyberSakura 〜サイバーセキュリティ教育プログラム〜 | Peatix

誰が作ったか分からないアプリを自分のパソコンで動かすリスクを考えてみましょう。
プログラミングした人には分かりますが、ファイルを消すのも、編集するのも、どこかに送信するのもプログラムを使えば自由自在。 いくら見た目がかわいくても、自分自身をパソコン内部の分かりづらい部分にコピーし、こっそり動かし続け、何かの司令を待つ、そんなこともできてしまいます。

よく知られた、また、よく使われているアプリであっても完全に信用できるわけではありません。 突然そのアプリの所有者が変わって、悪意ある自動更新が起きない保証はありません。

対処する方法のひとつに仮想化技術があります。仮想的なパソコン上でアプリを動かすことで、実際のアプリの動きを手にとるように確認できます。 CyberSakuraは、問題あるOSの状態を仮想化環境上で動かし、対処します。


Zen言語3行でつくるWebAssemblyの続きとして、ZenからDOM操作の実験成功!(src on GitHub)

ブラウザ上で動作する静的型付け言語環境、WebAssemblyも、仮想化技術のひとつとして注目されています。 WASI (The WebAssembly System Interface) により、サーバー上での動作環境が整ってくると、より安心なサーバー運用ができそうです。

発明が、ソフトウェア化、オープン化したことによって、新技術が世界中から続々誕生するエキサイティングな世界は留まることを知りません。 大いに活用していきましょう!

福井県でのサイバーセキュリティ、キックオフ!
サイバーセキュリティフォーラム&交流会in 福井
2020/8/3(月)開催、オンライン開催となっています。

再びほぼ全国に広がった新型コロナ感染者、新時代を切り開くため、創造活動の重要性は増すばかり。

2019年に初共催した、出展者みんなでつくる手作りイベント、NT鯖江。こちらは会場を鯖江商工会議所の広い会場(1F SCCと4F 大ホール)に移し、密を避けてのリアル展示イベントとしての開催決定!

NT鯖江2020 - PukiWiki
出展者募集開始しました。盆栽、掛け軸、手芸、電子工作、ソフトウェア、お絵かき、彫刻などなど、つくったものぜひご展示ください!(無料です)


オープンデータなものづくりアイドル、Hanaちゃん by Azulily_V、PRなどに活用ください!

さばえものづくり博覧会、2020年は中止ですが、替わりにオープンデータ化と発信サイトをオープンソースで製作し、情報発信力を高め、次年度に備えることになりました。

GitHubにて製作中、コントリビューター大募集!


2019年度の出展者を中心に、鯖江商工会議所メンバーへのオープンデータ化促進、福井県での施設ダッシュボードや、鯖江市長候補比較でも使用している「PUSHかんたんオープンデータ」を活用。


それぞれのデータは、それぞれの会社さんがいつでも自由に編集できます。

より使いやすく、より伝わりやすい情報発信の形を、オープンデータとオープンソースで探っていきます!

改善するにはデータ化を!数値化できなければ、客観的な改善を確認できません。
また、素早く広く活用するためにはオープンデータ。Excelでも作れてプログラムからも扱いやすいCSVオープンデータがオススメです。(参考、高校情報ICSVオープンデータのススメなぜ PDF ではいけないのか

Code for Japan、総務省のマイナンバーカードの普及率PDFをCSV化し公開!
マイナンバーカード普及状況ダッシュボード
カラム地図での表示版、作ってみました。

マイナンバーカード普及状況 with カラム地図
2020年7月1日現在のトップは宮崎県で、24.3%!


マイナンバーカード普及状況 with カラム地図」宮崎県
宮崎県をタップすると、県内の普及状況比較ができます。都城市がダントツ37.9%!


マイナンバーカード普及状況 with カラム地図」福井県
福井県は勝山市がトップ!(表示している中での最小最高をとって色付けしています)
地域によるバラツキの理由を探るのもおもしろそうですね。毎月1日にだいたい更新されるようです。 このアプリは、データ一覧を取得し最新データを表示するように作ってあるので、来月頭にまたぜひチェックしてみてください。


鯖江市地域活性化プランコンテスト | 市長をやりませんか?
13回目となる「市長をやりませんか?」鯖江市地域活性化プランコンテストでは参加学生大募集中! 今年は初のオンライン開催。全国、全世界どこからでも鯖江のプラコンに気軽にチャレンジ可能。

自分のまちと、鯖江、何が違って、何が同じなのか、データとデータだけでは見えないこと、両方活かして未来を創るコンテスト。 高専生の参加も大歓迎!

links
- [BOD供養寺]マイナンバーカード交付率をグラフ表示するサイトを作った - Qiita
- マイナンバーカード総合サイト
- 厚生労働省の方へ、CSVオープンデータ化で効率化しましょう! 新型コロナウイルス国内事例における都道府県別の患者報告数表示アプリ

Zen言語で作るIchigoJamプログラム zen4ij、なんとZen言語開発者自ら早速改造!?

実機で動かすため、IchigoJamのはんだづけもしてくれました!無事LEDが光り、PCとのUSBシリアル接続もOK。久利寿とオンラインで話しつつコンパクト版にトライ、動いた! 最終的なサイズは、112byte。C言語より4byte、Arm thumbのマシン語で2命令少ない!


zen4ij に、プルリク送ってもらって、こちらの環境でも確認、マージ完了!
(プルリク=プルリクエスト=改善案置いておくからよかったら引っ張って使ってねという意味、マージ=改善案を採り込むこと、共にGit用語)

Zen言語の使い方や、ビルドのコツを直接聞くことができた。サイズ縮小のポイントとして不要セクションの削減が肝だった。下記が改良版 かわくだりゲーム in Zen言語(switch構文がいい感じ)

const ij = @import("std15.zen"); export fn main() callconv(.C) 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); switch (ij.inkey()) { 28 => x -= 1, 29 => x += 1, else => {}, } if (ij.scr(x, 5) != 0) { break; } score += 1; } return score; }

公平を期すため rust4ij も改良、ただ同じく不要セクションを消しても Rust 版では 124byteと、Zenの112byte、C(gcc -Os)の116byteに及びませんでした。 なぜ、サイズが違うのか?それは、それぞれのコンパイラが出力するマシン語に差があるからです。コンパクトなプログラムでいろいろ見比べると個性があっておもしろい!

果たして、どこまで小さくなるのか?
コンパイラを使わず、asm15マシン語でプログラムしてみたところ、96byteで実装できた! (追記、Thanks 100→98byte @fujitanozomu さん!98byte → 96byte @fujitanozomuさん)

PUSH {R4-R7,LR} 'cls R7=#CC R7=[R7]W GOSUB R7 R4=15 ' X R5=0 ' S 'putc R7=#C4 R0=[R7]W R12=R0 'locate R7=[R7+(#CE-#C4)/2]W @LOOP 'locate X,5 R0=R4 R1=5 GOSUB R7 'putc neko R0=#EC GOSUB R12 'rnd(32) R0=32 R6=#C0 R6=[R6]W GOSUB R6 'locate R0,23 R1=23 GOSUB R7 'ptuc *, enter R0=#2A GOSUB R12 R0=10 GOSUB R12 'wait 3 R0=3 R6=#D6 R6=[R6]W GOSUB R6 'inkey() R6=#CA R6=[R6]W GOSUB R6 R0-28 IF !0 GOTO 2 R4-=1 R0-29 IF !0 GOTO 2 R4+=1 'scr(X,5) R0=R4 R1=5 R6=#D0 R6=[R6]W GOSUB R6 R5+=1 R0-0 IF 0 GOTO @LOOP R0=R5-1 POP {R4-R7,PC}

IcihgoJam APIは、アドレスの8bit範囲内に16bit範囲内の関数ポインタを書き込んであり、ファームウェアのバージョンが変わっても使用できるMSXのBIOS的な仕組みを採っています。(例、CLSの呼び出し)

'cls R7=#CC R7=[R7]W GOSUB R7

削減のポイントは、使える命令が限定されるハイレジスタ(R8以降)で、唯一関数内で値を保存せず使用してよいレジスタ、R12を繰り返し使用するAPIのキャッシュとして使用したところです。 だいぶ最適化が進むコンパイラ技術ですが、まだ発展の余地があるってことですね!

ちょうどネコのキャラクターパターンが96byte目からなので、#700からマシン語を書き込んでも動きます!

POKE#700,240,181,204,39,63,136,184,71,15,36,0,37,196,39,56,136,132,70,127,137,32,70,5,33,184,71,236,32,224,71,32,32,192,38,54,136,176,71,23,33,184,71,42,32,224,71,10,32,224,71,3,32,214,38,54,136 POKE#738,176,71,202,38,54,136,176,71,28,40,0,209,1,60,29,40,0,209,1,52,32,70,5,33,208,38,54,136,176,71,1,53,0,40,219,208,104,30,240,189 ?USR(#700)

コンピューターに初めての触るこどもから、ガチなエンジニアまで、幅広く楽しめるIchigoJam。 そのヒミツを書いた「情報処理 2020年8月号 (日本語) 雑誌」 now on sale!

この度、情報処理学会の会誌『情報処理』に「プログラミング...

上松 恵理子さんの投稿 2020年7月20日月曜日


今日のおやつ、いちごティー

日本社会にテクノロジーが根付かない原因は信頼か? 独自開発の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言語開発者からのプルリクとマシン語の気持ち

2020/10/4開票となる鯖江市長選挙、牧野市長が今期での退任を表明し、新人3名が名乗りを上げている。 鯖江市での三つ巴の市長選は65年ぶり。オープンデータを作って、比較サイトをオープンソースで公開した。


鯖江市長候補者比較サイト」(src on GitHub)
それぞれの候補者を知る、基本的なオープンデータを公開情報から揃え、福井県でも活用中の「PUSHかんたんオープンデータ」で公開。 各候補者の人に、編集用のアドレスを送って、本人による訂正はすぐに反映されるはずです。

CSVオープンデータやJSONデータとして取得できるので、webアプリから取得し整形して表示するシンプルなプログラムを作成、オープンソースとしてGitHubで公開。 色やデザインはあえての素のまま、ぜひご自由に改造ください!

2022年から必修化される高校情報I教材レベルなので、そう難しくはありません。 HTML/CSS/JavaScriptを調べながら、いろいろいじってみてください。壊しても何度もリセットできて安心です。


鯖江市長選立候補予定者に聞きたいことアンケート(2020鯖江市長選挙 公開討論会)
JK課からのおばちゃん(OC)課「OCサミット実行委員と有志の会」主催による公開討論会も8/22(土)に予定され、事前質問を募集中。

つくろう、未来!

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