技術ログ
実装で詰まった話・解決策・コード公開
このカテゴリの記事 16 本 (2026年5月時点)。SaaS Diary の運営者 GRAMSHIFT が実体験ベースで執筆しています。
-
必ず解けるパズルを自動生成する — 麻雀ソリティアの逆生成アルゴリズム実装記
パズルを自作すると最初にぶつかるのが「生成した問題が必ず解ける保証」。牌をランダムに置くと一定確率で詰み盤が生まれ、プレイヤーは理不尽に負けます。満杯の盤からフリーペアを取り切って解の手順を先に作る「逆生成」で解保証を実装し、独立ソルバで二重検証した記録です。
-
個人開発で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年運用してわかった具体的な違いと、移行で得たメリットを共有します。
-
個人SaaSでSQLiteを選んだ理由 (PostgreSQLは過剰だった)
個人開発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 を使っている箇所、ハードコードの箇所、そして「行動学習」を意図的にしていない理由を実装レベルで開示します。