Portfolio
WorksArticlesAboutTrainingContact
← Works一覧に戻る
Web App/公開日: 2026-10-25

VBAカレンダーアプリのWeb化(総合実習)

デスクトップ依存のExcel VBAカレンダーを、マルチデバイス対応・データ共有可能なモダンWebアプリケーションへと再構築する総合実習プロジェクト。

#Astro#TypeScript#React#業務効率化#VBA
VBAカレンダーアプリのWeb化(総合実習)
PROJECT OVERVIEW & SCOPE
担当領域 (Role)要件定義 / UI設計 / フロントエンド実装(TypeScript・React)
制作期間 (Duration)2026年10月〜現在(開発中)
開発体制 (Team)個人開発(総合実習)
PROBLEM / 課題

デスクトップExcel依存によるマルチデバイス非対応、ファイル分散によるデータ共有・同時編集の限界。

SOLUTION / アプローチ

React + TypeScriptによる状態管理設計とレスポンシブUI、祝日探索アルゴリズムのO(1)最適化で高速なWebカレンダーを実現。

1. プロジェクトの背景と目的

職業訓練校(ITスペシャリスト養成科)で制作した「Excel VBAによるカレンダーアプリ」は、デスクトップ環境で手軽に動作する反面、以下の課題を抱えていました:

  • マルチデバイス非対応: スマートフォンやタブレットからの閲覧・入力ができない。
  • データ共有の制約: ファイル単位での管理となり、複数人によるリアルタイム更新が難しい。
  • UI/UXの限界: シート操作に依存するため、現代的なWebインターフェースに比べ操作感に制限がある。

これらの課題を解決し、「現場の業務効率化ツールをモダンWeb技術で再構築・進化させる」 ことを目的に、本総合実習プロジェクトを立ち上げました。


2. システムアーキテクチャ・技術選定

graph LR
    subgraph Client
        Browser["モダンブラウザ (PC / Mobile)"]
        UI["React + TypeScript (カレンダーUI)"]
    end
    subgraph Logic
        State["状態管理・日付計算ロジック"]
        Algo["祝日判定 O(1) ハッシュテーブル"]
    end
    subgraph Data
        Storage["永続化ストレージ (API / LocalStorage)"]
    end
    Browser --> UI
    UI --> State
    State --> Algo
    State --> Storage
  • フロントエンド: TypeScript, React, Tailwind CSS
  • アーキテクチャ選定理由:
    • 日付計算やイベント管理における「状態管理(State)」を整理して扱うため、型安全な TypeScript とコンポーネント指向の React を採用。
    • Javaの学習を通じて得たオブジェクト指向やクラス設計の考え方を、TypeScriptのデータモデル設計(EventModel, DateUtil等)の整理に活かしました。

3. 工夫した点と課題解決

① 祝日判定と月切替の高速アルゴリズム

VBAではセル参照で処理していた祝日マスタ照合を、クライアント側でSet(ハッシュテーブル)を用いて $O(1)$ の探索時間で判定するアルゴリズムへと最適化しました。

② レスポンシブなグリッドレイアウト

PC画面での月表示(7x5グリッド)から、スマートフォンでの縦スクロール週・アジェンダ表示へとシームレスに切り替わるCSS Grid設計を行いました。


4. 今後の展望

  • ユーザー認証機能(OAuth)の導入
  • バックエンドDB(Cloudflare D1 / Supabase等)との同期機能追加