開発基盤としての DokuWiki 活用のススメ
DokuWiki を使っていると、様々な可能性に気づきます。
Wiki 本来の機能を活用した、ドキュメント基盤としての活用法はもちろんのこと、ユーザー管理、アクセス制御、ファイル書庫などの機能を使って、アプリケーション基盤としても活用できます。以下に、私が構築して上手くいっているパターンや、今後取り組もうと思っているパターンを紹介します。
パターン 1 : DokuWiki をフロントエンドとした Web アプリケーション 1
もっとも簡単なのは、DokuWiki のページをフロントエンドとした Web アプリケーションで、この方法でいくつかの実稼働サイトを構築しています。
DokuWiki では html 埋め込み機能を使って、任意のフロントエンドフレームワークを利用できます。私は vue.js を好んで利用しています。
また、DokuWiki のナビゲーションバーやサイドバーを活用したメニューシステムを構築でき、対象となるページにアクセス制限をかけておけば、アクセス制御も簡単に実装できます。
データベースとの連携部分は独自で開発しなければなりませんが、シンプルな WebAPI バックエンドを自作し、認証機能付きのディスパッチャ、コントローラクラス、モデルクラスなどを実装しており、とても便利に使っています。自作なので自分のお気に入りのロガーやメール送信などのサービスも簡単に組み込めます。
WebAPI の認証部分も DokuWiki 内部の認証メソッドを呼び出すことで、簡単に実装可能です。
但し、この方法にはいくつか欠点もあり、大きくは以下の通りです。
- DokuWiki で使用しているテンプレートの CSS フレームワークに制限される
- DokuWiki を使用してのページ編集では、シンタックスハイライト等を利用できない
- ビルド等が必要な、最新のフロントエンドフレームワークを利用できない
- Git によるコード管理が利用しづらい
例えば、DokuWiki が Bootstrap3 テンプレートを使っていれば、アプリケーションで Bootstrap4 を使いたいと思っても、CSS がバッティングしてしまいます。
DokuWiki 付属のエディタでは、html や JavaScript のシンタックスハイライトが利用できないため、複雑なページの構築には向きません。
フロントエンドフレームワークもページに埋め込みの JavaScript を利用することになるため、バンドラ等は利用できません。
また、ページの差分は DokuWiki が行う場合、DokuWiki 独自の差分管理用のファイルが生成され、これを更に Git 管理をしようとすると、差分の対象が肥大化していきます。
パターン 2 : DokuWiki をフロントエンドとした Web アプリケーション 2
上記の欠点を補うために考えたのが、DokuWiki ページの iframe に外部ページで実装したアプリケーションを埋め込む方法です。
この方法であれば、DokuWiki で使用しているフロントエンド CSS フレームワークからアプリケーションが切り離され、自分の好きな CSS フレームワークを利用することができます。
また、別ディレクトリで完全に分離した html JavaScript ファイルを編集するので、好きなエディタでシンタックスハイライト付きで編集ができ、バンドラ等も利用でき、また、ソースの Git 管理もできます。
ただ、これでも作成するアプリケーションは DokuWiki のページ単位に独立したものになります。それはそれでバージョンアップ等の管理は容易なのですが、SPA としてレイアウトやメニューは構築できません。
パターン 3 : DokuWiki を管理サイトとした Web アプリケーション
最後のパターンは、アプリケーションを完全に独立したディレクトリで運用し、管理サイトとして DokuWiki を利用するパターンです。それ以外は パターン 2 と全く同様です。
どのパターンを使うか
DokuWiki や Web アプリケーション開発の初心者は パターン 1 が良いと思います。
バックエンドの実装は外部に委託するとしても、DokuWiki さえあればワイヤーフレームとしてフロントエンドは実装できるため、画面イメージを伝えることができます。
バックエンドも開発できる方は、パターン 2 や 3 から始めれば、自分の好きなエディタで開発ができ、フロントエンド系のツールを自由に選択できます。