ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기東洋館出版社 イベント・研究会タイムテーブル(社内資産・非OSS)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
株式会社東洋館出版社の社内資産です。 GitHub Pages で公開するためにリポジトリを公開していますが、オープンソースではありません。無断での複製・改変・転用はお断りします(LICENSE)。外部からの Issue・Pull Request は受け付けていません。 教育イベント・研究会向けのタイムテーブル PWA です。参加者はスマートフォンから、プログラム・配布資料・関連書籍を閲覧できます。 🔗 https://events.toyokan.co.jp/ (参加者には ?id= 付きのURLを配布します)README 전문 보기 ↗
株式会社東洋館出版社の社内資産です。 GitHub Pages で公開するためにリポジトリを公開していますが、オープンソースではありません。無断での複製・改変・転用はお断りします(LICENSE)。外部からの Issue・Pull Request は受け付けていません。
教育イベント・研究会向けのタイムテーブル PWA です。参加者はスマートフォンから、プログラム・配布資料・関連書籍を閲覧できます。
🔗 https://events.toyokan.co.jp/ (参加者には ?id=<イベントID> 付きのURLを配布します)
?id=<イベントID> で複数イベントを切り替え.webmanifest 推奨)、会場マップに対応eventInfo.mascot: false で無効化可)| URL | 表示 |
|---|---|
/ | LINEまたはQRコードからのアクセス案内と、東洋館出版社公式LINEの友だち追加ボタン |
/?id=2026-zensanken-37 | 指定イベントのプログラム・資料・書籍 |
作成済みイベントの本番URLは、開発者向けのURL台帳(docs/ 配下。python scripts/generate_event_url_index.py で生成)にまとめています。README からは直接リンクしません。
LINE公式アカウントのキーワード応答に貼るリンクは、台帳の「LINE配信用URL」列(?id=<id>&openExternalBrowser=1)を使ってください。 LINEが送ったリンクはそのままだとLINE内ブラウザで開き、そこではAndroidの「ホーム画面に追加」プロンプトが発火せず、iOSの共有シートにも「ホーム画面に追加」が出ません。openExternalBrowser=1 を付けると端末のChrome / Safariで直接開くため、追加の導線がそのまま機能します。付け忘れてLINE内ブラウザで開かれた場合に備えて、アプリ側にも開き直しの案内(バナー→モーダル)を用意しています。
着手前に、似た名称(全国算数/算数サマーフェス)や年度違いの取り違えを避けるため、python scripts/find_event.py "<キーワード>" で id・ファイルパスを確定します(--current / --upcoming で今日基準の現行イベントも確認可)。
events/<id>.json を作成する。<id> は半角英数・ハイフン・アンダースコアのみ。ルートの id フィールドをファイル名と同じ値にする(既存を複製した場合は書き換え忘れに注意。ファイル名との不一致は scripts/validate_events.py がエラー検出)。events.json の events[] に開発・検証用の索引を1件追加する。events/<id>.webmanifest)とアイコン、会場マップを追加する。マニフェストは data URI 動的生成にフォールバックできるが、iOS では scope の扱いが不安定になり外部リンクから PWA へ戻りにくくなるため、実体ファイルの用意を推奨(eventInfo.manifestPath で参照)。/?id=<id> をローカルで確認し、チラシ等の QR コードに設定する。終了後もページは削除せず公開したままにします(旧チラシの QR を生かすため)。終了かどうかは開催日から自動判定します。**最終開催日の 1 週間後(+7日)を過ぎたイベントは「終了済み」**とみなし、個別 JSON を原則更新・複製しません(似た名称・同じ会の別回との取り違え防止)。手動フラグは不要ですが、中止・延期など特殊ケースのみ個別 JSON ルート直下に "_status": "ended" / "active" を置くと日付判定より優先されます(scripts/find_event.py の表示と、UI ではマスコットの場面判定が参照します)。
JSON に不慣れな担当者向けに、Excel 入力ひな形 と 記入・変換手順 を用意しています。 生成後は、イベント索引・開発者向けURL台帳・個別JSON・日付ID・会場ID・マニフェスト・アイコンの整合性を検証します。
python scripts/import_event_workbook.py "入力済みイベント.xlsx"
python scripts/import_event_workbook.py "入力済みイベント.xlsx" --write
python scripts/validate_events.py --event <id>
Excel取込ではURL台帳も自動更新されます。events.json を手動編集した場合は、次のコマンドで台帳を更新してください。
python scripts/generate_event_url_index.py
events/<id>.json に置き、サイトの利用者もそのまま取得できます。公開承認済みの情報(問い合わせ先を含む)だけを記載し、未発表のイベントを先行して入れません。localStorage の t-pod:*)だけです。アクセス解析は入れていません。cdn.tailwindcss.com)、Google Fonts(Zen Kaku Gothic New・DotGothic16)、書影画像(東洋館出版社サイト・Amazon の画像配信)。noindex を指定し、ルートURLからイベント一覧を公開しません。ただしリポジトリは公開なので、URL を知らなくても JSON は GitHub 上で閲覧できます。openExternalBrowser=1 で回避)。file:// で直接開くと動きません(下記「開発」を参照)。ビルド工程はありません。main の内容を GitHub Pages がそのまま配信します。シェル(HTML/JS/アセット)を変えたら sw.js の CACHE_VERSION を上げてください。
file:// では fetch と Service Worker が動かないため、静的サーバを使用します。
python3 -m http.server 8080
http://localhost:8080/http://localhost:8080/?id=2026-zensanken-37http://localhost:8080/?id=does-not-existJSON の構文確認例:
python3 -m json.tool events.json
python3 -m json.tool events/2026-zensanken-37.json
プルリクエストと main への push では、GitHub Actions が次の 2 つを実行します(.github/workflows/validate-events.yml)。手元でも同じコマンドで確認できます。
python -m pip install -r requirements-tools.txt
python scripts/validate_events.py # イベントJSON・索引・アセットの整合性
python -m unittest discover -s tests -v # 回帰テスト
tests/ が見ているのは、イベント関連スクリプトの挙動(test_event_tools.py)、ふせんネコの造形と生成物のずれ(test_fuseneko.py)、そして UI シェルのソースそのもの(test_shell_source.py)です。最後のひとつは index.html に NUL バイトが混ざっていないことを確かめます——HTML パーサーは NUL を U+FFFD へ黙って置き換えてしまい、grep や diff もこのファイルを「バイナリ」として扱うようになるためです。
造形の定義は assets/fuseneko/fuseneko-grid.js の 1 箇所だけです。配布用の SVG
(assets/fuseneko/fuseneko-*.svg)はそこから生成するため、手では編集しません。
python3 scripts/build_fuseneko.py # SVG を生成する
python3 scripts/build_fuseneko.py --check # 生成物が定義とずれていないか調べる
python3 scripts/build_fuseneko.py --preview # ターミナルにドット絵を描く
python3 scripts/build_fuseneko.py --preview FN_HAPPY # 表情を重ねて描く
サイズ・表情・色・背景を並べた確認ページ: http://localhost:8080/dev/fuseneko.html
隠し要素(いずれもイベントページのみ):
| 操作 | 起こること |
|---|---|
| 右下のネコを素早く 3 回つつく | 「ぼく、ふせんネコ!」と名乗る |
| 右下のネコを長押し(0.6 秒以上) | 「ごろごろ…」となでられて、ハートが出る |
| 深夜(0〜5 時)・早朝(5〜7 時)に開く | その時間だけの一言が増える |
名乗った文言は 8 秒ほどでいつもの一言に戻ります。名前はボタンの読み上げ/ホバー表示にも 入っているので、支援技術やパソコンからも分かります。
ページに埋め込むときは fuseneko-grid.js → fuseneko.js の順に読み込み、
createFuseneko({ size, color, expression, ariaLabel }) を呼びます。
色は 1 色(テーマ色)だけ渡せば、本体・折り返し・輪郭・目鼻口の濃淡が自動で決まります。
詳細仕様は README から docs/requirements.md へ分離しています。なお、リポジトリが public の場合は同ファイルも公開されます。
GitHub の Settings → Pages で Source を Deploy from a branch、Branch を main / / (root) に設定しています。独自ドメイン events.toyokan.co.jp は CNAME ファイルと DNS で割り当てています(CNAME を消すと公開URLが変わるので注意)。パスは相対指定のため、サブパス配信(/t-pod/)でも動きます。Pages は Jekyll でビルドされるので、開発用の文書・スクリプト(progress.md・docs/・scripts/ など)は _config.yml の exclude で公開サイトから外しています。開発用のファイルを足したら exclude にも追記してください(テストが検出します)。
Proprietary(All rights reserved)。株式会社東洋館出版社に帰属し、オープンソースライセンスは付与していません。詳細は LICENSE を参照してください。
リポジトリを公開していても、ここに置いたファイルと Git 履歴はすべて外部から閲覧できます。公開してよい情報だけをコミットしてください(判断基準は 公開範囲の検討メモ)。