1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【 Gemini API ×ローコード】「未来の自分を甘やかす」最強ツール

1
Last updated at Posted at 2025-10-17


はじめに

エンジニアの三大美徳は「怠惰・短気・傲慢」...ならば、週報作成などという毎週繰り返される退屈な作業は、コードに押し付けるのが正義ではないでしょうか?

「今週何やったっけ…」と記憶を辿る時間、報告書のために日本語を整える時間、全てがもったいない!そんな非生産的な業務を撲滅すべく、Gemini APIを使って日々の記録から週報作成までを1フォームで完結できる最強ツールを作り上げましたので共有いたします。


使用ツール

  • Gemini API
    文章作成用のAIです。今回はgemini-2.5-flashを使用します。
  • SPIRALver.1
    DB・フォーム構築用のローコードツールです。
    どちらも無料で使用できますので(もちろん課金要素はありますが)とっつきやすいかと思います。

▽SPIRALのトライアルはこちらから!


構築方法

全体の流れはこんな感じです。
①DB・フォームを発行
➁APIキーを取得
③フォームにAPIを追加

では、具体的な手順を解説します。

① DB・フォームを発行
 まずは、 SPIRALver.1を使って日々の業務記録を溜めておくためのDBと、入力用のフォームを用意します。
 ローコードなので、ものの数分で発行できます。

▼ DBの項目例

  • 日付
  • 案件名
  • 顧客名
  • 進捗内容
  • 問題点
  • 次のアクション

具体的な発行方法はこちらをご覧ください。

次に、発行されたフォームの入力ページに手を加え「日々の進捗登録」と「週報作成」を1つの画面で切り替えられるようにします。

デフォルトで発行されるフォームは日々の進捗記録用にできるので、切り替えた先のフォームは自力で作成します。こんな感じ↓

image.png

image.png

ちなみにデザインはいくらでも編集できますので、気のすむまで編集してください。
➁APIキーを取得

  • Gemini APIを取得します。
    Google AI StudioにGoogleアカウントでアクセスします。
  • 画面左側の「Get API key」メニューをクリックし、「Create API key in new project」ボタンを押せば、キーが生成されます。

※※「Vertex AI API」が有効になっているか、請求先アカウントがリンクされているかを必ず確認してください。無料枠でも請求先をリンクさせる必要があります。

③フォームにAPIを追加
先ほど作成したフォームの入力ページの先頭に、以下のコードを追加してください。


<?php //<!-- SMP_DYNAMIC_PAGE DISPLAY_ERRORS=ON NAME= --> //おまじない?> 
<?php require_once('report/API.php'); // APIキーが格納されたファイル ?>
<?php
// 年・月・日を取得 $start_date = $_POST['start_date'] ?? null; $end_date = $_POST['end_date'] ?? null;
// 週報生成結果を格納する変数 $weekly_report = "";
// 開始日と終了日が指定されている場合のみ処理を実行
 if ($start_date && $end_date) {
// ▼ ここからSPIRAL独自のコードが混じっています。
 $MstDB = $SPIRAL->getDataBase("reportDB"); // DB呼び出し
 $MstDB->addSelectFields("f003536834", "f003536835", "f003536836", "f003536837", "f003536838", "f003536839"); // 取得したい項目の差し替えキーワード
 $MstDB->setLinesPerPage(500); // おまじない
 $Mst = $MstDB->doSelect(); // おまじない

 $view_data = [];
  for ($i = 0; $i < $Mst["count"]; $i++) { 
  $raw_date = $Mst["data"][$i]["f003536834"];// SPIRALの仕様上、doSelectの結果は”data”の中に格納されます。 
  $formatted_date = preg_replace('/(\d{4})年(\d{1,2})月(\d{1,2})日/', '$1-$2-$3',  $raw_date);
     $current = strtotime($formatted_date);
     $start = strtotime($start_date);
     $end = strtotime($end_date);
        if ($current !== false && $start !== false && $end !== false) {
       if ($start <= $current && $current <= $end) { 
       $view_data[] = $Mst["data"][$i];
       } 
        } 
     }
// ▲ ここまで独自コード含む
if (!empty($view_data)) {
$report_data_string = ""; $field_map = [ "f003536834" => "日付", "f003536835" => "案件名", "f003536836" => "顧客名", "f003536837" => "進捗内容", "f003536838" => "問題点", "f003536839" => "次のアクション" ];
foreach ($view_data as $data) { 
 foreach ($data as $key => $value) {
   if (isset($field_map[$key]) && !empty($value)) {
    $report_data_string .= $field_map[$key] . ": " . $value . "\n";
   } 
 } $report_data_string .= "------------------------\n";
 }
// ▼ API連携部分 
// Gemini APIにリクエストを送信する
 // ★ご自身のAPIキーを別ファイルから呼び出し 
$apiKey = GEMINI_API_KEY;
$model = 'gemini-2.5-flash';
$api_url = "https://generativelanguage.googleapis.com/v1/models/{$model}:generateContent?key={$apiKey}";
$prompt = "あなたは優秀なアシスタントです。\n" . "以下の業務報告データを元に、上司に提出するための丁寧な言葉遣いの週報を作成してください。\n\n" . "フォーマットは以下のように、見やすくおねがいします。\n" . "件名:週報({$start_date}{$end_date}\n\n" . "■ 今週のサマリー\n(全体の状況を簡潔にまとめてください)\n\n" . "■ 各案件の進捗状況\n・[案件名]\n - 進捗:[進捗内容を記載]\n - 課題:[問題点を記載]\n - 来週の予定:[次のアクションを記載]\n\n" . "■ 課題と対策\n(全体を通しての課題や、特筆すべき問題点とその対策をまとめてください)\n\n" . "■ 来週の予定\n(全体の来週の予定をまとめてください)\n\n" . "---\n元データ:\n{$report_data_string}";
$data = [ 'contents' => [ [ 'role' => 'user', 'parts' => [ ['text' => $prompt] ] ] ] ];
$headers = ['Content-Type: application/json'];
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch);
if ($http_code == 200) { $result = json_decode($response, true); 
 if (isset($result['candidates'][0]['content']['parts'][0]['text'])) { 
  $weekly_report = $result['candidates'][0]['content']['parts'][0]['text']; 
 } else {
   $weekly_report = "エラー:Gemini APIから予期せぬ形式の応答がありました。\n\n" . print_r($result, true);
  } 
} else {
  $weekly_report = "エラーが発生しました。APIからの応答がありません。(HTTP CODE: {$http_code})\n" . $response; 
}


// ▲ API連携部分 
} else {
  $weekly_report = "指定された期間に該当するデータがありませんでした。"; 
 }
 } 
?>

DB名と差し替えキーワード部分( f003536834などの記載があるところ)のみご自身が発行されたものに書き換えてください。

PHPに関してですが、通常のPHPとは違いSPIRAL独特の書き方があるので、疑問に思ってもスルーしてください。

気になる方はこちら→ Docs For Class SpiralDataBase

以上で完成となります。
実際に使ってみるとこんな感じです。

image.png

期間を指定してボタンを押すと…

image.png

フォーム上に週報が生成されます。
ちなみに、私が実際にフォームから登録した内容はこれ↓

image.png

範囲外のデータは除外され、こんな雑な記録から立派な週報を作成してくれます。
一度作ってしまえばAIに命令を出す時間すら削減できるので、とってもおススメです!


おわりに

いかがでしたでしょうか。

今回は「いかに楽をして、未来の自分を甘やかすか」という一点に全力を注ぎ、ローコードと生成AIを組み合わせた週報自動化ツールを構築しました。

数時間で構築できますので、よければ参考にしていただけると幸いです。
このツールが皆様の定時退社への第一歩になれることを願っています。


私がインターンしているスパイラル株式会社は、ローコードプラットフォーム、SPIRAL ver.1のトライアルアカウント無償提供しています。このアカウントの記事でも紹介するように、たくさんの機能ございます。

▶︎ フォーム
▶︎ 認証エリア
▶︎ ログイン
▶︎ メール送信
▶︎ カスタムプログラム

などの作成できますので、ぜひ試してみてください!!

そして、今チームでトライアル登録者向けに、オンボーディングコンテンツを作成しています。SPIRAL ver.1にご興味のある方、ぜひこちらもご覧ください👇

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?