はじめに
こんにちは。開発未経験、新卒エンジニアです。本記事は、配属直後の未経験者が個人の業務効率化を目的に試行錯誤した一例です。その前提を認識していただいた上でお読みいただけますと幸いです。
開発というものに本格的に触れてからまだ2か月も経っていない6月下旬。私は1日の予定を1度にカレンダーへ転記できるシステムを作成できてしまいました(※)。この記事では、未経験の新卒エンジニアでもAIを使うことでシステムを1つ実用まで持っていけてしまったこと、開発を通して学んだこと・考えたことについてお話ししようと思います。
※紹介するシステムは個人利用の範疇であり、タスク管理の効率化のみを目的として利用しています。
開発に配属になるまで
未経験といってもどれほどなのか。具体的には、プログラミング言語をひとつも見たことがないというレベル。有名なプログラミング言語の1つである 「Java」 は名前を聞いたことがある程度でした。意味はもちろん全然知りませんでした。そんなレベルの自分が人とのご縁もあって6月に開発へ配属になりました。そんな自分がなぜ開発しようとなったのか。次でお話しします。
なぜ未経験が開発を
なぜ開発をしようと思ったのか。これは完全に同期のおかげです。私はタスク管理が苦手で、長期間取り組む系のプロジェクトだとなおさらでした。そのため、研修でのタスク管理にも非常に苦労しました。何とかしなければいけないと考え、毎日手打ちでカレンダーにタスクと時間を入れていました。1つずついれていくのは面倒でしたが、しょうがないとも感じていました。それを見ていた同期が 「それをシステムでできれば、工数減らせそう。」 と一言。今まではこんなことを言われてもできないとあきらめていましたが、「自分も開発になったし、できるかもしれない。」と謎の自信がその時は湧きあがりました。こんなひょんなことから挑戦することになったカレンダー開発。
システムの概要
ここから実際に私が開発したシステムについて説明していきます。簡単に言えば、設計した1日の流れをカレンダーに自動転記し、予定作成の時間を削減するというものです。仕組みとしては、Googleスプレッドシート(以下GSS)に書き込んだ内容をGoogle Apps Script(以下GAS)を用いてGoogleカレンダー(以下、カレンダー)へ転記する流れになっています。
1、初期画面
ここに各種設定を行い、カレンダーを作成します。

2、日付と時間の設定
下に書いてある「稼働時間合計」は作成した予定の合計時間を表しています。
そのため、合計時間が働く時間帯を超過した場合はカレンダーを作成できません。調整が必要です。
また、残時間はタスクを作成する上で入れられる残りの分数を示しています。

3、既存予定時間の取り込み
「予定を同期する」ボタンを押下し、カレンダーの既存予定の分数だけを取り出しに行きます。
ここで、15分や45分の予定に関しては30分刻みに繰り上げて計上することで、スケジューリングしやすくしているのも、細かいですが工夫しているところです。
次に休憩時間、バッファ時間、ブロック時間を設定します。
時間は事前に登録しておくことでプルダウン選択できます。これらを指定することで、その時間帯は予定が入らないようにしています。
すべてを設定したのが以下の通りです。残時間が減っているのも同時にお分かりいただけると思います。

4、タスク入力
これまでの設定により、残り「390分」と表示されています。よって、これが0になるまでタスクを入れていけばよいです。
仕事内容は事前に登録しておけばプルダウンで選択するだけで設定可能です。
急なタスクに関しては「その他のタスク」を選択し、メモ欄に詳細を書くことで対応できます。
5、仮スケジュールの作成
ここで仮スケジュールを作成し、カレンダー転記前の確認を行います。
作成された仮スケジュールが以下の通りです。
画像のように、設定したタスクの時間が既存予定にかぶってしまっている場合は自動で分割してくれるよう設定してあります。
ここで確認が取れた後、カレンダーへの転記を行います。

6、転記完了
実際のカレンダーに転記を完了した状態が以下の通りです。
予定はオレンジ、休憩時間は緑に分かれて転記されていることがお分かりいただけると思います。

また、メモ欄に記載している**「仕事A」** などの文章に関しても、カレンダーに埋め込まれた予定のメモ欄に記載されています。
この機能があることによって単発の予定に関しても、「その他のタスク」を選択してメモ欄に内容を書くことで対応することが可能です。

開発を通して
このシステム開発は同期の言葉からやってみたことではあったものの、学んだことはたくさんあったと今振り返って思います。大きく分けて2つです。
①生成AIのパワー
まず実感したのは、生成AIの圧倒的なパワー。データの取得に対する権限の範囲や処理されている内容の確認は絶えず行っていたという前提を置いたうえで、プログラミングの基礎知識なんて皆無の未経験でも、やりたいことのイメージを自然言語でAIに伝えるだけで、システムとして動くものを作れました。これは間違いなく「凄さ」です。
しかし同時に、一種の「怖さ」も感じました。構造を深く理解していなくても動作するコードが生成されてしまいます。ブラックボックスのまま使い続けるのはリスクが高いし、いざエラーが起きたときにはお手上げ状態になりかねません。AIの出力をただ鵜呑みにするのではなく、吐き出されたコードの仕組みを少しずつ理解していく姿勢が必要だと痛感しました。
②今できることを考える
次にシステムに完璧を求めすぎてはいけないことも学びました。未経験の段階からすべてを完璧に遂行するのは非常に困難です。できる所とできない所が出てきたときに割り切ること。そして割り切ったときにその部分をどのようにフォローしていくのかも今後大事になっていくのではないかと学びました。
このシステムに関しては、システム自体にAIは組み込んでいません。すべて条件分岐で対応しています。そのため、構想段階で考えていた「過去の予定から最適なタスク時間を算出すること」や「タスクごとの時間を考慮して順番を変えること」は実現できていません。言ってしまえば不完全燃焼のシステムです。しかし、ギチギチで予定を立てられてしまわないように「ブロック時間」を設け、バッファ時間との差別化も行いました。
今持ち合わせている知識の中で、どのように機能を実現させていくのかに思考を巡らせることは今後の開発を進めていくうえでも大切になってくるのではないでしょうか。
おわりに
これは未経験エンジニアの戯言です。来年、再来年にこれを見たときに恥ずかしくなりそうなものです。しかし、未経験だからこそ気付けている点があるのかもしれません。そのため、この投稿は1年後に見返したいと思います。この投稿を最後まで見ていただいた方、ありがとうございました。今度記事を書く際には、成長を感じられるように頑張っていきます。
