技術ログ
実装で詰まった話・解決策・コード公開
このカテゴリの記事 23 本 (2026年5月時点)。SaaS Diary の運営者 GRAMSHIFT が実体験ベースで執筆しています。
-
ERR_INVALID_PACKAGE_CONFIG の正体は、3バイトのBOMだった
プロジェクトを置いていないホームディレクトリで、nodeが Invalid package config を出し続けました。犯人はBOMだけが入った3バイトのpackage.json。Nodeが親をたどって設定を探す仕組みと合わさって、配下のスクリプトが全部巻き込まれていた話です。
-
毎週「準備OK」と報告していた監視が、一度も出していない申請を緑にしていた
準備状況の監視が毎週「良好」を返していました。準備は本当に整っていたので嘘ではありません。ただ、肝心の「出したのか」が項目に無く、申請は一度も出ていませんでした。外から測れる証拠で判定を作り直すまでの記録です。
-
サービスを止めたのに、特商法だけ「月額480円」のままだった
課金もログインも止めて、トップに告知も出した。それでも特定商取引法に基づく表記には月額480円が残り、案内していた解約導線は404でした。止めるときに直す場所のリストと、消えたこと・残ったことを両方確認する手順の記録です。
-
記事20本が、ずっと計測されていなかった — 「入れた」ではなく「返ってくるか」で確認する
集客用に書いた記事20本に、アクセス解析のタグが1つも入っていませんでした。エラーは出ません。トップのセッションは毎日増えるからです。全ページを数えて直し、公開URLで検算するまでの記録。
-
削除したはずの一文が、まだ公開されていた — バックアップを配信ディレクトリに置くな
法務文書から一文を削除した翌朝、配信ディレクトリの走査で .bak が3本 HTTP 200 で見つかりました。中身は削除前の版。原因・被害・直し方と、週1の見張りでは最悪7日気づけなかった監視設計の話です。
-
exit 0 は「動いた」の証明ではない — 無音で失敗する自動化を夜の点呼で捕まえる
タスク一覧が全部「結果0」で埋まっていても、その日の投稿が1本も出ていないことはあります。孤児プロセスで上限が効かない、通知の宛先が未設定で静かに消える、在庫監視では欠測に気づけない。3つの穴を塞いで、成果物を一次情報で数える夜の点呼を実装した記録です。
-
バックアップは毎日成功していた。一度も復元したことがなかった
バックアップの完了通知は毎日届いていました。でも「実際に復元したことは何回?」と自問したら答えはゼロ回。実際に緑のまま壊れていた事故が2件あります。毎月バンドルを復号して中身を数える復元訓練を実装し、検査自体もわざと壊して赤くなることを確認した記録です。
-
必ず解けるパズルを自動生成する — 麻雀ソリティアの逆生成アルゴリズム実装記
パズルを自作すると最初にぶつかるのが「生成した問題が必ず解ける保証」。牌をランダムに置くと一定確率で詰み盤が生まれ、プレイヤーは理不尽に負けます。満杯の盤からフリーペアを取り切って解の手順を先に作る「逆生成」で解保証を実装し、独立ソルバで二重検証した記録です。
-
個人開発でCapacitorアプリをGoogle Playに出すまでに踏み抜いた5つの落とし穴
Web資産を持っているならCapacitorで同じコードをGoogle Playに出せます。私は数週間で自作Webツール数本をPlayに提出しましたが、コードより「Web開発の常識が通じないネイティブ層」で時間を溶かしました。実際に本番で踏んだ5つの落とし穴と修正を実コード込みで共有します。
-
PowerShell の Set-Content で日本語 UTF-8 ファイルが壊れる話
PowerShell で「ファイルの一部を置換しよう」と Get-Content | Set-Content を回したら、日本語が全部文字化けして元に戻せなくなった。原因は Windows PowerShell 5.1 の既定エンコーディングが cp932(Shift-JIS)で、UTF-8 ファイルを読み書きするだけで多バイト文字が壊れるからです。私はこれで作業中の index.html を一度ダメにしました。
-
Stripe Webhook 冪等性 — 本番で重複処理を防ぐ実装3パターン (TypeScript)
Stripe Webhook は仕様として at-least-once delivery、同じ event.id が複数回届く前提で受信側を設計する必要がある。本記事では Stripe 公式仕様に基づく 3 つの冪等化パターン (DB UNIQUE 制約 / Redis SETNX / In-memory LRU) を TypeScript の動くコード付きで比較し、月イベント数とインスタンス数で選び方を示す。さらに公式が明記している『event.id 単独では識別できない稀ケース』(同じ subscription への別経路操作で別 event オブジェクト生成) と、その対応としての (event_type, object_id) 組合せ判定パターンも解説。saas-diary tech-log カテゴリの実装リファレンス系記事。
-
個人開発者のバックアップ戦略 (3年分のコードを守る)
個人開発者にとって、コードと環境設定は最も価値のある資産です。PCが壊れた日に「あれ、何ヶ月か前にバックアップを取った気がする」では遅すぎます。私が運用しているGoogle Drive一本化の自動バックアップ実装を共有します。
-
Fastify を1年運用してわかった Express との違い
Node.jsでWebサーバーを書くとき、ExpressとFastifyのどちらを選ぶべきか?私はGramShift Web側を当初Expressで作り、後にFastifyに移行しました。1年運用してわかった具体的な違いと、移行で得たメリットを共有します。
-
SQLite と PostgreSQL の違いと選び方 — 個人SaaSを1年運用して比較した
個人開発SaaSのDB選択でPostgreSQL/MySQLを選ぶのは過剰スペックなことが多いです。GramShiftは現在もSQLiteで運用しており、運用コストはほぼゼロ。スケール限界の判断基準と、SQLite運用の注意点を共有します。
-
GitHub ReleasesでElectronアプリを配布する実例
Electronアプリを個人で配布する場合、配布基盤のコストと管理工数が悩みどころです。私はGitHub Releasesを使った無料配布で17リリースを重ねてきました。具体的なワークフロー、CDN効果、ダウンロード統計の取り方まで実例で共有します。
-
Windowsタスクスケジューラで自動化する人がハマる3つの罠
Windowsタスクスケジューラで自動化を組むと、最初は必ずどこかで詰まります。exit 9009 が出る、bat が動かない、なぜか実行されない、そんな状況の原因はだいたい3つに集約されます。20以上のタスクを運用してきた経験から共有します。
-
AIで記事を月60本量産してみた現実 (コスト・品質)
AIで記事を月60本量産すれば、メディアサイトを短期間で立ち上げられるのか?私は実際にやってみました。Gemini Flashで月150-300円のコストで動かしながら、品質を保つために試行錯誤したプロンプト設計と、未だに残る課題を共有します。
-
Claude vs Gemini を実プロジェクトで使い比べたコスト
AI APIをプロジェクトに組み込む際、ClaudeとGeminiのどちらを選ぶか悩みますよね。私は両方を実プロジェクトで並行運用して、コスト・品質・速度を実測しました。月60本の記事生成、議事録要約、コード補完、それぞれで見えた差を共有します。
-
VPSのメモリリークを発見した夜のデバッグ記録
本番運用しているNode.jsサーバーが、3日連続で深夜にメモリを使い切って落ちる。pm2が自動再起動してくれるとはいえ、根本原因を放置するわけにはいきません。実際にheap snapshotで犯人を特定するまでの全手順を共有します。
-
Discord webhookで個人開発の異常検知基盤を作る
個人開発でSaaS本体+複数のWorkerを並走させていると、どこかが必ず異常を出します。その時に「気づかない」のが最大のリスクです。Discord webhookで月コストゼロのアラート基盤を作る設計と、私がGramShift運用で踏み抜いた落とし穴を共有します。
-
Electronアプリの自動アップデート機構を作る (実装記)
Electronアプリをエンドユーザーに配布すると、必ず「古いバージョンのままバグ報告してくる人」が出ます。自動アップデート機構を最初から組み込んでおくと、ユーザー対応の時間が大きく減ります。GramShift Desktopで17回リリースを重ねて整えた実装を共有します。
-
Stripeで月額課金を実装したときに詰まった3つの落とし穴
Stripe Subscriptionは「とりあえず動かす」までは簡単ですが、本番運用するとwebhook冪等性、3Dセキュア対応、解約処理のUX判断など、ドキュメントだけでは見えない落とし穴がいくつもあります。GramShift開発で実際に3週間かけて踏み抜いた3つの罠を、コード込みで共有します。
-
GramShiftのAIは何を判断しているのか - Gemini 2.5 Flash統合の実装中身
GramShiftは「AIハッシュタグ提案」を謳う自動化ツールですが、AIが実際に判断している箇所は限定的です。透明性のため、Gemini 2.5 Flash を使っている箇所、ハードコードの箇所、そして「行動学習」を意図的にしていない理由を実装レベルで開示します。