aboutsummaryrefslogtreecommitdiff
path: root/docs/ja/api_development_overview.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ja/api_development_overview.md')
-rw-r--r--docs/ja/api_development_overview.md49
1 files changed, 49 insertions, 0 deletions
diff --git a/docs/ja/api_development_overview.md b/docs/ja/api_development_overview.md
new file mode 100644
index 000000000..0612507b4
--- /dev/null
+++ b/docs/ja/api_development_overview.md
@@ -0,0 +1,49 @@
1# QMK コンパイラ開発ガイド
2
3<!---
4 original document: 0.9.50:docs/api_development_overview.md
5 git diff 0.9.50 HEAD -- docs/api_development_overview.md | cat
6-->
7
8このページでは、開発者に QMK コンパイラを紹介しようと思います。コードを読まなければならないような核心となる詳細に立ち入って調べることはしません。ここで得られるものは、コードを読んで理解を深めるためのフレームワークです。
9
10# 概要
11
12QMK Compile API は、いくつかの可動部分からできています:
13
14![構造図](https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg)
15
16API クライアントは API サービスと排他的にやりとりをします。ここでジョブをサブミットし、状態を調べ、結果をダウンロードします。API サービスはコンパイルジョブを [Redis Queue](https://python-rq.org) に挿入し、それらのジョブの結果について RQ と S3 の両方を調べます。
17
18ワーカーは RQ から新しいコンパイルジョブを取り出し、ソースとバイナリを S3 互換のストレージエンジンにアップロードします。
19
20# ワーカー
21
22QMK コンパイラワーカーは実際のビルド作業に責任を持ちます。ワーカーは RQ からジョブを取り出し、ジョブを完了するためにいくつかの事を行います:
23
24* 新しい qmk_firmware のチェックアウトを作成する
25* 指定されたレイヤーとキーボードメタデータを使って `keymap.c` をビルドする
26* ファームウェアをビルドする
27* ソースのコピーを zip 形式で圧縮する
28* ファームウェア、ソースの zip ファイル、メタデータファイルを S3 にアップロードする
29* ジョブの状態を RQ に送信する
30
31# API サービス
32
33API サービスは比較的単純な Flask アプリケーションです。理解しておくべきことが幾つかあります。
34
35## @app.route('/v1/compile', methods=['POST'])
36
37これは API の主なエントリーポイントです。クライアントとのやりとりはここから開始されます。クライアントはキーボードを表す JSON ドキュメントを POST し、API はコンパイルジョブをサブミットする前にいくらかの(とても)基本的な検証を行います。
38
39## @app.route('/v1/compile/&lt;string:job_id&gt;', methods=['GET'])
40
41これは最もよく呼ばれるエンドポイントです。ジョブの詳細が redis から利用可能であればそれを取り出し、そうでなければ S3 からキャッシュされたジョブの詳細を取り出します。
42
43## @app.route('/v1/compile/&lt;string:job_id&gt;/download', methods=['GET'])
44
45このメソッドによりユーザはコンパイルされたファームウェアファイルをダウンロードすることができます。
46
47## @app.route('/v1/compile/&lt;string:job_id&gt;/source', methods=['GET'])
48
49このメソッドによりユーザはファームウェアのソースをダウンロードすることができます。