DocSpaceプラグインの開発方法:完全なステップバイステップチュートリアル
速度とコラボレーションがすべての世界では、生産性ツールも対応し続ける必要があります。DocSpaceプラグインはユーザーのドキュメント管理と操作を強化するモダンな方法を提供します。このガイドでは、公式プラグインサンプルの実例を使って、DocSpaceプラグインを作成する手順を詳しく解説します。
ONLYOFFICE DocSpace Plugins SDKについて
ONLYOFFICE DocSpaceプラグインSDKはTypeScriptベースのnpmパッケージで、DocSpaceポータルに埋め込むプラグインを作成するためのインターフェースを提供します。プラグイン開発のライフサイクルには企画、開発、テスト、運用が含まれます。
Plugins SDKの使用例として、公式サンプルリポジトリを用意しています。では、このサンプルを基にプラグイン開発の全手順を見ていきましょう。
企画
プラグインの目的を明確にし、どこで利用するか、どのサードパーティサービスと連携するかを検討します。
Step 1. 必要なパッケージと環境をインストール
- ONLYOFFICEDocSpaceオンプレミス版
- @onlyoffice/docspace-plugin-sdk npmパッケージ
グローバルインストールには以下を実行:
npm i -g @onlyoffice/docspace-plugin-sdk
Step 2. プラグインの設計
どのサービスを使い、どの機能を追加するかを決めます。
サンプルでは以下を利用:
- AssemblyAI:音声・動画の文字起こし
- ConvertAPI:ドキュメント→PDF変換
- Draw.io:図表作成・編集・挿入
各サービスのドキュメントやライセンス、必要なAPIキー取得などを事前に確認してください。
プラグインの配置場所、構造、ユーザーインタラクションを考え、必要なプラグインタイプやアイテムをリストアップします。詳しくはプラグインタイプとプラグインアイテムのドキュメントを参照。
例:Speech-to-Textプラグインでは以下を実装:
- IPlugin:必須。PluginStatusで埋め込み設定。
- ApiPlugin:サードパーティ連携用。
- ISettingsPluginとISettings:設定ブロック用。
- IContextMenuPluginとIContextMenuItem:コンテキストメニュー用。
Draw.ioプラグインではさらに:
- IMainButtonPluginとIMainButtonItem:メインボタン用。
- IFilePluginとIFileItem:.drawioファイル対応用。
プラグイン構造の詳細はこちらを参照。サンプルではspeech-to-textとdraw.ioでフォルダ構成を変えています。
最後にプラグイン名と説明を決めます。
開発
準備が整ったら開発を開始します。
Step 1. プラグインテンプレートの作成
テンプレート生成と設定:
npx create-docspace-plugin
npxが使えない場合:
npm i -g @onlyoffice/docspace-plugin-sdk
対話形式でpackage.jsonなどを設定します(詳細)。サンプルのspeech-to-text用設定例:
既存プロジェクトで使う場合は依存に追加し、package.jsonに必要項目を記載してください。
Step 2. エントリポイント設定
テンプレート作成でsrc/index.tsが生成されます。プラグインタイプの基本メソッドを定義した必須ファイルです。独自作成時はサンプルを参照してください。
Step 3. アイコン追加
ルートにassetsフォルダを作りアイコンを配置。必要サイズ例:
- プラグインロゴ(48×48px)– package.jsonのlogo項目に対応
- コンテキストメニューアイコン(16×16px)
同一アイコンをメインボタンにも利用可能。Draw.ioプラグインでは.tile用に32×32pxアイコンも追加。
Step 4. UI要素設定
Draw.ioプラグイン例ではモーダルとエディタを設定。Dialog.ts
でIFrame
やIBox
を定義し、ModalDialogProps
を構成:
export const frameProps:IFrame={width:"100%",height:"100%",name:"test-drawio",src:""}
const body:IBox={widthProp:"100%",heightProp:"100%",children:[{component:Components.iFrame,props:frameProps}]}
export const drawIoModalDialogProps:IModalDialog={dialogHeader:"",dialogBody:body,displayType:ModalDisplayType.modal,fullScreen:true,onClose:()=>({actions:[Actions.closeModal]}),onLoad:async()=>({newDialogHeader:drawIoModalDialogProps.dialogHeader||"",newDialogBody:drawIoModalDialogProps.dialogBody}),autoMaxHeight:true,autoMaxWidth:true}
Editor.ts
でDiagramEditor
関数を定義し、UIパラメータと各メソッドを実装(startEditing,getDataなど)。サンプルコードを参照。
Step 5. プラグインタイプ定義
speech-to-text用にIContextMenuItem
を定義:
export const contextMenuItem:IContextMenuItem={
key:"speech-to-text-context-menu-item",
label:"Convert to text",
icon:"speech-to-text-16.png",
onClick:assemblyAI.speechToText,
fileType:[FilesType.video],
withActiveItem:true,
}
Draw.ioプラグインではIMainButtonItem
とIFileItem
も定義:
const mainButtonItem:IMainButtonItem={key:"draw-io-main-button-item",label:"Draw.io",icon:"drawio.png",onClick:(id)=>{…}}
export const drawIoItem:IFileItem={extension:".drawio",fileTypeName:"Diagram",fileRowIcon:"drawio-32.svg",fileTileIcon:"drawio-32.svg",devices:[Devices.desktop],onClick}
Step 6. 設定プラグインタイプ作成
管理者向け設定用にISettings
を構築:
const descriptionText:TextGroup={component:Components.text,props:{text:"To generate API token visit https://www.assemblyai.com",color:"#A3A9AE",fontSize:"12px",fontWeight:400,lineHeight:"16px"}}
const descGroup:BoxGroup={component:Components.box,props:{children:[descriptionText]}}
const parentBox:IBox={displayProp:"flex",flexDirection:"column",children:[tokenGroup,descGroup]}
const adminSettings:ISettings={settings:parentBox,saveButton:userButtonComponent,onLoad:async()=>{assemblyAI.fetchAPIToken();tokenInput.value=assemblyAI.apiToken;plugin.setAdminPluginSettings(adminSettings);return{settings:parentBox}}}
Step 7. メインコードファイル作成
srcフォルダにAssemblyAI.tsを作成。AssemblyAI
クラスでAPI URL設定やトークン管理、uploadFile,transcribeAudio,speechToTextなどのメソッドを実装。最後にインスタンス化してexport。
const assemblyAI=new AssemblyAI()
export default assemblyAI
テスト
- ビルド手順に従いプラグインをビルドします。
distフォルダに完成プラグインのアーカイブが生成されます。
- DocSpaceポータルにアップロードして機能と表示を確認してください。
※オンプレミス版のみプラグインが追加可能です。バグがあれば修正→再ビルド→再テストを繰り返します。
テストが完了し正常動作を確認したら本番サーバーに追加して利用開始です。
DocSpaceプラグインはユーザーフレンドリーなドキュメント管理とコラボレーションを実現します。ご質問はフォーラムへ(要登録)、機能要望やバグ報告はGitHubまたはメールでお寄せください。開発の成功を祈ります!
ONLYOFFICEの無料アカウントを登録する
オンラインでドキュメント、スプレッドシート、スライド、フォーム、PDFファイルの閲覧、編集、共同作業