目次

開発基盤としての DokuWiki 活用のススメ

DokuWiki を使っていると、様々な可能性に気づきます。

Wiki 本来の機能を活用した、ドキュメント基盤としての活用法はもちろんのこと、ユーザー管理、アクセス制御、ファイル書庫などの機能を使って、アプリケーション基盤としても活用できます。以下に、私が構築して上手くいっているパターンや、今後取り組もうと思っているパターンを紹介します。

パターン 1 : DokuWiki をフロントエンドとした Web アプリケーション 1

もっとも簡単なのは、DokuWiki のページをフロントエンドとした Web アプリケーションで、この方法でいくつかの実稼働サイトを構築しています。
DokuWiki では html 埋め込み機能を使って、任意のフロントエンドフレームワークを利用できます。私は vue.js を好んで利用しています。

また、DokuWiki のナビゲーションバーやサイドバーを活用したメニューシステムを構築でき、対象となるページにアクセス制限をかけておけば、アクセス制御も簡単に実装できます。

データベースとの連携部分は独自で開発しなければなりませんが、シンプルな WebAPI バックエンドを自作し、認証機能付きのディスパッチャ、コントローラクラス、モデルクラスなどを実装しており、とても便利に使っています。自作なので自分のお気に入りのロガーやメール送信などのサービスも簡単に組み込めます。

WebAPI の認証部分も DokuWiki 内部の認証メソッドを呼び出すことで、簡単に実装可能です。

但し、この方法にはいくつか欠点もあり、大きくは以下の通りです。

  1. DokuWiki で使用しているテンプレートの CSS フレームワークに制限される
  2. DokuWiki を使用してのページ編集では、シンタックスハイライト等を利用できない
  3. ビルド等が必要な、最新のフロントエンドフレームワークを利用できない
  4. 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 から始めれば、自分の好きなエディタで開発ができ、フロントエンド系のツールを自由に選択できます。