3.8K Views
February 14, 25
スライド概要
ポケコントレーナー
Twitter for PCG850: Sunrise to Sunset 菅原 政行(@plageoj)
菅原 政行 (@plageoj) • 年齢詐称を疑われる26歳 • ポケコン3台持ち • ベトナム出向から一時帰国中 • 趣味: 短歌、文通
デモ (2分)
想像して下さい • 半角文字しか扱えないコンピュータです • 144×48ドットのモノクロ液晶です • 踏み台サーバーなしで直接通信します 技術的制約を愛と狂気で乗り越えるお話です
あしかけ8年、出展駆動開発 2018/09/30 レッドハッカソンひろしま2018 懇親会にて着想 2019/02/02 NT広島2019 2018/11ごろ MA2018応募。落選 2022/10/30 フレッシュITあわ~ど2022 入選 2019/11/30 IoTつくるよ! 2 2019/12/07 ヒーローズリーグ2019 MAヒーロー・オレトクヒーロー・ 学生ヒーロー受賞 2025/02/13 Developers summit 2025
ハードウェア構成 ESP32 DevKitC PC-G850VS CPU LX6×2 @ 240MHz Z80A互換 @ 8MHz RAM 320KiB SRAM ROM 1.25MiB Flash 電源 USB 5V 共通 32KiB SRAM 単4電池4本 5V
システム構成 ポケコン (BASIC) カートリッジ (C++) X API クライアント HTTPリクエ ストビルダ URL エンコーダ NTP サービス メ イ ン プ ロ グ ラ ム gPrint 日本語出力 ルーチン kInput 日本語入力 ルーチン Software Serial UI gPrint 日本語出力 ルーチン 制御・調停
今回お話しする範囲 ポケコン (BASIC) カートリッジ (C++) X API クライアント HTTPリクエ ストビルダ URL エンコーダ NTP サービス メ イ ン プ ロ グ ラ ム gPrint 日本語出力 ルーチン kInput 日本語入力 ルーチン Software Serial UI gPrint 日本語出力 ルーチン 制御・調停
X API クライアント
HTTPを自分で組み立てる
XのAPIレスポンスは超巨大 (略) 受信中に メモリがあふれて 突然の再起動
JSONを諦めて捨てながらパースする
gPrint 日本語出力 ルーチン
gPrint の仕組み • 日本語の文章を漢字・ひらがな・ANKに分解する。 1. 漢字はカートリッジのフォントデータでビットマップに変換し グラフィックとして転送(MODE=GRAPHICS) 2. ひらがなは同等の半角カタカナに変換して転送(MODE=HIRAGANA) 3. ANKは半角文字に変換して転送(MODE=TEXT) MODE G 内容 H G 日本語 ノ H G 文章 ヲ H G T H G 漢字・ ヒラガナ ・ ANK ニ H G T 分解 スル 。 [END] 詳細はこのあとのデモ展示で実際の通信内容をご覧いただけます
漢字ビットマップを得るまで UTF-16 入力 UTF-16 to UTF-8 変換 UTF-8 to SJIS 変換 ビットマップ 回転処理 フォント ルックアップ ポケコン用 表現に変換 転送・出力 個人的にはこの機能をよく「ソフトウェア漢字ROM」と呼んでいます
kInput 日本語入力 ルーチン
kInput の仕組み SJIS 半角カナ入力 UTF-8 全角かなに変換 Google CGI API for Japanese Input 呼び出し 結果のパース 変換候補の 自動選択 変換結果出力 8bit PC で連文節変換が(見た目)できるすごさを体験してください
誰にも使われないかもしれない 誰も幸せにしないかもしれない でもそれでいい、それが個人開発
個人開発の魅力は 好きなだけ時間を使って、 技術的制約と戦えること
制約が厳しいからこそ 研ぎ澄まされた表現ができる
ポケコンを触るとき 自分が本当に作りたいものを 作っている
きみもポケコン、ゲットだぜ! 菅原政行 (@plageoj)