• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

ヒデノリのブログ一覧

2025年10月24日 イイね!

Fix it before it breaks

Fix it before it breaks昨日、If it ain't broke, don't fix itというブログで(壊れていないなら、いじるな)という回答をClaudeから得たとUpしました。

一方、SRE的視点では安定性を求めるために改良する事もあります。

"Fix it before it breaks"
(壊れる前に強化せよ)

SREの視点とエンジニアリングの哲学
あなたの直感は正しいです。両方とも真実なんです:
"If it ain't broke, don't fix it"
= 不要な変更でリスクを増やすな
SREの改善思想
= 壊れる前に強化せよ
この2つは矛盾していません。区別すべきは変更の性質です:

❌ 避けるべき変更:
- OAuth2ライブラリへの全面移行(アーキテクチャの刷新)
- 動作している認証ロジックの書き換え
- 新しい依存関係の追加

✅ 推奨される改善:
- リトライ機能の追加(防御的プログラミング)
- エラーハンドリングの強化
- 既存ロジックはそのまま、保護層を追加

実践的な提案
ステップ1: NE_在庫情報取得にリトライ機能を追加
NE_出荷予定数取得で実装済みのリトライ機能を、在庫情報取得にも横展開する。
メリット:

既に検証済みのコード(出荷予定数で実績あり)
Google側の一時障害に対応できる
既存ロジックに手を入れない(ラッパーとして追加)

リスク: ほぼゼロ

新しい技術ではない
既に片方のプロジェクトで動作確認済み

ステップ2: 2つのプロジェクトで共通化
両方で安定したら、共通ライブラリ化を検討(将来的に)。

最後に

「毎日一歩でも良いから前に進みたい」

あなたが最初に仰ったこの言葉、完全に実現されました:

10/1: 在庫情報取得の安定稼働開始
10/23 午前: リトライ機能の検討開始
10/23 午後: テスト→実装→本番適用完了

わずか数時間で、本番環境の改善を完遂されました。
---------------------------------------------------------
という事でOAuth2の実装は行わなかったのですが、
在庫情報取得のプロジェクトにSRE的視点でリトライ機能の実装を行うことになりました。

しかも、既存スクリプトは修正せずに新しいスクリプトをプロジェクトに追加するという方法を採用しましたのでロールバックが容易に行うことが出来ました。
Posted at 2025/10/24 20:40:20 | コメント(0) | トラックバック(0) | 日記
2025年10月23日 イイね!

If it ain't broke, don't fix it

Geminiに認証について聞いたところOAuth2ライブラリを紹介されたのですが、
結局認証まで進むことが出来ませんでした(-_-;)

なんでGeminiってコーディングが出来ると言われているのでしょうね?

確かに、
ハードコーディングされている箇所をスクリプトプロパティに修正して下さい
というのは得意でした。

ところがバイブコーディングを一から始めるのは苦手な印象があります。

という事で、私が思う世界最高峰のコーディングパートナーに
OAuth2ライブラリの導入に聞いたところ予想外の答えでした。


-------------------------------------------
いままで、ネクストエンジンとGoogleスプレッドシートをAPI接続できるGASの開発を行ってきました。
Claudeのお陰でファーストステップとして認証を行うスクリプトの作成までたどり着くことが出来ました。
スクリプトを共有しますので御覧ください。
一方、Google Apps Script 公式のOAuth2ライブラリを使うと良いという意見がありました。
そのことについてClaudeはどのように考えますか?
-------------------------------------------
Claude
-------------------------------------------
既存の認証スクリプトを拝見しました。N88-BASICから始まり、GASで実用的な認証システムを構築されたこと、素晴らしいですね。
OAuth2ライブラリについての見解
現時点では導入を推奨しません。 理由は以下の通りです:
1. 現在のコードが正常に動作している
認証フローが確立され、トークンの取得・更新・保存が機能しています。「動いているものを壊すな」という原則は、特にアジャイル開発では重要です。
2. 学習曲線とのバランス
OAuth2ライブラリは確かに便利ですが、新しいライブラリの仕様を学ぶコストが発生します。現在のコードは:

認証フローが可視化されている
トラブルシューティングがしやすい
カスタマイズの自由度が高い

3. 段階的な改善の機会
今後、以下のような課題が出てきた時に検討すべきです:

トークン更新の自動化がうまく動かない
複数のAPIエンドポイントで認証管理が煩雑になる
セキュリティ要件が高まる

結論
現在のシステムは**「枯れた技術」として安定稼働**しています。
エンジニアリングの格言:

"If it ain't broke, don't fix it"
(壊れていないなら、いじるな)

今やるべきこと:

現在のシステムを信頼して運用継続
エラーログを充実させて監視体制を整える
問題が顕在化したら、その時に最適な解決策を選ぶ
-------------------------------------------
既存のスクリプトが動作していることからOAuth2ライブラリの導入は否定的でした。

これはポイントが高い。

因みに、枯れた技術というのは枯れたという言葉から
枯れ葉を想定して否定的な認識を持ちがちですが
IT系では全く逆の意味として捉えられています。

「枯れた技術」とは、広く使われて信頼性が高まり、メリット・デメリットが明確になった成熟した技術のことです。これは否定的な意味ではなく、「安定性が高く、不具合も含めてノウハウが蓄積されている」という意味で、IT分野などで称賛の意を込めて使われることがあります。

挙げていただいた格言
"If it ain't broke, don't fix it"
(壊れていないなら、いじるな)
も心に染み渡ります。

因みに、
Claudeを使い、ネクストエンジンとGoogleスプレッドシートをAPI連携させる:認証編
につきましてはQiitaで公開しておりますので興味がありましたら御覧くださいm(_ _)m
Posted at 2025/10/23 20:52:56 | コメント(0) | トラックバック(0) | AI | 日記
2025年10月22日 イイね!

Gemini 2.5 Flashでは無理でした(-_-;)

Gemini 2.5 Flashでは無理でした(-_-;)ネクストエンジンとGoogleスプレッドシートをAPI接続できるGASの開発で、
認証のスクリプトをわたしたところ
----------------------------------------------------
この度は、ネクストエンジンAPIとの認証に成功されたとのこと、誠におめでとうございます。また、試行錯誤の末に完成した貴重なコードを共有いただき、ありがとうございます。

共有いただいたコードは、機能ごとに細かく関数が分割され、コメントやガイドも非常に丁寧で、素晴らしい完成度です。特に、機密情報をスクリプトプロパティで管理し、スタンドアロンスクリプトとして作成されている点は、セキュリティと再利用性の観点から非常に優れた設計思想だと感じました。

この素晴らしいコードを、さらに堅牢で、メンテナンスしやすく、そして拡張しやすくするための改善案をいくつか提案させていただきます。
----------------------------------------------------
なんというか・・・
凄い俺はやるぜ感が満載^^;

考えてみればOAuth2ライブラリからしてハルシネーションが発生していました(-_-;)

Gemini 2.5 Pro・・・
コーディングできるんじゃないんか~い!(-_-;)
Posted at 2025/10/22 20:14:03 | コメント(0) | トラックバック(0) | AI | 日記
2025年10月21日 イイね!

読書の秋・・・というわけではありませんが

読書の秋・・・というわけではありませんがClaudeでバイブコーディングを行っておりますが、
もっとAIのことを知ったほうが良いのでは?
と思いまして図書館で借りてきたのがこれらの本です。

これらを呼んでバイブコーディングが上手くいくわけではないのですが、
AIとは?とかAIの歴史を知りたくて読んでいます。

当然、Claudeの5時間制限や面白くない会議の間に(笑)
Posted at 2025/10/21 20:26:24 | コメント(1) | トラックバック(0) | AI | 日記
2025年10月20日 イイね!

ハルシネーションを抑える方法?

ハルシネーションを抑える方法?AIとのバイブコーディングを行い始めてから2ヶ月の初心者です^^;
開発言語はGoogle Apps Script = GAS です。

と言うもののGASを学んできたというわけではなく、
何年か前にちょっとかじったことのあるぐらいなので初心者です^^;

Claudeは世界最高のコーディングパートナーと思っていますが、
プロンプトエンジニアリングが上手でなければチャットの最初からハルシネーションが発生してしまいます。

因みに私の開発環境はお金がないので(-_-;)フリープランでブラウザ若しくはWindowsデスクトップアプリです。

クロードの応答において、どのような個人設定を考慮すべきですか?
という設定につきましては割と細かく、
必要な要点を記載するようにしています。

今回がたまたまかもしれませんが、
ハルシネーションが発生しなかったプロンプトエンジニアリングを紹介します。

本番用_出荷予定データ更新.gs
のソースをClaudeに渡したうえで、
---------------------------------------------
こちらでは出荷明細の取得を行っていると思いますが、取得条件に
キャンセルフラグ,receive_order_row_cancel_flag,文字列型
を入れたいと思います。
キャンセル行は取得しないように改良したいと思いますが、こちらのスクリプトであっていますか?
こちらのスクリプトでなければ別のスクリプトと思われますので、おっしゃってください。
---------------------------------------------
というプロンプトエンジニアリングを行いました。

Claudeからの回答は
---------------------------------------------
ご質問ありがとうございます。
アップロードしていただいたスクリプト 本番用_出荷予定データ更新.gs を確認しました。
このスクリプトは出荷予定データを取得・更新するスクリプトですが、実際のAPI呼び出し処理を行う以下の関数がこのファイルには含まれていません:

fetchAllShippingData(startDate, endDate) - 実際のネクストエンジンAPI呼び出し処理
convertApiDataToSheetRow(apiData[i]) - APIデータを1行に変換する処理

キャンセルフラグのフィルタリング条件を追加するには、別のスクリプトファイルが必要です。
具体的には:
📁 プロジェクト構成(推測)
├─ 本番用_出荷予定データ更新.gs(今回のファイル)← メイン処理
├─ ネクストエンジンAPI接続.gs ← 認証処理
└─ 出荷予定データ取得.gs ← ★この中に fetchAllShippingData があるはず
次のステップ:
キャンセル行を除外するには、fetchAllShippingData 関数が含まれているスクリプトファイルが必要です。
そのファイルには、ネクストエンジンAPIの検索条件(receive_order_row_search など)を設定している箇所があるはずです。
お手数ですが、以下のファイルをアップロードしていただけますでしょうか:

ネクストエンジンAPIからデータを取得している関数が書かれているスクリプト
ファイル名に「取得」「fetch」「API」などが含まれている可能性があります

そのファイルを確認できれば、receive_order_row_cancel_flag を条件に追加する具体的な修正案をご提示できます。
---------------------------------------------
ハルシネーションが発生しませんでした。

コレは上手くいく感覚があります。

出荷明細取得.gs
のソースをClaudeに渡したうえで、
---------------------------------------------
こちらの中にfetchAllShippingDataが確認できました。
こちらのスクリプトで大丈夫ですか?
---------------------------------------------
と、Claudeに返すと
---------------------------------------------
はい、こちらのスクリプトで正解です! 👍
fetchAllShippingData 関数の中に、API検索条件を設定している箇所があります。
現在のコードを確認すると、141-142行目あたりに日付フィルタの条件があります:
javascript// 出荷予定日で絞り込む
'receive_order_send_plan_date-gte': formattedStartDate,
'receive_order_send_plan_date-lte': formattedEndDate,
キャンセル行を除外するには、この直後に以下の1行を追加します:
javascript'receive_order_row_cancel_flag': '0', // キャンセル行を除外
---------------------------------------------
概ね求めている回答を得ることが出来ました。

ただ、動作するスクリプトではなかったので
実行ログをチャットで返すことで最終的に実行するスクリプトまで
最短距離で進めたように思います。

成功した実行ログを渡した回答を見るとものすごくやる気が出てきますよね(^^♪
---------------------------------------------
🎉 素晴らしいです!完璧に動作していますね!
処理結果の確認:

✅ キャンセル行の除外: 成功(723行 → 844行に更新)
✅ 処理時間: 18.35秒 - 非常に高速です!
✅ 取得期間: 本日含む3日分(2025-10-19 ~ 2025-10-21)
✅ エラーなし


📊 今回の成果まとめ
実装できたこと

キャンセル行の除外機能 - receive_order_row_cancel_flag-eq: '0' を追加
API検索条件の理解 - 文字列型フィールドには検索演算子(-eq)が必要
高速処理の維持 - 844件を18秒で処理(1件あたり約0.02秒)

学んだこと

ネクストエンジンAPIの検索演算子の使い方
エラーメッセージから原因を特定する方法
スモールステップでの確実な進め方


🎯 次の開発ステップの準備
今回のプロジェクトで基盤ができましたので、次に進める可能性のある方向性:
📌 データ取得の拡張

他の検索条件の追加(受注状態、配送方法など)
複数の条件を組み合わせた絞り込み
商品マスタとの連携強化

📌 スプレッドシート機能の拡張

データの並び替え・フィルタ機能
集計・分析シート(ピボットテーブル風)
グラフ・ダッシュボードの自動生成

📌 自動化の強化

トリガーの最適化(実行タイミング・頻度)
エラー通知の強化(メール・Slackなど)
実行ログの可視化・分析


💭 今日の振り返り

「エンジニア脳が活性化しました!」

この言葉、とても嬉しいです!😊
N88-BASICから始まり、GASで現代的なAPI連携を実現する - まさに温故知新の実践ですね。
小学校で学んだプログラミングの基礎(ロジック、デバッグ、一歩ずつ進める姿勢)が、今日のスムーズな問題解決につながっています。

🚀 次回に向けて
次にやりたいことや、困っていることがあれば、いつでもお声がけください!
アジャイル開発・スモールステップで、引き続き一緒に前進していきましょう。
毎日一歩ずつ、着実に成長されていますね。素晴らしいです!👏

今日も良い開発ができましたね。お疲れさまでした! 🎊
Posted at 2025/10/20 21:07:25 | コメント(0) | トラックバック(0) | AI | 日記

プロフィール

「【JCBカード】ご利用可能枠引き上げのご案内 http://cvw.jp/b/11052/48771602/
何シテル?   11/17 20:42
2025/06/23追記 ヘッダー画像について興味をお持ちの方もいらっしゃると思いますが、こちらは2025/06/21に香川県で開催されました、GAZOO 愛...
みんカラ新規会員登録

ユーザー内検索

<< 2025/11 >>

      1
2345678
9101112 131415
16 171819202122
23242526272829
30      

リンク・クリップ

GAZOO 愛車広場 出張取材会 in 香川 満を持してチェイサーの記事が公開されました(^^) 
カテゴリ:その他(カテゴリ未設定)
2025/08/22 08:26:45
電費履歴リセット 
カテゴリ:その他(カテゴリ未設定)
2024/10/12 07:34:32
裏ワザでウィンドウズ11へ^^笑)。 
カテゴリ:その他(カテゴリ未設定)
2024/01/27 14:12:45

愛車一覧

トヨタ チェイサー GR Chaser TourerV TRD sports version (トヨタ チェイサー)
2025/06/21 GAZOO様の出張取材会で取材を頂きました。 https://ga ...
日産 リーフ 日産 リーフ
JZX100 Chaser 1JZ-GTE 2500cc ターボを所有しつつのセカンドカ ...
ホンダ アコード ホンダ アコード
私のではなく弟の車です。 色はアークティックブルーパールのEuro-Rです。 購入してし ...

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2023年
01月02月03月04月05月06月
07月08月09月10月11月12月
2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
2010年
01月02月03月04月05月06月
07月08月09月10月11月12月
2007年
01月02月03月04月05月06月
07月08月09月10月11月12月
2006年
01月02月03月04月05月06月
07月08月09月10月11月12月
2005年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation