ブラウザだけでFPGAを始める方法——WebFPGAが下ろすデジタル回路開発の参入障壁
はじめに——「FPGAに興味はあるのに、環境構築で諦めた人」へ
「FPGAを触ってみたい」と思ったことがあるエンジニアは少なくないはずです。しかし、いざ始めようとして検索すると、出てくるのは数十ギガバイト級のベンダーIDEのダウンロードページと、ライセンス登録フォーム。Verilogという聞き慣れない言語、論理合成・配置配線・ビットストリームという謎の用語の数々。多くの人が最初のLED点滅(Lチカ)にたどり着く前に挫折してきました。
その壁を「ブラウザを開くだけ」にまで下げるプロジェクトがあります。WebFPGAです。2026年9月2日にはHacker Newsで取り上げられ、改めて注目を集めました。ブラウザ上のIDEでハードウェア記述言語を書き、合成し、USBケーブルでボードに書き込むまでを一気通貫で行える、というものです。
この記事では、WebFPGAを入口に、FPGAとは何か、従来の開発環境の壁がどこにあったのか、そして今日から始められる具体的なステップまでを解説します。マイコン開発の経験はあるがFPGAは未経験、という読者を主な想定読者としています。
FPGAとは何か——マイコンとの違いを一文で
FPGA(Field Programmable Gate Array、現場プログラマブルゲートアレイ)は、出荷後に回路構成を書き換えられる半導体です。内部には多数の論理ブロック(LUT: Look-Up Table、小さな真理値表)と、それらを接続する配線スイッチの行列があり、この組み合わせを書き換えることで任意のデジタル回路を実現します。
マイコンとの違いは、動作モデルそのものです。マイコンがメモリから命令を取り出して逐次実行するのに対し、FPGAは記述した回路がそのままハードウェアとして同時に動作します。たとえば「入力が立ち上がったらカウンタを1つ進める」処理も、マイコンでは割り込みとソフトウェアのループで実現するのに対し、FPGAでは物理的なカウンタ回路そのものを構成します。
graph LR;
A["HDL記述<br/>(Verilog/VHDL)"] --> B["論理合成<br/>(Yosys等)"];
B --> C["配置配線<br/>(nextpnr等)"];
C --> D["ビットストリーム生成"];
D --> E["ボードへ書き込み"];
E --> F["回路として動作"];
この「回路そのものを構成する」特性から、FPGAが得意なのは次のような分野です。
- 決定論的な遅延が要る処理: 通信プロトコルの実装、ハイレスポンスな制御
- 並列信号処理: 画像処理、デジタルフィルタ、高周波取引システム
- カスタムハードの試作: ASIC化前のプロトタイピング
- レトロハードの再現: ゲーム機や旧世代CPUの忠実なエミュレーション(回路レベル)
回路を記述する言語がHDL(Hardware Description Language)で、代表的なものがVerilogとVHDLです。ソフトウェア言語と文法は似ていても、発想は「クロックごとにすべての記述が同時に動く」並列世界です。この発想の転換こそがFPGA学習の本当の面白さであり、最初のつまずきポイントでもあります。
従来の参入障壁はどこにあったのか——比較表で整理
FPGA初心者の壁は、技術そのものより前に「環境」にありました。主要ベンダー(Intel/AlteraのQuartus、AMD/XilinxのVivado)の標準的な開発環境は次のような特徴を持ります。
| 項目 | ベンダーIDE(Quartus/Vivado) | ブラウザIDE(WebFPGA等) |
|---|---|---|
| インストール容量 | 数十GB規模 | ゼロ(ブラウザのみ) |
| ライセンス | 無料版でもアカウント登録が必要 | Webアカウント登録のみ |
| 対応環境 | Windows/Linux(制約あり) | Google ChromeまたはOpera。ただしLinuxはudev設定が必要 |
| 対応デバイス | ベンダー全家系(大規模含む) | iCE40系など低価格FPGA |
| 初期コスト | ボード代+(場合により)有料版 | ボード代のみ |
| 最初のLチカまで | 環境構築に数時間〜数日(環境による) | 数十分〜(目安・環境と混雑状況による) |
注目すべきは最終行の「最初のLチカまでの時間」です。学習の継続は、最初の成功体験までの時間に強く依存します。マイコンプログラミングがArduinoによって大きく普及した一因は、個人的な見解として「USBにつなげばすぐ点滅する」という即時の成功体験にあったと考えられます。FPGA分野には長らくその「Arduino的入口」が欠けていました。
ブラウザベースのツールチェーンは、この構図を変えつつあります。インストールやライセンス手続き、マシンスペックの制約から解放され、「回路を書く感覚」を掴むことだけに集中できる。教育現場での価値も大きく、対応ブラウザとUSB権限の設定が整えば、開発マシンのスペックを気にせずデジタル回路の学習に取り組めます。
もちろん制約もあります。対象デバイスがLattice iCE40系の低価格FPGAに限られ、大規模デザインには向きません。本格的な開発では最終的にローカル環境やベンダーツールへの移行が必要です。しかし「入門の壁」を下げるツールとして、その役割は十分に果たしています。
WebFPGAのしくみ——ブラウザで何ができるのか
WebFPGAは、もともとKickstarterで資金調達を行ったプロジェクトで、「Rapid FPGA Development System」を掲げています。公式サイト(webfpga.io)とWeb IDE(beta.webfpga.io)、ドキュメント(book.webfpga.io)、サポートフォーラムが公開されています。
できることを開発フローに沿って並べると、こうなります。
- コード編集: ブラウザ上のエディタでVerilogを記述・編集
- 論理合成: クラウド上の合成ツール(Cloud Synthesis)がネットリストを生成
- 配置配線・ビットストリーム生成: iCE40向けの最終イメージを作成
- 書き込み: WebUSB経由でUSB接続したボードへ直接ダウンロード
つまり、ブラウザのタブひとつでHDL記述から実機書き込みまで完結します。
技術的な下支えとなっているのがオープンソースのFPGAツールチェーンです。Lattice iCE40を対象に、論理合成のYosys、配置配線のnextpnr、そしてiCE40のビットストリーム形式の文書化と解析・生成ツールを提供するProject IceStormという3点セットが完全なオープン開発フローを実現しており、WebFPGAはその知見をクラウド/ブラウザから利用できる形に整えたものと言えます。コマンドライン派のために、公式のWebFPGA CLI(https://github.com/webfpga/cli)が公開されています(かつてフォーラムで案内されていたNode.js版CLIは廃止済みです)。
Linuxユーザー向けの実用ポイントとして、USBシリアル書き込みにはudevルールの設置が必要です。公式サイトからルールファイル(60-webfpga.rules)が配布されているので、パーミッションエラーで悩む前に導入しておくとスムーズです。
公式のデモにはLEDバイナリカウンタなど入門向けのサンプルがあり、最初の題材に最適です。
今日から始める5ステップ——Lチカからカウンタへ
ここからは実際の手順です。必要なものはWebFPGA対応ボードとUSBケーブル、ブラウザだけです。
Step 1: Web IDEを開く ブラウザ(Google ChromeまたはOpera)で beta.webfpga.io/dashboard を開きます。対応ブラウザであれば、そのまま開発を始められます。
Step 2: Lチカサンプルを書き込む 用意されているLED点滅のサンプルを開き、そのまま書き込みます。WebUSBの許可を求められたら承認してください。公式のクイックスタートでは合成完了まで最大2分程度かかることが案内されているので、環境や混雑状況によっては数分待つつもりでいるとよいでしょう。
Step 3: 点滅周期を変えて「回路に書いた」感覚を掴む カウンタの分周比を変えて点滅周期を変えてみましょう。ここで重要なのは、変更が「再コンパイル」ではなく「回路の再構成」であることです。Verilogのミニマム例を見てみます。
module blink(
input wire clk,
output reg led
);
reg [23:0] counter = 24'd0;
always @(posedge clk) begin
counter <= counter + 1'b1;
led <= counter[23]; // 上位ビットで点滅
end
endmodule
この記述の発想はソフトウェアとは異なります。always @(posedge clk)は「クロックの立ち上がりごとに」の意味で、このブロックの中身が毎クロック同時に評価されます。ループで繰り返すのではなく、24ビットカウンタという回路そのものを構成しているのです。この例ではcounter[23]は2^23クロックごとに反転し、出力の周波数は入力クロックの1/2^24になります(実際のボードではトップモジュール名やピン割り当てがボード固有になるため、公式のサンプルを土台に書き換えるのが確実です)。
Step 4: ボタン入力+カウンタへ拡張 入力ポートにボタンを接続し、ボタンを押すたびにカウンタが進む回路、7セグメントLEDに値を表示する回路へと拡張します。公式のLEDバイナリカウンタのデモが参考になります。
Step 5: ローカル環境への卒業 ブラウザで感覚を掴んだら、次はローカルにオープンツールチェーンを構築します。Yosys(論理合成)+ nextpnr(配置配線)+ Project IceStorm(iCE40ビットストリーム)の3点セットです。主要ディストリビューションのパッケージやHomebrewで入手できます。WebFPGA公式CLI(https://github.com/webfpga/cli)を利用すれば、ブラウザと同じフローをコマンドラインから実行できます。バージョン管理しやすく、CIに載せやすいのがローカル環境の利点です。
次の一歩——オープンエコシステムの広がり
ブラウザでの学習が一段落したら、エコシステムはさらに広がっています。
学習ボードの選択肢 Web IDEでの開発は、公式ドキュメントが案内するWebFPGAのShasta/ShastaPlus系ボードが対応しています。一方、iCEstickやiCEBreaker(icebreaker-fpga.org)などのiCE40搭載ボードは、ローカルのオープンソースツールチェーン(Yosys+nextpnr+IceStorm)での開発に向いた選択肢です。ブラウザで入門した後にローカル環境へ移行する際の候補として検討するとよいでしょう。
FPGA上にSoCを組む iCE40クラスでも、VexRiscvのようなRISC-Vソフトコアを載せるアプローチが知られており、「FPGA上に自分だけのマイコンシステム」を構成する道があります。HDLで周辺回路を書き、CPUコアと接続する。この体験は、ハードウェアとソフトウェアの境界に対する理解を一気に深めてくれます。
本サイトの関連記事 組込み開発全般に興味がある読者には、Zephyr RTOSとRISC-Vマイコンではじめるモダン組込み開発の記事も参照してください。また、CPU推論に最適化された小型言語モデルの記事でも、ハードウェアとソフトウェアの協調設計という同じ問題意識を別の角度から扱っています。
よくある質問(FAQ)
FPGAとマイコンはどちらを先に学ぶべきですか?
目的次第です。ソフトウェア的な発想(逐次処理、API、OS)に慣れているなら、まずマイコン(ArduinoやRaspberry Pi Pico)で入出力の基礎を掴み、その後にFPGAへ移るのが滑らかです。逆にデジタル回路の基礎(組み合わせ論理、フリップフロップ)を授業で学んだ人なら、FPGAから入っても構いません。重要なのは、両者が競合ではなく補完だということです。
ブラウザだけで完結しますか? ボードは必須ですか?
シミュレータ的な学習だけであればボードなしでも可能ですが、FPGAの本質は「実機の回路が動く」体験にあります。書き込みにはWebFPGA対応ボードが必要です。安価なiCE40ボードから始めるのが現実的です。
WebFPGAではどんなボードが使えますか?
公式ドキュメントで案内されているのは、Lattice iCE40搭載のWebFPGA Shasta/ShastaPlus系ボードです。大規模なベンダーFPGA(Kintex、Agilexなど)の開発には、それぞれの公式ツールが必要になります。
実務にはどの程度役立ちますか?
FPGA人材は通信、産業機器、金融、防衛、半導体検証などの分野で需要が続いているとされます。iCE40での学習がそのまま実務に直結するわけではありませんが、HDLの発想と開発フローの理解はデバイスを問わず通用する資産です。
無料でどこまでできますか?
ローカルのYosys+nextpnr+IceStormはオープンソースで無償です。Web IDEの料金・登録要件は最新の公式サイトで確認してください。確実に言えるのは、大きく費用が発生するのは実機ボード代だということです。
まとめ——環境構築という壁を越えた先
FPGA学習の最大の障壁は、回路の難しさではなく、そこに至るまでの環境構築でした。WebFPGAのようなブラウザベースのツールチェーンは、その壁を「タブを開くだけ」まで下げつつあります。
今日からできる3つのアクション:
- Web IDEでLチカを書き込む — 最初の成功体験を手早く
- Verilogのカウンタ記述を書き換える — 「回路を構成する」発想に触れる
- 対応ボードを1台調達する — Web IDEならShasta系、ローカル開発ならiCEBreaker等から
デジタル回路の並列世界は、一度発想が切り替わると、ソフトウェアにはない面白さで報いてくれます。壁はもう低くなっています。あとは踏み出すだけです。
参考ソース
- WebFPGA公式サイト: https://webfpga.io/
- WebFPGA Web IDE: https://beta.webfpga.io/dashboard/
- WebFPGA Documentation: https://book.webfpga.io/
- WebFPGA CLI(現行): https://github.com/webfpga/cli
- WebFPGA Kickstarter: https://www.kickstarter.com/projects/ryanmjacobs/webfpga-rapid-fpga-development-system
- Hacker News(2026-09-02 WebFPGA投稿): https://news.ycombinator.com/item?id=49531525
- Project IceStorm(現行リポジトリ): https://github.com/YosysHQ/icestorm
- Yosys: https://yosyshq.net/yosys/
- nextpnr: https://github.com/YosysHQ/nextpnr
- iCEBreaker: https://icebreaker-fpga.org/