OSSカンバンボード比較:Wekan vs Focalboard vs Planka でタスク管理を構築する
オープンソースラボ編集部 ・ 2026年6月13日
OSSカンバンボード比較:Wekan vs Focalboard vs Planka でタスク管理を構築する
Trello(無料制限あり・$5/ユーザー/月〜)・Jiraなどの有料SaaSに依存せず、セルフホストでカンバンボード・タスク管理・スプリント計画を構築するOSSツールが進化しています。Wekan(Node.js製・Trelloクローン・最古のOSSカンバン)・Focalboard(Mattermost製・Notionライクな多視点)・Planka(React製・モダンUI・Docker対応)の3つが2026年のOSSカンバンボード主要選択肢です。
セルフホストカンバンを使う理由
- コスト削減: Trello($5/ユーザー/月〜)・Jira($7.75/ユーザー/月〜)→VPS $10/月でフル機能
- データ所有権: タスク・プロジェクト計画を自社サーバーに完全保持
- カスタマイズ: Webhookでオリジナルの自動化ルールを実装
- 無制限ボード: 有料プランの制限なしにプロジェクト数・ボード数を作成
主要ツールの概要
Wekan
2013年公開、Node.js/Meteor製のOSSです。GitHubスター19k+。TrelloクローンとしてカンバンボードのUI・機能を完全に再現したOSSの元祖で、ボード・リスト・カード・ラベル・期限・添付ファイル・チェックリスト・アクティビティログ・LDAP/OAuth認証が揃っています。Meterorフレームワーク上でリアルタイム更新が動作します。
# docker-compose.yml: Wekan
version: "3.8"
services:
wekan:
image: ghcr.io/wekan/wekan:latest
restart: unless-stopped
ports:
- "8080:8080"
environment:
WRITABLE_PATH: /data
MONGO_URL: mongodb://wekan-db:27017/wekan
ROOT_URL: https://kanban.example.com
WITH_API: "true"
RICHER_CARD_COMMENT_EDITOR: "true"
CARD_OPENED_WEBHOOK_ENABLED: "true"
WEBHOOKS_ATTRIBUTES: 'cardTitle,description,listTitle,boardTitle,swimlaneTitle,memberUsernames,labels,customFields'
MAIL_URL: smtp://user:pass@smtp.example.com:587/
MAIL_FROM: noreply@example.com
volumes:
- wekan_uploads:/data
depends_on: [wekan-db]
wekan-db:
image: mongo:5
volumes:
- wekan_db:/data/db
volumes:
wekan_uploads:
wekan_db:
# Python: Wekan REST API でカードを自動作成(GitHub Issue→Wekanカード同期)
import requests
WEKAN_URL = 'https://kanban.example.com'
WEKAN_USER = 'admin'
WEKAN_PASS = 'password'
def get_wekan_token() -> tuple:
'''WekanのAPIトークンを取得'''
resp = requests.post(f'{WEKAN_URL}/users/login', json={
'username': WEKAN_USER,
'password': WEKAN_PASS,
})
data = resp.json()
return data['token'], data['id']
def create_card(board_id: str, list_id: str, title: str, description: str = '') -> dict:
'''Wekanボードのリストにカードを作成'''
token, user_id = get_wekan_token()
resp = requests.post(
f'{WEKAN_URL}/api/boards/{board_id}/lists/{list_id}/cards',
json={'title': title, 'description': description, 'authorId': user_id},
headers={'Authorization': f'Bearer {token}'},
)
return resp.json()
def sync_github_issue(payload: dict, board_id: str, list_id: str) -> dict:
'''GitHub IssueをWebhookで受け取ってWekanカードとして自動作成'''
issue = payload['issue']
return create_card(
board_id, list_id,
title=f"GH#{issue['number']}: {issue['title']}",
description=issue.get('body', ''),
)
Focalboard
2021年公開(Mattermost)、Go/TypeScript製のOSSです。GitHubスター22k+。MattermostのNotionライクなプロジェクト管理ツールで、ボード(カンバン)・テーブル・ギャラリー・カレンダー・タイムライン(ガントチャート)の5つのビューを切り替えてタスクを管理できます。Mattermost組み込み版とスタンドアロン版の両方で使えます。
# docker-compose.yml: Focalboard(スタンドアロン)
version: "3.8"
services:
focalboard:
image: mattermost/focalboard:latest
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- focalboard_data:/opt/focalboard/data
environment:
FOCALBOARD_DB_TYPE: postgres
FOCALBOARD_DB_CONFIG: "postgresql://focalboard:${DB_PASS}@focalboard-db:5432/focalboard?sslmode=disable"
FOCALBOARD_SERVER_ROOT: https://board.example.com
focalboard-db:
image: postgres:16-alpine
environment:
POSTGRES_DB: focalboard
POSTGRES_USER: focalboard
POSTGRES_PASSWORD: ${DB_PASS}
volumes:
- focalboard_pg:/var/lib/postgresql/data
volumes:
focalboard_data:
focalboard_pg:
Planka
2019年公開、JavaScript/React製のOSSです。GitHubスター9k+。モダンなUIとスムーズなドラッグ&ドロップが特徴のOSSカンバンボードで、ボード・リスト・カード・ラベル・担当者・期限・チェックリスト・コメント・添付ファイルをTrello以上のUIで管理できます。PostgreSQL・Docker対応で最小リソースで動作します。
# docker-compose.yml: Planka
version: "3.8"
services:
planka:
image: ghcr.io/plankanban/planka:latest
restart: unless-stopped
ports:
- "1337:1337"
environment:
BASE_URL: https://kanban.example.com
DATABASE_URL: postgresql://planka:${DB_PASS}@planka-db:5432/planka
SECRET_KEY: ${SECRET_KEY}
DEFAULT_ADMIN_EMAIL: admin@example.com
DEFAULT_ADMIN_PASSWORD: ${ADMIN_PASS}
DEFAULT_ADMIN_NAME: Admin
DEFAULT_ADMIN_USERNAME: admin
# メール設定(任意)
SMTP_HOST: smtp.example.com
SMTP_PORT: 587
SMTP_NAME: kanban.example.com
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASS}
SMTP_FROM: noreply@example.com
depends_on: [planka-db]
volumes:
- planka_avatars:/app/public/user-avatars
- planka_attachments:/app/private/attachments
planka-db:
image: postgres:16-alpine
environment:
POSTGRES_DB: planka
POSTGRES_USER: planka
POSTGRES_PASSWORD: ${DB_PASS}
volumes:
- planka_pg:/var/lib/postgresql/data
volumes:
planka_avatars:
planka_attachments:
planka_pg:
# Python: Planka APIでカードを一括作成(スプリント計画の自動化)
import requests
PLANKA_URL = 'https://kanban.example.com'
def get_planka_token(email: str, password: str) -> str:
'''Planka JWTトークン取得'''
resp = requests.post(f'{PLANKA_URL}/api/access-tokens',
json={'emailOrUsername': email, 'password': password})
return resp.json()['item']['token']
def bulk_create_sprint_cards(token: str, list_id: str, user_stories: list) -> list:
'''スプリント計画のユーザーストーリーをPlankaカードに一括作成'''
headers = {'Authorization': f'Bearer {token}'}
results = []
for i, story in enumerate(user_stories):
resp = requests.post(f'{PLANKA_URL}/api/lists/{list_id}/cards',
json={'name': story['title'], 'position': (i + 1) * 65536},
headers=headers)
card = resp.json()['item']
# カードにラベル・期限を追加
if story.get('due_date'):
requests.patch(f'{PLANKA_URL}/api/cards/{card["id"]}',
json={'dueDate': story['due_date']}, headers=headers)
results.append({'story': story['title'], 'card_id': card['id']})
return results
機能比較表
| 比較項目 | Wekan | Focalboard | Planka |
|---|---|---|---|
| カンバン以外のビュー | △ | ✅ 5ビュー | △ |
| モダンUI | 中 | ✅ | ✅ 最高 |
| LDAP/OAuth | ✅ | △ | △ |
| Mattermost統合 | △ | ✅ | △ |
| GitHub Stars | 19k+ | 22k+ | 9k+ |
カンバンツールはその他カテゴリ/categories/miscのプロジェクト管理ツール(Plane/OpenProject)と組み合わせてエピック→スプリント→カンバンカードの階層的なタスク管理を実現します。DevOpsカテゴリ/categories/devopsのCI/CDパイプラインとWebhookで連携してコードのデプロイ完了→カードを自動的に「完了」リストに移動するような自動化を実装します。
FAQ
Q. WekanのWebhookでSlack通知を設定するには?
A. WekanのBoard設定からWebhook URLを登録してカード作成・期限切れ・担当者追加時にSlackに通知します。設定: ①Wekanボード→メニュー→Board Settings→Webhooks→Add Webhook②URLにSlack Incoming Webhook URL(https://hooks.slack.com/services/...)③トークンとタイプを設定→Save④テスト: カードを作成→Slackチャンネルに通知が届くか確認。カスタムWebhook: CARD_OPENED_WEBHOOK_ENABLED=true環境変数でカード開封時にもWebhookトリガー→WEBHOOKS_ATTRIBUTESで送信するフィールドを指定(cardTitle・listTitle・memberUsernames等)。n8nとの統合: n8nのWebhook受信ノードでWekanのWebhookを受け取り→条件分岐で「期限3日前のカード」→Slackリマインダー・担当者へのメール送信を自動化。
Q. Focalboardのカレンダービューでプロジェクトスケジュールを管理するには?
A. FocalboardのDate/DateTime型プロパティを追加してカレンダービューを有効化するとタスクをカレンダーで可視化できます。設定: ①Board→Properties→Add Property→Date(開始日)・DateTime(期限)を追加②View→Add View→Calendarを選択③「Date Property」に作成した日付プロパティを設定④カレンダービューでタスクカードがドラッグ可能→日付変更がカードに反映。フィルタリング: カレンダービューのFilter→Assigneeで担当者別フィルター→個人のタスク一覧をカレンダーで表示。テンプレート: Focalboardのプロジェクト管理テンプレート(Task Tracker・Meeting Agenda・Product Roadmap)からスタートして既存の定義済みプロパティ・ビューを活用。
Q. Plankaを既存のGitLabとWebhookで連携するには?
A. GitLabのWebhookとn8nまたは自作スクリプトを経由してGitLab Issue→Plankaカードを自動作成・ステータス同期します。実装: ①GitLab Project→Settings→Webhooks→Issue Events・Pipeline Eventsにチェック→WebhookURLにn8nのWebhookURL②n8nワークフロー: GitLab Webhookノード→Switch(issues.action=opened/closed)→Planka APIノード(ジャー作成: POST /api/lists/{list_id}/cards・移動: PATCH /api/cards/{card_id})③GitLab Pipelineイベント: statusがsuccess→Planka カードを「In Review」リストに移動→failed→「要修正」ラベルを付けるルール設定。双方向同期: Plankaカードの移動イベント→GitLabのIssueにコメント追加→開発者がGitLabを見ていてもPlankaの状態変化を把握できる。
Q. Wekan・Focalboard・Plankaのどれを選ぶべきですか?
A. LDAP/SSO・企業認証・Trello完全互換ならWekan、カンバン+テーブル+カレンダー+ガントの多ビュー・Mattermost統合ならFocalboard、最もモダンなUI・シンプル・Docker最小構成ならPlankaが向いています。Wekan優位: ①LDAP・SAML・OAuth2対応→企業のディレクトリサービスとのSSO統合②スウィムレーン(ボード内の横軸グループ)対応→チーム別・優先度別の2次元カンバン③Trelloからのボードインポート機能→Trelloからの移行が最もスムーズ。Focalboard優位: ①5ビュー(Board・Table・Gallery・Calendar・Timeline)でタスクの見え方を自由に切り替え②Mattermostのプラグインとして統合→チャット×カンバンが1UIで完結③カスタムプロパティ(Select・Multi-select・Date・Person・URL等)で豊富なメタデータ管理。Planka優位: ①React SPA製の最高品質なドラッグ&ドロップUI→操作の体験がTrello以上にスムーズ②PostgreSQL+Dockerで最小・高速・安定した動作③APIが整備されていて自動化スクリプト(Python)との統合が容易。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| LDAP/SSO・Trello移行・企業向け | Wekan |
| 多ビュー・Mattermost統合・カスタムプロパティ | Focalboard |
| モダンUI・シンプル・Docker最小構成 | Planka |