🪑

ワンクリックで会議の座席表を作成する「Excel-Seating-Chart-Maker」を開発した話

に公開

🎯 この記事の対象読者

  • 日々の業務に追われる日本の自治体職員の方々
  • 「もっとこうだったら楽なのに…」という課題意識を持つ、すべての現場担当者
  • VBAや身近なツールで業務改善に挑戦したいと考えているDX推進担当者、エンジニア
  • AIをどう業務に活かせばいいか、具体的な事例を探している方

💡 この記事を読むと得られること

  • 面倒な座席表作成をワンクリックで終わらせる具体的な方法
  • 普段使いのテクノロジー(例:VBA)と生成AIを組み合わせて、楽を生み出す開発プロセス
  • 日常業務に潜む「小さな違和感」を、DXの大きな一歩に変えるためのヒント
  • すぐに使えるExcel座席表作成ツールの紹介と、その背景にある想い

🚀 はじめに:なぜこの記事を書いたか

「自治体のDX」と聞くと、なんだか壮大なシステム導入や専門的な話に聞こえませんか?でも、私が本当に届けたいのは、現場で働く皆さんが「ああ、今日の仕事、ちょっと楽になったな」と実感できる、ささやかだけど確かな変化です。

ふと、考えたんです。自治体では毎日、無数の会議が開かれている。その準備、当たり前のようにやっているけど、結構大変じゃないか?と。特に「座席表」。活発な議論をしてほしい会議なのに、思考停止でいつものスクール形式の座席表をコピペしてちょい修正…。これって、本当は変えたいけど、変える手間が大きすぎて諦めている「現状維持」の典型例じゃないか、と。

この「変えるのが面倒」という巨大な壁。これまでは根性で乗り越えるしかありませんでした。でも、今は違います。私たちには「AI」という最高の相棒がいます。

この記事は、私がAIを相棒にして、面倒な座席表作成を“ポチッと”終わらせるツールを開発した物語です。この小さな取組が、皆さんの職場に潜む「小さな違和感」に目を向け、皆さん自身がAIを味方につけて解決へ踏み出す、そんなきっかけになれば最高に嬉しいです。


😫 課題:座席表作成のつらい現実

会議の目的によって、最適な座席のレイアウトは変わるはず。ブレストなら島型、報告会ならシアター形式…。でも現実は、過去の誰かが作ってくれたExcelやパワポのデータを「えいやっ!」で使い回しをしたりしていませんか?参加者の人数が変われば、手作業で机と椅子をコピペして、机といすを手作業で増やしてレイアウト調整…。考えただけで気が遠くなります。

そんな、涙ぐましい非効率なフローを図にしてみました。きっと「あるある!」と頷いてくれるはず…。

会議の座席表を作成する時のフロー図


✨ 解決策:エクセル座席表メーカー「excel-seating-chart-maker」

このつらさを解消するために開発したのが、ワンクリックでプロ級の座席表を自動生成するExcelツール「excel-seating-chart-maker」です!

項目 内容
ツール名 excel-seating-chart-maker
概要 Excelシートに会議名、日時、人数、レイアウト形式(スクール、シアター、ロの字、コの字、島型、対面)などを入力してボタンを押すだけで、印刷に最適化された座席表を自動で描画します。
利用シーン 定例会議、研修会、住民説明会、イベントなど、あらゆる座席表作成の場面
GitHubリポジトリ https://github.com/HosoyaYusaku/excel-seating-chart-maker

🛠️ 技術スタックと選定理由

技術選定は、いつもながら「とにかく現場で使えること」を最優先にしています。

技術 役割 選定理由
VBA 開発言語 自治体職員にとって最も身近で、追加の環境構築が一切不要なExcel上で動くことが絶対条件でした。レガシーと言われがちですが、圧倒的な普及率こそが現場における最大の武器です。文化に応じて適用する技術を選ぶことが大事で、枯れているテクノロジーが一番使ってもらえると考えました。

📜 コードのハイライト

このツールの、机(Table)と椅子(Chair)を描画する部分のコードです。VBAでここまで出来るのか!とワクワクしてもらえたら嬉しいです。

Private Sub AddTable(ByVal ws As Worksheet, ByVal L As Double, ByVal T As Double, ByVal W As Double, ByVal H As Double)
    Dim shp As Shape
    Set shp = ws.Shapes.AddShape(msoShapeRectangle, L, T, W, H)
    With shp
        .Fill.visible = msoTrue: .Fill.ForeColor.RGB = TableColor()
        .Line.visible = msoTrue: .Line.ForeColor.RGB = BorderColor(): .Line.Weight = 1
    End With
End Sub

Private Sub AddChair(ByVal ws As Worksheet, ByVal L As Double, ByVal T As Double, ByVal W As Double, ByVal H As Double, ByVal num As Long)
    Dim seat As Shape, back As Shape

    Set seat = ws.Shapes.AddShape(msoShapeRoundedRectangle, L, T, W, H)
    With seat
        .Fill.visible = msoTrue: .Fill.ForeColor.RGB = SeatColor()
        .Line.visible = msoFalse
        .TextFrame2.VerticalAnchor = msoAnchorMiddle
        .TextFrame.HorizontalAlignment = xlHAlignCenter
        ZeroTextMargins seat
        With .TextFrame2.TextRange
            .Text = CStr(num)
            .Font.name = "Yu Gothic UI"
            .Font.Size = AutoFontSize(CStr(num), W, H)
            .Font.Fill.ForeColor.RGB = vbBlack
        End With
        SafeShadow seat, True
        SafeSoftEdge seat, 0.5
    End With

    Dim backH As Double: backH = H * BACKREST_RATIO
    Set back = ws.Shapes.AddShape(msoShapeRectangle, L + W * 0.15, T - backH * 0.75, W * 0.7, backH)
    With back
        .Fill.ForeColor.RGB = BackColor()
        .Line.visible = msoFalse
        SafeSoftEdge back, 0.5
    End With

    On Error Resume Next
    ws.Shapes.Range(Array(seat.name, back.name)).Group
    On Error GoTo 0
End Sub

椅子の座面と背もたれを別々の図形として描き、最後にグループ化することで立体感を出しているのがミソ(こだわり)です。


💻 使い方

① 環境構築

不要です! 必要なのは、マクロが有効なExcelだけ。
GitHubリポジトリからファイルをダウンロードし、READMEの手順に従ってVBAモジュールをインポート、「設定」シートにシートモジュールを設定すれば、すぐに使えます。

⚠️【重要】ご利用前のたった一つの注意点
このツールを安全にご利用いただくために、必ずお守りいただきたい大切なことが一つだけあります。

必ず「新規作成した、空のExcelブック」で作業を始めてください。

ツールの初期設定を行うマクロは、ブックを最適な状態に整えるため、「設定」「座席表」「資材置き場」という名前以外のシートを自動的に削除する仕様になっています。
業務で使っている既存のファイルで実行してしまうと、大切なデータが消えてしまう危険性がありますので、十分にご注意ください。

② ツールの実行

  1. 設定シートに必要な情報(会議名、人数、レイアウト形式など)を入力します。
  2. 「座席表を作成!」 ボタンをポチッとクリック!
  3. これだけで、座席表シートにA4印刷に最適化されたキレイな座席表が自動で生成されます。

③ 出力結果(Before / After)

  • Before: 手作業で時間をかけて作った、ただ四角が並んでいるだけの無機質な座席表。
  • After: わずか数秒で、会議の目的に合った、見やすくプロフェッショナルな座席表が完成!

このツールを活用することで空いた時間を使えば、もっと大事な「会議の中身」を考えることができます。
また、この〇〇会議は、参加者に会話をしてほしいから、いつもの「スクール形式」ではなくて、「島形形式」や「対面形式」が良いかもしれない、と座席表をサクッと作って、それを見ながらがら内部で議論をすることで、前例踏襲でない戦略的な会議の使い方にも繋がると思っています。


🧗 開発でつまづいた点と解決策

開発は決して順風満帆ではありませんでした。特に苦労したのはこの2つです。

  • 課題1:人間にとって自然な「座席番号」って何だ?

    • 原因・解決策: ただ連番を振るだけだと、島型やコの字形式のときに番号が飛び飛びになり、人間が見て非常に分かりにくくなりました。そこで、各レイアウトごとに「人間が目で追ったときに自然に感じる順番」を徹底的にシミュレーション。例えば島型なら渦を巻くように番号を振るなど、直感的なルールをアルゴリズムに落とし込むことで、この違和感を解消しました。
  • 課題2:VBAで図形を描くコードが、どうしても動かない…!

    • 原因・解決策: VBAでの図形描画は、座標計算などが複雑で、正直なところ心が折れかけました。そこで、諦めずに2つのLLM(ChatGPTとGemini)を壁打ち相手にしたんです。片方が出したコードのバグをもう片方にデバッグさせたり、抽象的な描画イメージを伝えて具体的なコードを両者に出させて比較したり…。まるで2人の優秀なアシスタントがいるかのようにAIを使い倒すことで、最終的に動くコードを完成させることができました。AIは魔法の杖ではありませんが、最高の「相談相手」になってくれます。

🔭 今後の展望と野望

このツールは、座席表作成というニッチな課題を解決する小さな一歩に過ぎません。僕の本当の野望は、このツールを作成した発想を通じて「AIと身近なツールを組み合わせれば、現場の課題は自分で解決できるんだ!」という成功体験を、多くの自治体職員に届けることです。

どんなに素晴らしいSaaSを導入しても、現場には必ず「あと一歩」のところで手作業が残りがちです。その「最後の一押し」を、VBA、GASなどの身近な武器とAIの力で乗り越えていく。そんな、職員一人ひとりが主役のボトムアップDXが広がるきっかけを、このツールが生み出せたら、開発者としてこれ以上の喜びはありません。


🔚 おわりに:小さな一歩が、大きな変化を生むと信じて

日々の業務に追われていると、「これは非効率だ」と感じても、見て見ぬフリをしてしまうことがあると思います。私もそうでした。でも、生成AIの進化で時代は変わりました。かつては途方もない労力が必要だった業務改善が、今や個人の「やってみよう!」という情熱で実現できるようになったのです。
これまで技術習得に数年かかったようなことが、あっという間に自分の手元で実現までこぎつけることが可能な世界になりました。
この座席表作成ツールが、あなたの心に眠る「こうだったら良いのに」という想いを掘り起こし、行動に移すための小さな勇気となることを、心から願っています。
ぜひGitHubからダウンロードして、まずは1回作ってみてください。きっと「もう手作業には戻れない」と感じるはずです。
さあ、一緒に現場からDXを始めましょう!

Discussion