Chiselでサッとデジタル回路設計を始める小冊子(MFT2016配布物)の小改訂版を100円で販売します

2016年8月25日木曜日

Maker Faire Tokyo 2016(MFT2016)へ会社の有志チームで参加したことは以前書きました(参照: Making of "至って普通のWebカメラ"展示 - MFT2016出展記)。
私が出展したのはシンプルなカメラモジュール(定番のOV7670)→モニタ出力をおこなうWebカメラ(自称)で、物自体はありふれています。出力側でのTMDS変換回路とTMDS信号のシリアライズ出力部分をScala+Chiselで書いたというのが特徴でした。
今回は、出展と共に無料配布していた小冊子(図1)の話です。
展示に先立って社内の出展メンバーチャットで「MFTでは出展物の説明などの資料を配布して良い」ということが話題になっていました。せっかくなので私もWebカメラ(自称)の重要要素であるScala+Chiselに関する簡単な説明を書いて配布したいと思ったのがきっかけでした。

MFT 2016で配布した冊子の内容

12ページと短いため、コンパクトな3つのパートで構成しました。

1: 夏コミ頒布の「The Web Explorer 2」に寄稿した原稿の冒頭部分収録

「The Web Explorer 2 - 第8章 Scalaでイージーにハードを設計する」の冒頭4ページをそのまま(章番号の違いと原稿変換の都合上すこし手を入れて)収録しました。この本はつい最近booth.pmで電子版を販売し始めたようなので、よければそちらも確認ください(https://techbooster.booth.pm/items/299592)。目次をみてみると、TensorFlowやFirebaseなど私以外の章でも面白いぐらいWeb外の技術が混ざっていますね。

2: さらっとChiselを試してみようというメインコンテンツ

一定の前提知識を要求するものの、実際にこれにもとづいて最後までやってくれた方もいたので、なんとかなったようです。
そしてミス指摘までもらいました。ありがたいことです。

3: Chisel 3を軽く使ってみようというおまけ

Chisel 3は、基盤のFIRRTLも含めて絶賛開発中の次世代Chiselです。まだかなり不安定ですが、Chiselでの 非同期リセットについての現状整理、RocketChip事情を添えてでも書いたように新機能はおおむねChisel 3をターゲットに開発されるようになってきています。
このため、そろそろChisel 2向けの自プロジェクトがChisel 3でまともに動くか否かを確認し始めるのが無難です。しかしChisel 3はまだバイナリ配布がおこなわれておらず、ビルド手順が長く時間がかかるため、手元で環境を作るのが苦痛です。そんな中でChisel 3スナップショット版入りDockerイメージを作成して公開(3-snapshotタグ)したので、これを使って簡単に試してみようという話を書きました。

SBTによる依存パッケージダウンロード遅さの謎

Chisel 3のスナップショットDockerイメージのビルドにはDocker Hub上でも30分程度かかります。この理由のうち4割程度は「SBTからパッケージを拾ってくるのがやたらと遅い」というものです。あまりちゃんと追っていませんが、Scala+SBT界隈では有名な問題のようです。http://stackoverflow.com/a/31712249の「So my solution is that you have to wait a bit.(まあしばらく待っていればいいよ。)」という回答が心に来ます。相手サーバへの接続時にIPv6→タイムアウトでv4のフォールバックなどやってるのかな、などいくつか考えましたが、途中で考えるのをやめました。

冊子構成上のこだわり要素

Chiselの最初の一歩ということで、環境をサクッと用意して試してみるという点にフォーカスしました。ここでの選択肢として、今回はDockerを選びました。Windows 10上でのDocker環境は、Docker for Windows(Toolboxのことは忘れよう)によってずいぶん扱いやすくなっています(図2)。Ubuntu on Windows環境でのJava利用がまだまだ怪しいため、当分はDocker利用が最良だと思います。
図2 Docker for Windows+PowerShellからChiselのコンパイル・テスト実行をしたところ
Docker利用前提での執筆にあたっては、先日Dockerイメージを作ってDocker Hubで公開しておいたのが役立ちました。Chisel 3のスナップショット入りDockerイメージは、作成と動作確認が間に合うか微妙でしたが間に合ったので内容に盛り込みました。
たまたま先日Windows環境でのDocker(Docker for Windows)+IntelliJ IDEAでの動作確認もおこなっていたので、Windows環境でうまくChiselを扱う方法も書きました*1
さらに、執筆していた当日にChiselのGitHub issuesで起こっていた大きめの動きも書いてみました。直前まで内容をいじることのできるコピー本(コンビニのコピー機でせっせとプリントしてホッチキス製本するもの)ならではの鮮度、という感じでした。あまり読む方に伝わらない気もしましたが、少なくとも書いていて楽しかったです。
[*1] ちなみに本をPDFへコンパイルする作業もWindows上のDocker環境でおこないました

MFT 2016版を無料配布、最新版をgumroadで販売しています

MFT 2016で配布した版のPDFを無料で公開します(PDFダウンロード)。
そして、前述の指摘をもらって直しを入れた最新版をgumroadで販売しています。
100円なので、よければ投げ銭がてら買ってください!gumroadへのアカウント登録は不要です。
100円で押せる「やる気スイッチ」です、なにとぞ。

作った感想: コピー本も良いですね

雑誌寄稿時にはせいぜい発売10日前の時点でギリギリすべりこみ微調整できるぐらいです*2。TechBoosterの夏コミ/冬コミ同人誌への寄稿であればだいたい頒布の15日前時点がデッドラインです。ひとっ風呂浴びている時に思いついた変更を速やかに反映できるなども、とても便利な感じでした。
表紙と裏表紙はわりと最後までいじってました。
[*2] たまに校了から3日で発売というすごい雑誌もありますが、私は寄稿したことがありません

謝辞

Chiselを開発し、メンテナンスしているUCBのチームがなければ話が始まりませんでしたし、その周辺コミュニティがGitHubやMLへ残してきた痕跡がなければ中身の理解も難しいものでした。
出展にあたって声をかけてくれた同僚、設営を手伝ってくれた同僚、製本を手伝ってくれた同僚(同一人物の場合があります)には感謝ばかりです。MFT 2016で冊子を取りにきて速やかに試した結果のレポートをくれて記述ミスの指摘までしてくれた@cinimlにも感謝しきりです。
「本(冊子)を作ろう!」と思い立ち、すぐに試行錯誤しながら形にして即日完成まで持っていけたのはRe:VIEWのおかげですし、編集環境としてはAtom+language-reviewがもはや手放せません。これらのソフトウェア作者各位、そして「The Web Explorer 2」への寄稿記事の一部を収録することを快諾してくれたTechBoosterの@mhidakaにも感謝します。

0 件のコメント:

コメントを投稿