AI

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

機能比較表

比較項目WekanFocalboardPlanka
カンバン以外のビュー✅ 5ビュー
モダンUI✅ 最高
LDAP/OAuth
Mattermost統合
GitHub Stars19k+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

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。