技術書典19で『DevContainer実践ガイド』を頒布します

技術書典とは、技術書の同人誌即売会イベントです。

techbookfest.org

2025年11月15日(土)から開催される技術書典19にて、新刊『DevContainer実践ガイド』を頒布します。 16日(日)にはオフラインイベントが開催され、そちらにも出展します。

本書のテーマ: DevContainerとは

DevContainerとは、Dockerコンテナに開発に必要なコンパイラやライブラリ、ツールをまとめ、コンテナ内で開発できるようにする仕組みです。 環境構築を定義ファイルで記述できたり、コンテナによって環境を隔離するのに役立ちます。

本書執筆のきっかけ

2020年に『VS Code DevContainer Guidebook』という同人誌を執筆しました。 この本ではDevContainerで「俺の考える開発環境」を構築することを目指して執筆しました。

74th.hateblo.jp

しかし私自身、開発でDevContainerを積極的に使い続けることはできませんでした。 他の人が簡単に構築できる開発環境としてDevContainerを整備することはありましたが、自分が使う環境としては制約が大きいと感じていました。

現在はLLMコーディングエージェントの登場により、私自身がDevContainerを積極的に使うようになりました。 LLMコーディングエージェントはファイル削除コマンドを誤実行することがあり、ホームディレクトリを削除してしまった事例も耳にします。 コンテナなどのサンドボックス環境に隔離することで、安全に開発を委ねられます。 そのコンテナ内でローカル同様のツールをLLMに使わせるには、DevContainerとして整備するのが便利だと考えるようになりました。

再度DevContainerを使うようになったことで、現在の状況を調査し、DevContainerの利用を広めたいと考え本書を執筆しました。

以前の本との違い

2020年時点では、DevContainerと言えばVS Codeの技術でした。 そのため、JetBrainsIDEユーザがいる環境では積極的に採用しにくいと考えていました。 2025年現在ではJetBrainsIDEでもDevContainerをサポートし、CLIでも利用できるようになり、勧めやすい技術になっています。

DevContainerのパッケージマネージャ的な位置づけである DevContainer Features が登場しました。 これを用いて環境構築すれば、より簡単にDevContainerを構築できます。

本書で重点を置いた点

DevContainerのコンテナ設計にはDockerfileを書く以外にも様々な選択肢があります。 それらを整理し、DevContainer設計を考える際の参考になるようにしました。 第2章「DevContainerの構築を考える」で私の考えをまとめています。

DevContainerの利用で躓きやすい点も解説しました。 たとえば、macOS/WindowsのDockerファイルシステムが遅い問題、シークレットの扱い方、非rootユーザの扱い方などです。 本書執筆にあたり調べ直してまとめることで、読者の方が躓きにくくなることを目指しています。

LLMコーディングエージェントでDevContainerを使う方法も解説しています。 DevContainer内でLLMエージェントを使うための認証情報の持ち込み方を細かく説明しています。

気になる方は技術書典19で

気になる方は11月16日(日)の技術書典19オフラインイベントで見本を展示していますので、ぜひお立ち寄りください。

技術書典オンラインマーケットでも頒布します。 技術書典19の開催中は物理本を購入でき、会期終了後にまとめて発送されます。 以下が販売ページです。

techbookfest.org

ぜひお手に取ってみてください!

目次

  • 1.DevContainerのアーキテクチャ
    • 1.1.DevContainerとは
    • 1.2.DevContainerのアーキテクチャ
    • 1.3.DevContainerの制約
    • 1.4.DevContainerの利用開始には一定の準備が必要
  • 2.DevContainerの構築を考える
    • 2.1.DevContainer構築に必要なものを考える
    • 2.2.コンテナの構成を考える
    • 2.3.DevContainerコンテナ構築のフェーズを理解する
    • 2.4.よってどうするべきか
  • 3.DevContainer設定と、各IDECLIでの使い方
    • 3.1.DevContainer構築の設定ファイル
    • 3.2.VS Code
    • 3.3.Cursor
    • 3.4.JetBrains IDE
    • 3.5.DevContainer CLI
    • 3.6.GitHub Codespaces
    • 3.7.Docker Desktop以外のコンテナランタイムアプリケーションは使えるか
  • 4.DevContainerの細かい使い方
    • 4.1.ファイルシステムへのアクセスが遅い問題への対処
    • 4.2.非rootユーザを利用する
    • 4.3.Windowsで改行コードの差分が出る問題
    • 4.4.ホストに影響を与えること
    • 4.5.シークレットの持ち込み方
    • 4.6.GitHubの認証情報の持ち込み方
    • 4.7.dotfilesの利用
    • 4.8.個人の設定を使う
    • 4.9.ここで書かなかったこと
  • 5.DevContainer Features
    • 5.1.DevContainer Featuresとは
    • 5.2.Featuresの使い方
    • 5.3.有用なFeatures
    • 5.4.Featuresを自作する
  • 6.DevContainer構築例
    • 6.1.Go
    • 6.2.Python
    • 6.3.Node.js
    • 6.4.DBをDocker Composeで立ち上げる
  • 7.ネットワーク隔離環境
    • 7.1.LLMコーディングエージェントとセキュリティリスクの議論
    • 7.2.DevContainerで必要なネットワーク通信
    • 7.3.Docker Composeでネットワークを作り、ホストと分離する
    • 7.4.IP制限をする
  • 8.ローカルでのLLMコーディングエージェントでのDevContainerの利用
    • 8.1.考慮すること
    • 8.2.Claude Code
    • 8.3.Codex CLI
    • 8.4.Gemini CLI
    • 8.5.Copilot CLI
    • 8.6.Container Useを使う
    • 8.7.コンテナ隔離環境を利用できなかったもの
  • 9.クラウドLLMコーディングエージェントの環境セットアップ方法
    • ※ DevContainerは利用できませんでしたが、ツールのインストールなど環境セットアップ方法を紹介します
    • 9.1.GitHub Copilot Coding Agent
    • 9.2.Codex
    • 9.3.Jules

天下一キーボードわいわい会 vol.9に参加したよ

自作キーボードわいわい会とは

自作キーボードの作品を、見たり見せたりするイベントです。 見るだけでも良く、参加の敷居が低いイベントです。 数多くの自慢の作品が並べられ、自作キーボード製作の熱が感じられる面白いイベントとなっています。

まだまだ新しいトライをされたキーボードが展示されており、デザインと機能が上手く統合されていて、このようなアイディアもあったのかと興味を引かれるものが多いです。

私自身、Vol.4から参加しており、6回目の参加となりました。

前回の記事

74th.hateblo.jp

私の展示

前回はSparrowS v3を展示しましたが、わりとSparrowS v3で満足していて、新規製作はしていませんでした。 入力に関するデバイスでも良いとのことで、スマホを物理USBキーボード、トラックパッド化するデバイスを展示しました。

他が素敵なデザインのハードウェアを展示されている中、iPhoneが置いて触れるという展示になりました。

わりとトラックパッドとしての快適性に共感してもらえる方も多く、展示して良かったと思っています。

商品化しないの?というようなことを何回も言っていただいて、商機を感じました。

気になったキーボード

ここからは、私が気になったキーボードを紹介します。 紹介した以外にも様々な素敵なキーボードがありました。 あくまで私の観点で惹かれたものを、勝手に紹介します。 

トラックポイントを搭載したキーボード。キーボードの中に埋もれていなくても、人差し指ですぐ届く位置にある構成は良く、実際のポインティングの操作もとても快適でした。細かい操作しやすいです。

マーブル模様で染められたキーキャップと、石がはめられたアーティシャンキーキャップが合わさって幻想的で素敵でした。

分割型でありながらも、角張った金属ケースが硬質な感じが素敵でした。こういう角張ったものの方が私は好きなようです。

指に沿った形で作られ、指の途中の関節でも押せる形のマウス。普通のマウスが、中ボタンクリックとか指を浮かせねばならないことに最適じゃない感じがしていたので、この発想は良さそうでした。Snugon MO1として既に商品化されているとのことでした。

トラックポイントが埋め込まれたキーボード。右手のNの横にあるというのが絶妙で届くので良いなと思いました。また、アームレスト一体形というのも、横に力のかかるポインターバイスに対して有効で良さそうでした。

狭いキーピッチにあわせて、小さくまとまる感じが素敵でした。

左手のロータリーエンコーダが、横向きに付いてるのが、親指の操作において自然で、慣れれば凄く快適に操作できそうに見えました。

以前の会でも拝見した、スルーホール部品が並ぶメカトロ感あふれるキーボードのバリエーションに圧倒されました。

手を立てて使うスティックレスコントローラ。快適に長時間操作できそうでした。

ネジも含めて硬派な感じが素敵でした。

Kailhの薄型メカニカルスイッチを使った薄い分割キーボード、本当に薄くて、 Apple製品のような高級感があって素敵でした。

右手のトラックパッド、左手にトラックボールを持つ構成。実際に操作してみたいと思わせられました。

M5StackCore2を搭載し、様々なコンパニオン機能の付いて楽しめるキーボードになっていました。タイプスピードや、ポモロードタイマー、ナイトライダーなど、様々な面を見せてくれました。

トラックパッド化の際に向きを変えられるように、 ポゴピンで接続できる構成になっている部分も感心しました。私がCore2を組み込んだ時も取り外しが大変で、こういう工夫が良いなと思いました。

スマホを間に挟んで使える構成、一つのデバイスとして完結している感じがして良いなと思いました。

手の写真から起こされるデバイス。もし自分の手で作ったら吸い付く感じになるのだろうなと体験してみたく思いました。

メインがトラックボールバイスで、そこに複数のデバイスをジョイントして拡張できる製作。トラックボールバイスの高さに合わせて他のデバイスを作っているとのことでした。高さを合わせるために薄くする工夫など、興味深い話を聴かせてもらいました。

こちらも薄型スイッチを使ったミニマルなキーボード。薄さに目を引かれました。

板金の曲げ加工で作られた金属ケース。すごくしっかりとしてるように見えて、良さそうでした。

内側にトラックボールとロータリーエンコーダを持つミニマルなものでした。ロータリーエンコーダが操作しやすそうで、良さそうでした。

キーキャップにロープロファイルの金属キーキャップが使われて、金属で一体となったキーボード。この金属キーキャップの質感が凄く良くて、忘れられなくなっています。

ウォルナット材をケースに取り込み、高級オーディオのような静かな佇まいで素敵でした。

アクセントのようなロータリーエンコーダでしたが、この形が操作しやすそうで、良さそうでした。

17mmピッチ含めて、ミニマル感の中に、端の仕上げとか、装飾が飽きさせず、派手すぎず、素敵でした。

ロータス配列のダブルトラックボールの分割キーボード。間にノートを置きたいのでケーブルの位置とか、人差し指トラックボールの良さとか、分かると思いながら話を聴いてました。

球体に指を入れるトラックボール。新しい体験でした。

以上、私が気になった展示でした。

抽選会

天キーでは、イベントの最後に超豪華なスポンサー提供による抽選会が開催されています。 前回はキースイッチがあたったのですが、今回はサリチル酸さんがmoimateで開発されているFOCUS60に当選しました!!

帰宅後早速キースイッチ(Kailh x Lofree Shadow)を付けて使ってみています。

サリチル酸さんのキーボードはAjisai74を手にして以来です。 金属ケースに収まっていて、打鍵感も良く、完成度が高く、自分ならここまでたどり着けないと思わせるものでした。

まとめ

冒頭の通り、実用性とデザインを兼ね備えたキーボードを一気に触れられる非常に楽しいイベントでした! 開催ありがとうございました! これから年3回の開催になるということで、さらに世界が広がるように思い、次回の開催も楽しみにしています。

この記事はFOCUS60を使って執筆しました。

CH32V003開発ガイドブックのArduino抜粋版を無料公開

ebook.png

tl;dr

  • 技術書典18で頒布した『CH32V003開発ガイドブック』は、Arduinoの開発についても記述してあるよ
  • UIAPduinoなどCH32V003の開発ボードが出ており、これらを使って気軽に開発をスタートするために、Arduinoについても記事にしていたよ
  • より多くの方にCH32V003の開発をスタートして欲しく、Arduino抜粋版は無料で公開したよ
  • 公開にあたって、UIAPduinoへの記述を追加したよ

CH32V003とは

CH32V003は、激安なRISC-V 32bitマイコンです。

秋月で1個40円で取り扱われていたり、Aliexpressの公式ショップで50個単位で購入すると1個20円で購入できます。 非常に安いため、ちょっとした制御にも組み込みやすく、筆者の電子工作に欠かせないICとなっております。

※ 詳しくは、本ページで紹介するガイドブックサイトに書いてあります

技術書典18で頒布した『CH32V003開発ガイドブック』

このマイコンの機能を使い倒すために機能を知りたく、技術同人誌『CH32V003開発ガイドブック』を執筆し、技術書典18にて頒布しました。

詳しくは、以下の記事にあります。

Arduinoでも使えたり、Arduino開発が標準の開発ボードUIAPduinoがある

CH32V003は、マイコンベンダーであるWCHが公式のArduino開発環境Arduino Core for CH32を公開しています。

Arduinoマイコン開発の敷居を下げて、開発しやすくしてくれるフレームワーク、及び開発環境です。 これを公式がサポートしているのはCH32V003開発が手軽になりありがたいですね。

UIAPduinoというUIAPさんが出している教育向け開発ボードでもArduino Core for CH32を使っています。 そのこともあり、CH32V003のArduinoの情報が増えることが価値が高いと考えました。

特に、Arduinoをサポートしていると言っても、各機能が実際に使えるのか不安があったため、今回書籍の記事中では一通り機能を動かして検証しました。

実際に検証してみると、予想よりもだいぶ使えるようになっていました。 I2C、SPI、ADC、PWMなど、ちゃんと動作しました。 NeoPixel、OLEDなども使えることが分かりました。

よりCH32V003開発をスタートしやすいように、Arduinoの記事を公開

ただ、私自身は、ch32funでの開発になれてしまい、CH32V003でArduinoを使用しません。 私にとっては、公式SDK、ch32funでの開発方法の開発が本書のメインであり、Arduinoは本書の対外的な価値を上げるための検証の一つでした。

CH32V003開発をスタートするために、Arduinoの情報くらいは公開されていた方が、CH32V003をより使ってch32fun等に進んでもらうための道筋として助かるのではないかと思いました。 UIAPduinoで使いやすいようにArduinoも検証した面も大きく、教育目的で使いやすいと良いと思っていました。

そのため、Arduinoの内容については抜粋版として公開することにしました。

記事自体はGitHubリポジトリで公開しています。

公開にあたり、UIAPduinoのセットアップに関する注釈を追加しています。

なお、公開日は2025-06-22であり、本記事はその告知をブログの形で遅ればせながらしているものです。

ぜひCH32V003開発のスタートにArduinoも候補に

公開したArduino抜粋版には、CH32V003開発の標準的な開発の章も含まれています。 CH32V003の基本的な知識はこちらの章にまとめています。 こちらを読んでいただいて、いきなりチップ単体で動作できるように回路を組んでみるのも良いでしょう。

ひとまずCH32V003を動かしたい方には、CH32V003の開発ボードはいくつか出ています。

UIAPduino Pro Micro CH32V003 V1.4

WA00007 [Weact]CH32V003F4U6マイコンボード

筆者が実際に使っている自作のCH32V003 ProMicro型開発ボードを、Boothで販売しています。

まずはArduino抜粋版を見て、元の本も

Arduino抜粋版を見て、さらにCH32V003の深みに入りたい方は、ぜひ元の本も手に取ってみてください。 Arduino以上にCH32V003の全ての機能が使える公式SDKレジスタ操作、ch32funについて解説しています。

スイッチサイエンス(紙の本のみ)と、Booth、技術書典オンラインマーケット(PDFのみ)にて販売しています。 こちらを入手してみてください。

CH32V003開発ガイドブック