2026-04-14_#1189_シフト表をGoogleカレンダーに手入力するのがダルすぎて、アプリを自作した
「Googleカレンダーに予定を入れる際、紙の予定表と見比べて手入力していませんか?」
私もそうでした。
これが思ったより本当に面倒です。私は苦手な作業の1つです。
1日登録がずれる、重複して登録することが積み重なると、入力することに対して嫌だな、面倒だなというストレスを大きく感じます。
私の場合は、仕事のシフト表の写真データを見ながらGoogleカレンダーに手入力していました。
ほぼ毎月30回分のスケジュールを手作業でGoogleカレンダーに入力していました。
時間としては10分程度のことですが、ただの作業なのでその10分がもったいないです。
これを自動化できないかと思っていました。
voicyパーソナリティの木下さんの放送でClaude Codeを利用した自分用のアプリ開発について話をされていました。
こちらを元にClaude Codeを導入し、課金してバイブコーディングでシフト表自動入力アプリを作成しました。
自作アプリの概要
シフト表自動入力アプリは、写真に取ったシフト表から、自分のシフトを判別し、それをGoogleカレンダーに一括して登録させるアプリです。
私のスキルレベル
Claude Codeでバイブコーディングする前のスキルは以下のとおりです。
Excel、Word、PowerPointの基本的な作業はできる
Excelの関数はある程度使える(countifとか)
病院薬剤師時代(今から10年前くらい)に市販のExcelVBAの本を読んで、医薬品の質問・回答をExcelに登録するフォームを作成(マクロで)
マクロを触ったが本当に基礎的な程度に留まる
プログラミングについては未経験(C言語など、言語に違いがあるのはわかる程度)
Claudeとの対話
アプリを作る前の定義要件
シフト表自動入力アプリについての構想はありました。ただ本当にそれが自作アプリで実現可能なのかはわかりませんでした。
Claude Codeで実際にCodeを書いてもらう前に、私の考えがどうやって実現可能なのかをClaudeと会話しながら進めました。
あなたは超一流のプログラマーです。個人的に使うアプリを開発したいと思います。自分の所有のノートPCもしくはスマホで動くアプリを開発したいです。以下のアプリ開発の実現可能性を厳し目に判断してください
<私のアプリ開発経験> なし、EXCELVBAでマクロを作る程度、そのマクロも簡単なもの
<内容> スマホの写真もしくはPDFデータより、シフト表をGoogleカレンダーに自動入力させる 画像データから私の名前だけを判別し、シフトを抽出する シフトは、◯、☓、△、◇勤務があり、それぞれ時間が以下のように決まっています。
休:休み 有:有給休暇 空白:休み
上記の内容に基づいてGoogleカレンダーに入力、さらに上記それぞれ色分けしているので、そのルールに従って、Googleカレンダーに自動入力
一度登録前に、確認画面を表示し、修正できるようにしたいです。
claude codeでバイブコーディングで作成できますか?
上記のようなプロンプトでClaudeに投げかけると以下の回答がありました。
下記は実際の返信内容です。
Claude Codeでのバイブコーディング評価
結論:「十分に実現可能です」。
唯一の手作業はGoogle Calendar APIの初期設定(Google Cloud Consoleで認証情報を取得する作業)で、これは30分程度で完了します。それ以外はClaude Codeへの日本語指示だけで進められます。
Claudeから実現可能と聞いて、私でもできそうだなという希望が見えてきました。
エラーとの戦い
①Google Cloud ConsoleでのAPI設定
Google Apps Scriptを使ったシフト管理ツールを作ることになりました。しかし、早速ここで1つ目のエラーに遭遇しました。Google Cloud ConsoleでのAPI設定のエラーです。
Google Cloud ConsoleでのAPI設定をClaudeから指定されました。
その指示通りやってみると、なんと請求先アカウントの登録を求められて先に進めませんでした。
Claude Codeにも課金したし、またさらに何か課金するのかと、結構面倒だなという思いがよぎりました。
ここでなんとかできないと先に進めないと思い、現状をClaude Codeに相談しました。
Google Apps Script(GAS)に切り替えることを提示されました。これにより完全無料・クレジットカード不要で実現できました。
最初からそういってほしかったと感じた場面です。
②Drive APIのエラー
Drive.Files.insert is not a function
上記のエラーコードが何を意味しているのかわかりませんでした。ただ動かないことはわかります。
ここでもClaudeに現状を説明しました。
Claude Codeが最初に生成したコードが「高度なサービス(Drive API)」を使う実装になっていました。しかしGASの標準機能だけでは動かない書き方でした。
解決策として、Claude Codeに「高度なサービスを使わずに標準機能だけで実装し直して」と指示して修正しました。
使用するサービスを指示しないと、いきなり高度な技術を利用するのかと驚きを感じました。
③漢字の異体字問題
日本語特有の問題にぶち当たりました。同じ読み方でも環境依存文字などを含めると複数ある漢字があります。
ちょうど私の名前にそのような漢字が含まれていました。
シフト画像データをアップしても、Claude Code内での指示が間違っていたのでうまく機能しませんでした。
「異体字を同一視する」処理と「部分一致(苗字だけでも一致)」の処理を追加させ、対処しました。
この漢字表記問題は、作る前から発生しそうだなと思っていました。
実際に発生してみるとやっぱりなと感じました。
このような細部に関わる指示を最初からすべきでした。
④OCRでシフトが一部しか取れない
ここが一番の難関でした。
OCRでシフト表を読み取っても、30日分あるはずのシフトが5日分しかスプレッドシートに書き込ませんでした。
画像データ自体、スキャナーで読み込ませたもので不鮮明なところはありません。
どうしてこんなに認識率が良くないのかと疑問に感じていました。
Claude Codeに実際のOCRテキストと実際のシフト表の内容を両方伝えて、日付とシフトコードの対応付けロジックを改善してもらいました。
上記の作業だけでもClaudeと4往復程度やりとりをしました。
私の目にはシフト表がしっかり見えているのにOCRでは全く見えていないのかと不思議に感じました。
OCRの限界とセキュリティの穴に気づく
OCRの限界
先ほどの4つ目のエラーにあるようにOCRではシフト表を100%読み取ってくれません。
もともとのシフト表はExcelで作成されているものの、職場外に持ち出せないため、画像データとして取得しています。
今回、スマホカメラアプリではなく、Canonのスキャナーで読み込ませたデータを利用しました。
30日中19日のシフトデータを認識でき、認識率は63.3%(19/30)でした。
この認識率は私の想定よりも低いものでした。
私の予想では80%程度読み取れると思っていました。手入力で修正するのはごくわずかだと思っていたので、OCR技術自体がまだまだだと感じました。
OCRでほぼすべてのデータを取得ではなく、OCRで読み取れる範囲で取得、残りは手動で一括して修正という方式に変えました。
セキュリティの穴
今回、Claude Codeを利用し、コードは書いてもらう形を取りました。
Claudeと話しながらアプリ作成ができるのはとても強力です。
しかし、実際にアプリがどうやって動いているのかを知らないまま自作アプリを使うのは危険です。
私は、アプリ作成後にClaudeに今回のアプリはどういった原理で動いているのか、どういった手順でアプリを作成したのかを高校生にもわかりやすいように説明するように求めました。
また、私のGoogleドライブのデータを利用するのでセキュリティについて気になりました。
セキュリティ上の問題点がないかをClaudeに指摘してもらいました。
Claudeから以下の回答がありました。
GASに広範な権限を与えている
権限リスク
Googleドライブ全ファイルの読み書き→シフト表以外のファイルも操作できる状態
Googleカレンダーの全操作→既存のイベントを削除・変更できる状態
上記のセキュリティに対して、私として下記の対策を行うようにClaudeに指示しました。
Googleスプレッドシート→シフト関連のみに限定
対策として「同じ日に同じタイトルのイベントがあれば追加しない」という重複チェックに変更
このように自作アプリでもセキュリティの穴は存在します。
構想があれば自作アプリができる時代に
今回、Claude Codeでバイブコーディングしてみました。シフト表自動入力アプリの構想が以前からあり、これを今回実現することができました。
Claude Code、Claudeによりアプリ開発のハードルが低くなりました。
構想があれば、自作アプリができる時代になりました。
次回は、パーソナルジムの予定を一括でGoogleカレンダーに登録させるアプリを作りたいです。
