オープンソースプロジェクト
jgraph/drawio-desktop avatar
jgraph/drawio-desktop

draw.io desktopの開発構成と配布工程を読む

draw.io の公式 Electron ビルド。コードを変更せず、「現状のまま」提供されることを受け入れる場合は、どのような目的でも使用できます。

スター 63,109フォーク 5,766JavaScriptApache-2.0

ひと目でわかる

これは何?
draw.ioをサブモジュールとして含むデスクトップアプリの開発、ローカル起動、保存先、署名付きリリースの流れを整理する。
誰に向いている?
draw.ioをデスクトップアプリとして開発または個人用にビルドする人には、サブモジュールを含む取得手順とnpm起動方法が明確です。一般的なOSSプロジェクトのように自由なPR参加を期待する人には向きません。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に JavaScript です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

サブモジュールを含む取得

drawio-desktopはdraw.ioをgit submoduleとして含むデスクトップアプリです。両方を取得するためREADMEは git clone --recursive https://github.com/jgraph/drawio-desktop.git を示しています。通常のcloneだけではサブモジュールがそろわないため、開発開始時の取得方法そのものが構成条件です。

利用者向けの機能一覧より、開発、ビルド、リリース工程がREADMEの中心です。draw.io本体をシンボリックリンクで参照する場合は drawio/src/main/webapp 内のnode_modulesもリンクする必要があります。サブモジュールのコミットと依存ディレクトリを一緒に確認してください。

draw.ioのサブモジュール更新とアプリの版更新は別の変更として扱い、npm startで確認した画面とビルド成果物を対応させます。

npm installとローカル起動

開発手順はリポジトリのルートで npm install を実行し、npm startでアプリを起動する流れです。デバッグには npm start --enable-logging が使えます。内部開発では DRAWIO_ENV=dev をexportすると開発・デバッグモードになります。

起動できたことだけでサブモジュールの内容やwebappの依存関係が正しいとは限りません。再帰cloneの結果、npm installのログ、npm startの画面、--enable-loggingで出る情報を順番に確認します。OS別Node.js版や依存固定の詳細はREADMEにありません。

開発環境の起動確認と署名済み配布の確認は、同じテストとして扱わず、それぞれのログを保存します。

個人用unsignedビルド

フォークして変更し、個人利用向けのunsignedアプリを作る場合は doc/BUILDING_FOR_PERSONAL_USE.md を参照します。これは署名済みの公式配布物を作る工程とは別です。変更したdraw.io、アプリ側の差分、unsignedファイルを分けて記録し、公式版と取り違えない表示を付けます。

draw.ioサブモジュールを更新してpushする場合は、push前にバージョンタグを追加する手順もあります。サブモジュールのコミット、アプリの版、ビルド日時を記録すれば、同じ成果物を再確認できます。

draw.io desktopのローカル起動、個人用ビルド、公開リリースでは確認項目が異なります。

Windows配布物の署名

リリースではサブモジュールを更新してpushし、Travis CIとAppVeyorのビルド完了を待ちます。その後GitHub Releasesのpreview releaseを編集し、Windows exeとportable版を取得します。READMEは signtool sign /a /tr http://rfc3161timestamp.globalsign.com/advanced /td SHA256 の形式で署名し、draw.io-windows-installer-x.y.z.exe と draw.io-windows-no-installer-x.y.z.exe として再アップロードする流れを示します。

署名後にリリースノートを追加して公開します。Windowsでx64とis32を同時に指定すると一つの大きなファイルになるため、READMEは分割すると説明しています。署名状態、ファイル名、ビルドログを公開前に照合します。

npmの依存関係が変わると同じコマンドでも結果が変わるため、package情報とサブモジュールの状態を開発記録に残します。ローカルStorageとSession Storageを消去する前にバックアップを取り、macOSとWindowsで再起動後のセッションを確認します。自由なPRを想定せず、バグ報告や機能要望の窓口をREADMEの方針に合わせます。

OS別の保存場所

Local StorageとSession StorageはAppData領域に保存されます。macOSは ~/Library/Application Support/draw.io、Windowsは C:\Users\<USER-NAME>\AppData\Roaming\draw.io です。設定やセッションを移行または削除する場合は、アプリを閉じた状態でこの保存場所を確認します。

READMEはLinuxの保存先やバックアップ形式を示していません。macOSとWindowsの間でデータが同じように移ると決めつけず、保存ファイルの存在、権限、再起動後の復元を実機で調べます。

drawio-desktopの再現性は、draw.ioサブモジュールのコミット、Nodeとnpmの実行環境、node_modulesの配置で変わります。git clone --recursive後にサブモジュールの状態を記録し、npm installとnpm start --enable-loggingの結果を保存します。個人用変更はdoc/BUILDING_FOR_PERSONAL_USE.mdの範囲に置き、unsigned成果物を署名済みリリースと区別します。Windows配布ではinstallerとno-installerの署名、x64とis32の分割、Release notes、Travis CIとAppVeyorの完了を順に確認します。

貢献方針と導入判断

READMEは、プロジェクトの複雑さとテスト量を理由に、maintainerの許可がない限り貢献を閉じる方針を説明しています。バグ報告と機能要望は歓迎されますが、通常のOSSのように自由なPRを受ける設計ではありません。

採用前は再帰clone、npm install、npm start --enable-loggingを検証環境で実行し、draw.ioサブモジュールが取得できたかを確認します。個人ビルドならBUILDING_FOR_PERSONAL_USE、配布なら署名工程を読み、保存先と成果物の署名状態を記録してください。

npm startの前にdraw.ioサブモジュールの状態を確認し、シンボリックリンク構成ならdrawio/src/main/webapp/node_modulesの参照も点検します。unsignedアプリを公式配布物と混同せず、Windows exeとportableの署名、Travis CIとAppVeyorの完了、Releaseのファイル名を公開前に対応付けます。macOSとWindowsの保存先はバックアップ対象を明確にしてから移行します。

drawio-desktopを再ビルドする際は、git clone --recursiveで得たdraw.ioサブモジュールのコミットを保存します。npm installとnpm startをルートで実行し、DRAWIO_ENV=devや--enable-loggingを使ったかを記録します。個人用はunsigned成果物、公開版はsigntoolによる署名済みinstallerとportableを分けます。macOSとWindowsのStorage保存先をバックアップし、Release前にTravis CI、AppVeyor、ファイル名、署名、リリースノートを確認します。

編集部の結論

draw.ioをデスクトップアプリとして開発または個人用にビルドする人には、サブモジュールを含む取得手順とnpm起動方法が明確です。一般的なOSSプロジェクトのように自由なPR参加を期待する人には向きません。最初に再帰cloneでdraw.ioを取得し、npm install後のnpm start、OS別の保存先、署名済み配布物の扱いを確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート