2026-01-20
今年の共通テストでも昨年同様「共通テスト用プログラム表記」が使われました。配列の添字は、指定がなければ0から使うことになっていますが、2025年同様、1から使うと指定されていました。


今年のプログラム問題は、文化祭での待ち時間計算でした。昨年の6人分の到着時間データを元に待ち時間を計算するプログラムを作ります。(参考、共通テスト2026 情報Ⅰ問題|共通テスト解答速報2026|予備校の東進

日本語と変わった区切り線で構成される構文、ローマ字の変数、漢字の関数が特徴的です。

まず、最大値、要素数を関数として実装します。こちら2つを先頭に加えて Wirth Playground で動かしてみましょう。

function 最大値(n, m) if n < m return m endif return n end function 要素数(array) return array.length end

中高生向けプログラミング言語、Wirth(ヴィルト)で実装するとこうなります。
※ Wirth では、配列の添字は0から始まる
※ Wirth では、代入は意味的におかしい「=(イコール)」ではんなく「<-(アサイ)」を使う。

taiken <- 3 Touchaku <- [0, 3, 4, 10, 11, 12] kyakusu <- 要素数(Touchaku) Kaishi <- [0, 0, 0, 0, 0, 0] Shuryou <- [0, 0, 0, 0, 0, 0] Shuryou[0] <- taiken for i <- 1 to kyakusu - 1 Kaishi[i] <- 最大値(Shuryou[i - 1], Touchaku[i]) Shuryou[i] <- Kaishi[i] + taiken print i + 1, "人目の待ち時間: ", Kaishi[i] - Touchaku[i], "分間" next

ローマ字の変数名、せっかくなので漢字化して読みやすくしたプログラムがこちら。

体験 <- 3 到着 <- [0, 3, 4, 10, 11, 12] 客数 <- 要素数(到着) 開始 <- [0, 0, 0, 0, 0, 0] 終了 <- [0, 0, 0, 0, 0, 0] 終了[0] <- 体験 for i <- 1 to 客数 - 1 開始[i] <- 最大値(終了[i - 1], 到着[i]) 終了[i] <- 開始[i] + 体験 print i + 1, "人目の待ち時間: ", 開始[i] - 到着[i], "分間" next

書くのはちょっと面倒ですが、読みやすいですね!


「Wirth Playground」

実際、日本語変数名を業務システムで使って実装している例もありますが、現場で圧倒的に多いのが変数、関数は英語です。小学校から英語やりますしね。

続く問題で、体験時間を変化させて、待ち時間がどうなるかを確認するプログラム。

Touchaku <- [0, 3, 4, 10, 11, 12] kyakusu <- 要素数(Touchaku) for taiken <- 1 to 15 Kaishi <- [0, 0, 0, 0, 0, 0] Shuryou <- [0, 0, 0, 0, 0, 0] Shuryou[0] <- taiken for i <- 1 to kyakusu - 1 Kaishi[i] <- 最大値(Shuryou[i - 1], Touchaku[i]) Shuryou[i] <- Kaishi[i] + taiken next saichou <- 0 for i <- 0 to kyakusu - 1 saichou <- 最大値(saichou, Kaishi[i] - Touchaku[i]) next if saichou < 10 print "体験時間: ", taiken, "分間: ", "最長待ち時間", saichou, "分間" endif next

saichou という変数が最長待ち時間を表す変数名です。

Touchaku <- [0, 3, 4, 10, 11, 12] kyakusu <- 要素数(Touchaku) saicho <- 0 taiken <- 1 count <- 0 while taiken < 15 and saicho < 10 Kaishi <- [0, 0, 0, 0, 0, 0] Shuryou <- [0, 0, 0, 0, 0, 0] count <- count + 1 Shuryou[0] <- taiken for i <- 1 to kyakusu - 1 Kaishi[i] <- 最大値(Shuryou[i - 1], Touchaku[i]) Shuryou[i] <- Kaishi[i] + taiken next saichou <- 0 for i <- 0 to kyakusu - 1 saicho <- 最大値(saicho, Kaishi[i] - Touchaku[i]) next if saicho < 10 print "体験時間: ", taiken, "分間: ", "最長待ち時間", saicho, "分間" endif taiken <- taiken + 1 next print "初期化処理の実行回数: ", count

最後の問題は無駄な計算を省き、ループ回数が何回になったかという問題。
わかりやすく、count 変数を追加してみました。

プログラムは実際動かして確かめるのが一番!

links
- Pascalリスペクトの教育用構造化プログラミング言語「Wirth」
- 共通テスト手順記述標準言語 (DNCL)と共通テスト用プログラム表記をMarkdown化しIssuesを作成

2026-01-19

IchigoJam財団の修了式でも活躍したPixelJamで使うスタンプとして、IchigoJam用マルチメディアボード、PanCakeのオープンデータになっているスプライトを使えるようにしました。


「なわとびさっちゃん on PixelJam」

メガネジャンプのキャラクターをさっちゃんに!


「IchigoJam/PanCake-res」

画像を download.js で、スプライト画像を全ダウンロードし、各画像を png2txt_all.js を使って、PixelJamで使える、Base16による16進法表記に変換します。


「IchigoJam/PanCake-res」

8x8x4bppのカラードット絵、かわいいですね!

links
- 公益財団法人IchigoJam財団第一期修了証授与式、ライブコーディング「メガネジャンプ」 on PixelJam
- コンパクトなミニゲームライブラリ、PixelJam.js

2026-01-18

公益財団法人IchigoJam財団の第一期修了式を行いました。プログラミングをしたいと応募してくれ、選定した第一期15名。全員からチャレンジのレポートを受領し、無事修了です!


IchigoJam財団特製ピンバッジ、修了した奨学生にだけ提供されます。


田中評議員とペアでつくる、ゲームづくり&サーバーへデプロイ!
自分のサーバーが持てるとできることがぐっと広がりますね。

こちら移植元の「なわとびさっちゃん for IchigoJam

10 Y=22:V=99:X=15:U=5:S=0 20 IF V!=99 Y=Y+V:V=V+1 30 IF Y>22 Y=22:V=99:S=S+1 40 X=X+U 50 IF X>15 U=U-1 60 IF X<15 U=U+1 70 IF INKEY()=32 V=-3 80 CLS 90 LC 15,Y:?"@" 100 LC X,22:?"-" 110 LC 0,0:?"SCORE:";S 120 IF Y=22 AND X=15 END 130 WAIT 5 : GOTO 20

これをJavaScriptで書く、スマホでもPCでも遊べるゲーム「メガネジャンプ」に改造しました。 <script type="module"> import { pj } from "https://js.sabae.cc/pj.js"; const MEGANE = ` 03303300 30030030 30030030 30030030 03303300 `; for (;;) { let y = 22; let v = 99; let x = 64; let u = 5; let s = 0; let w = 3; for (let i = 0;; i++) { if (v != 99) { y += v; v++; } if (y > 22) { y = 22; v = 99; s++; } pj.cls(1); x += u; if (x > 64) u -= .25; if (x < 64) u += .25; if (pj.btn()) { v = -3; } pj.print("SCORE: " + s, 10, 10, 0); pj.spr(MEGANE, 60, y * 3 + 32); pj.print("-", x, 100, 0); if (y == 22 && (x < 65 && x > 58)) { break; } await pj.wait(w); w -= .002; } pj.print("GAMEOVER", 50, 60); await pj.wait(60); while (true) { if (pj.btn()) break; await pj.wait(1); } await pj.wait(10); } </script> クリックやスペースキーでジャンプ!
こちらがPixelJam.jsで使える関数リファレンス(辞書)です。

- cls(color = 0) // 画面クリア - pset(x, y, color = 7) // 点描画 - rectfill(x0, y0, w, h, color = 7) // 矩形描画 - line(x0, y0, x1, y1, color = 7) // 線描画 - colorrcfill(cx, cy, r, color = 7) // 円描画 - print(s, x, y, color = 7) // 文字描画 - stamp(hex, x, y, w = 8, transparentColor = 0) // スタンプ描画 0-Fで色指定 - btn(n = 4) // ボタンが押下チェック 0..6 = ←→↑↓ space Z X - await wait(nframe = 1) // nframe分(1/60秒)だけ待つ ※ await を付けて呼び出す!
ES-Jamで改造して遊べます!(だんだん早くなるバージョン)


「megane.sabae.club」

デプロイしたメガネゲーム!(速さ固定バージョン)


「IchigoJam by @taisukefukuno858 | Suno」

こちらBGMとしてその場で作曲したIchigoJamソング、全26曲!イベントなどでご活用ください。
SUNO用プロンプト for Simpleは、これだけ!

こどもパソコンイチゴジャム、プログラミングとロボットづくりのテーマ曲、ハウスミュージック

楽曲ジャンルを色々変えて生成ボタンを押すだけ!


続いてワークショップ、まった理事によるカムロボのモーターとセンサーを使ったロボットプログラミング入門!


IchigoJam BASICでロボを自由自在に制御して、自分のつくりたいものの夢、膨らまそう!


大橋理事によるラジオキットのはんだづけ入門!


初めてのはんだづけ、電子工作ができるようになると作れる幅がぐっと広がりますよ!


原理事より、今年3/21敦賀で開催、プログラマーフェアご当地こどもロボコン全国大会もぜひどうぞ!


田中評議員より激励のメッセージ、いっぱい創ろう!
来年度のIchigoJam財団奨学生事業も楽しみです!

links
- IchigoJam財団
- 福井・鯖江で「こどもプログラミング奨学金」修了式 1期生に小中学生15人 - 福井経済新聞

クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS