その他

Poetry × FastAPI × SQLAlchemy × Alembicで作る、モダンなPythonバックエンド環境構築ガイド

目的Python製WebAPIを、依存管理からDBマイグレーションまで完全自動化し、手動の venv や requirements.txt 管理から卒業する手法を紹介します。これらを組み合わせることで:環境構築が自動化コードからDB設計を自動反映チーム開発でも「環境が一致」という理想的な開発体験を実現します。役割ツール役割ひとことで言うとPoetry依存管理 & 仮想環境Pythonのnpm的存在FastAPIWebアプリケーション高速・型安全なAPIフレームワークSQLAlchemyORMPythonからDBを操作AlembicDBマイグレーションスキーマの変更を安全に管理手順プロジェクトの作成poetry new fastapi-samplecd fastapi-sampleパッケージのインストールpoetry add fastapi uvicorn sqlalchemy psycopg2 alembic初期状態のフォルダ構成fastapi-s

その他

Poetryとは? – Python開発を劇的に快適にする依存管理ツール

Poetryとは?Pythonのプロジェクトを開発していると、次のような悩みを感じたことはありませんか?仮想環境(venv)の切り替えが面倒パッケージのバージョンがずれるpythonのバージョンを固定これらをすべて解決してくれるのが、Poetry(ポエトリー) です。Poetry は、Pythonの依存関係・パッケージ・仮想環境を一元的に管理できるツールです。かんたんに言えば、「pip + venv + setuptools」をひとつにまとめた新しい管理ツール。使い方インストールmacOS / Linux% curl -sSL https://install.python-poetry.org | python3 -または、Homebrewにより% brew install poetry確認% poetry --versionPoetry (version 2.2.1)プロジェクトの作成% poetry new myprojectファイル構成m

その他

PostgreSQL – 行レベルセキュリティポリシー(RLS)の利用

行レベルセキュリティとは?PostgreSQLのRLS(Row Level Security)=行レベルセキュリティは、マルチテナントSaaSやCRMのようにユーザーごとに見せるデータを制御したいときに必須の仕組みです。RLSは、テーブル単位で「行ごとにアクセス制御」をかける仕組みです。通常のPostgreSQLでは、SELECT * FROM customers;を実行すると全行が見えますが、RLSを有効にすると「自分の行」だけしか見えなくできます。どういうときに使うか?シナリオRLSで解決できることSaaSアプリ各テナントのデータを分離(他社データを見れない)社内CRM営業担当ごとに顧客データを制限AIログ組織ごとにログアクセスを制御基本の仕組みテーブル単位でRLSを有効化POLICY(ポリシー)を設定して、誰がどの行を見られるか定義PostgreSQLが自動でWHERE句を追加してくれるポリシーの設定例-- サンプルテーブル作成CREATE TABLE customer

AI

ChatGPT API ハック – EC営業AIの構築 – 本番運用のための実装

リアルタイム応答でUXを改善通常の ChatGPT API は「生成が全部終わってから」まとめて返します。でも stream: true を使うと、ChatGPTが文を考えながら順次出力することができます。from openai import OpenAIopenai_api_key = "xxx"client = OpenAI(api_key=openai_api_key)stream = client.chat.completions.create( model="gpt-4o", messages=[ {"role": "system", "content": "あなたは薬局ECの営業アシスタントです。"}, {"role": "user", "content": "こんにちは!この店のおすすめ商品を教えてください。&

AI

ChatGPT API ハック – EC営業AIの構築 – ベクトル検索によるRAGの導入

フェーズ2:ベクトル検索によるRAGの導入商品説明文から OpenAI Embedding を生成Pinecone / Weaviate / Supabase vector などでベクトル検索セットアップユーザーの質問 → 関連商品抽出 → messages に注入 → ChatGPT呼び出し効果・価格・注意点などを含む「事実ベースのセールストーク」生成Embeddingの生成Embeddingとは?Embeddingとは、文章や単語の「意味」をAIが理解できるように数値(ベクトル)で表したものです。たとえば「ニキビを治すクリーム」という文を入力すると、AIはその意味を数百〜数千次元の数値列に変換します。この数列は言葉そのものではなく、「スキンケア」「薬」「肌」「改善」といった概念的な特徴を含んでいます。Embeddingの大きな特徴は、似た意味の文章は近い位置に配置されることです。たとえば「ニキビを治すクリーム」と「肌荒れを防ぐ薬」は、単語が違っても意味が似ているため、ベクトル空間では近くに並びます。逆に「ヒゲ剃り

AI

ChatGPT API ハック – EC営業AIの構築 – プロンプトと商品情報の連携

フェーズ1:プロンプトと商品情報の連携数件の商品(3〜5点)をJSONで用意system + user に商品情報を埋め込んで 呼び出し「人気・おすすめ」などの表現のトーンを制御レスポンスフォーマットをJSONに制御Shopifyから商品情報を取得store=access_token=curl -X GET "https://${store}.myshopify.com/admin/api/2025-01/products.json" \-H "X-Shopify-Access-Token: ${access_token}" > products.json必要な商品情報のみ取得import jsonwith open("products.json", "r", encoding="utf-8") as f: data = json.load(f)simplified_products =

AI

ChatGPT API ハック – ①どこまでできるのか

はじめにいまさらですが、ChatGPT APIで何ができるのか、使いながら試していきます。ChatGPT API を使って何が実現できるか?ChatGPT APIは「単に質問に答えるAI」ではなく、あなたのサービスや業務の中で、“対話可能な脳”を好きな形で埋め込めるインターフェースです。想像を超える使い方一覧主に、私のようにSaaSを作る人・ECを運営する人・AIを実装する人向けに、「ChatGPT APIを使えばここまでできる」という事例・構想を、段階別に紹介します。【レベル1】よくある使い方ユースケース内容ECサイトのチャットボット「この商品は何?」「返品できる?」などに答えるお問い合わせ自動応答営業時間・料金・手順などFAQ対応メール・文章生成カスタマー返信文を生成/修正レビュー要約商品レビューを要約/感情分類【レベル2】中級者向け(現場レベルの自動化)ユースケース内容APIログの分析&アラートlogから異常トラフィックを発見し、Slackに通知Shopifyの商品説明を自動生成商品メタ情報から自然な説明

その他 未分類

マルチテナントアーキテクチャの理解

マルチテナントアーキテクチャとは?「マルチテナントアーキテクチャ」とは、ひとつのソフトウェアやインフラを複数の利用者(テナント)が共有して使う仕組みのことを指します。たとえばクラウドサービスでは、1つのアプリケーションを何社ものお客さんが同時に使っていても、それぞれのデータや設定はしっかり分かれています。一般的には、データベースを共通したり、スキーマをどう分けるのか、といった技術的な話が多いですが、今回は、ユーザーからみた機能として、どのようなテナントアーキテクチャにすることがよいのか、有名なSaaSがどういう戦略をとっているのかを理解していきたいと思います。テナントとは?法人の管理者がSaaSとサービス利用の契約して管理者が社員や関係者を招待してその単位でデータや権限が管理されるそんな「組織としての利用の入れ物」です。SaaSの比較Slackビジネス向けのチームコミュニケーション(チャット)SaaS。チャンネル中心で会話・ファイル共有・通知連携を行う。テナントまわりテナント:ワーク

その他

Firestoreの特徴と基本的な使い方

Firestoreとは?Cloud Firestoreは、FirebaseとGoogle Cloudが提供する柔軟でスケーラブルなNoSQLドキュメントデータベースです。Web、モバイル、サーバー開発向けに設計されており、リアルタイム同期とオフラインサポートが特徴です。主なコンセプトは以下の通りです。ドキュメントとコレクション: Firestoreのデータは「ドキュメント」として保存されます。ドキュメントはキーと値のペアで構成されるデータの集合です。これらのドキュメントは「コレクション」にまとめられます。コレクションはドキュメントの集まりであり、さらにその中にサブコレクションとして別のコレクションを含めることもできます。これにより、データを階層的に整理できます。データ操作:追加 (Add/Set): コレクションに新しいドキュメントを追加したり、特定のIDでドキュメントを保存したりします。読み取り (Get): ドキュメントのIDを指定してデータを取得したり、コレクションから複数のドキュメン

未分類

Google AppSheetを久しぶりにつかってみたら、結構使いやすかった話

はじめに以前、ノーコードでモバイルアプリを作成できる Google AppSheet を評価しました。簡単にアプリを作れる一方で、ユーザーごとの課金体系が本番運用には適さず、導入には至りませんでした。しかし今回、Shopify 用の商品マスタや仕入ロットを Google Sheets で管理し、それを Shopify に一括登録する機能が必要となりました。調べたところ、2023 年から Google Workspace プランに AppSheet Core が含まれることが分かり、改めて利用してみることにしました。AppSheetで実現する機能Google Sheet(商品マスタ、仕入ロット)をデータソースとするSKUを自動生成、2テーブルをSKUでJOIN商品一覧、登録・編集ページ仕入ロット一覧、登録・編集ページ商品検索機能Shopify登録用の商品マスタ、仕入ロットデータ生成所感Google AppSheetがGoogle Workspaceに組み込まれたことで、メンバーは無料で使

Lang »