登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

検索結果 とTypeScript多め。
とTypeScript多め。 コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
とTypeScript多め。 を含む検索結果
TypeScriptを学習するときの最初のハードルは環境構築ですよね?🥲 『TypeScriptコードレシピ集』のイチオシ工夫として、700を超えるサンプルファイルに「クリックだけ実行できるリンク」を仕込みました💐Microsoft純正のTS Playgroundがブラウザで立ち上がり、JavaScriptの実行、TypeScriptの型チェックができます。まずはTypeScriptコードを書く楽しさ、実行する楽しさを感じた後に、じっくり環境構築を学びましょう。 プレイグラウンドリンク、全書籍で流行ってほしい〜🚀 #TypeScriptコードレシピ集#
もっと見る
# OpenCodeの機能と実践的な使い方 🧰 組み込みツールだけでは足りない、社内APIやDBを叩きたい。そんなときはLLMが呼べる「自分専用のツール」を作れます。 🏷️ タイトル: 独自ツール作成 🔗 URL: 📘 概要 カスタムツールは、LLMが会話中に自律的に呼び出せる独自の関数です。read/write/bashといった組み込みツールを拡張し、社内APIアクセスやDBクエリなど、ドメイン固有の操作をエージェントに与えられます。定義はTypeScript/JavaScriptで書きますが、中身では任意の言語を実行できます。 ⚙️ 機能の説明 ・配置場所は2つ。プロジェクト単位なら `.opencode/tools/`、グローバルなら `~/.config/opencode/tools/` です。 ・ファイル名がそのままツール名になります。`database.ts` なら `database` ツールになります。 ・1ファイルから名前付きエクスポートで複数ツールを定義でき、その場合は `<ファイル名>_<エクスポート名>` という名前になります。 ・`@opencode-ai/plugin` の `tool()` ヘルパーで定義します。`description`(LLMへの説明)、`args`(Zodスキーマ)、`execute`(非同期の実装本体)が主要素です。 ・引数はZodで型安全に定義します。`tool.schema` 経由でも、`zod` を直接 import しても構いません。 ・`execute` の第2引数 context から `agent` `sessionID` `messageID` `directory` `worktree` といったセッション情報を受け取れます。 🛠️ 実践的な使い方 最小例として `.opencode/tools/database.ts` に、`tool()` で `description`・Zodの `args`(例: `query`)・非同期の `execute` を定義してデフォルトエクスポートします。 中身は任意言語を呼べます。たとえばcontextの `worktree`(gitルート)からスクリプトのパスを組み立て、`Bun.$` で `python3` を実行すればPythonにも橋渡しできます。 💡 ユースケース 社内の在庫APIや認証付き内部エンドポイントを叩くツールを定義しておけば、エージェントが組み込みツールと同じ感覚で社内データを取得・更新できます。説明文(description)を丁寧に書くほど、LLMが適切なタイミングで呼んでくれます。 ⚠️ 注意点 ・組み込みツールと同名にすると上書きされます。意図して置き換える場合を除き、ユニークな名前を付けてください。組み込みツールを無効化したいだけなら、上書きではなく権限(permission)で `deny` するのが正攻法です。 ・`execute` 内で外部コマンドや社内APIを叩くため、実行権限や秘密情報の扱いには十分注意してください。 #OpenCode# #AIエージェント#
もっと見る
# Weaviateの機能と実践的な使い方 🚀 「テストのためにベクトルDBサーバを立てるのが面倒」を解決するのがEmbedded Weaviateです。スクリプトから一行で起動し、終われば消える使い捨てDBとして、CIやノートブックに組み込めます。 📌 タイトルと機能のURL タイトル: Embedded Weaviate URL: 📝 概要 Embedded Weaviateは、独立したサーバを立てる代わりに、アプリケーションのコードからWeaviateインスタンスを起動する実験的なデプロイ方式です。インスタンスのライフサイクルはクライアントアプリに紐づき、アプリが終了するとインスタンスも終了します(ただし永続化したデータは残ります)。インフラ準備ゼロで実験を回せるのが最大の利点です。 🔧 機能の説明 ・Pythonでは weaviate.connect_to_embedded(version=..., headers=..., environment_variables=...) でインスタンスを起動します。 ・クライアントは binary_path のキャッシュにバイナリがあるか確認し、無ければGitHubリリースから適切なバイナリ(linux/macOS向け)をダウンロードしてキャッシュします。 ・初回起動時に persistence_data_path に永続データストアが作られ、次回以降は同じデータストアを再利用するため、セッション間でデータが残ります。 ・ライフサイクルはスクリプト終了・アプリ終了・ノートブックの非アクティブ化で終了します。 🛠 実践的な使い方 ・主なパラメータは version(latest・バージョン文字列・バイナリURL)、port(既定8079)、persistence_data_path(既定 ~/.local/share/weaviate)、binary_path(既定 ~/.cache/weaviate-embedded)です。 ・詳細設定は EmbeddedOptions を使い、additional_env_vars={"ENABLE_MODULES": "..."} のようにモジュールやAPIキーを渡します。設定後 client.connect() で接続します。 ・ログが多い場合は environment_variables={"LOG_LEVEL": "error"} で抑制できます。 ・TypeScriptでは別パッケージ weaviate-ts-embedded をインストールして利用します。 🎯 ユースケース ・CIのユニットテストで、検索ロジックの回帰テストを「インフラ準備ゼロ」で実行する。 ・Jupyterノートブックでのプロトタイピングや実験。 ・ローカルでの単一ユーザー向けの軽量な検証用途。 ⚠️ 注意点 ・実験的ステータスであり、APIやパラメータが変更される可能性があります。 ・単一ノード専用で、クラスタリングや分散デプロイには対応しません。本番用途向けではありません。 ・対応OSはLinuxとmacOSのみです。 ・XDG_DATA_HOME や XDG_CACHE_HOME は他のアプリでも広く使われるため、変更すると他に影響が出る恐れがあります。 #Weaviate# #VectorDatabase#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 💬 エージェントとの会話を継続・再開・分岐させて、複雑なタスクをマルチターンで進められます。 セッション管理は、`continue`・`resume`・`fork` で会話の継続・再開・分岐を実現し、コンテキストを維持したマルチターン対話を可能にする機能です。 📌 タイトル:セッションの操作 🔗 URL: 🧩 概要 セッションにより会話の文脈が保持されます。Python は `ClaudeSDKClient`(セッション ID 自動管理)、TypeScript は `continue: true` でマルチターンを実現します。`resume` で中断したセッションを再開、`fork_session` で履歴を分岐して代替案を探索できます。 🛠 使い方 ```python # 再開 options = ClaudeAgentOptions(resume=session_id) # 分岐 options = ClaudeAgentOptions(fork_session=True) ``` 🏗 実践的な使い方 ・「認証モジュールを分析して」→「JWT 化してリファクタして」と文脈を引き継ぐマルチターン対話を構築します。 ・`error_max_turns` で終了したセッションを `resume` でより高い上限で再開し、続きから実行します。 ・`fork_session=True` で元セッション(JWT 路線)を壊さず OAuth2 路線を別ブランチで探索。2つの独立した履歴を保持します。 ・`list_sessions` / `get_session_messages` / `rename_session` でセッションピッカー UI やクリーンアップ処理を構築します。 💡 ユースケース 🔄 制限到達後のセッション再開による継続実行 🌿 fork による代替アプローチの並行探索 🗂 セッション一覧 UI の構築 ⚠️ 注意点 セッションは `~/.claude/projects//.jsonl` に保存されます。ホスト間での再開には `cwd` の一致が必要です。サブエージェントのトランスクリプトはメイン会話と独立して永続化されます。 #ClaudeAgentSDK# #AI#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 @tool デコレータと create_sdk_mcp_server で、独自の関数をエージェントのツールとしてインプロセスで実行できます。 データベースアクセス、外部API呼び出し、ドメイン固有のロジックをエージェントに提供する方法を解説します。 📌 タイトル:インプロセス・カスタムツール (create_sdk_mcp_server / @tool) 🔗 URL: 🧩 概要 カスタムツールは、SDK のインプロセス MCP サーバーを使って独自の関数を Claude から呼び出せるようにする機能です。Python では `@tool` デコレータ、TypeScript では `tool()` ヘルパーでツールを定義し、`create_sdk_mcp_server` でラップして `query()` に渡します。ツールはアプリケーションプロセス内で実行され、別プロセスは不要です。ツール名は `mcp__{server_name}__{tool_name}` の形式になります。`readOnlyHint` アノテーションで並列実行を有効にし、`isError` で復旧可能なエラーをエージェントに伝え、画像(base64)やリソースの返却も可能です。 🛠 使い方 `@tool` デコレータでツールを定義し、`create_sdk_mcp_server` でサーバーにまとめます。 ```python from typing import Any import httpx from claude_agent_sdk import tool, create_sdk_mcp_server, query, ClaudeAgentOptions, ResultMessage @tool( "get_temperature", "Get the current temperature at a location", {"latitude": float, "longitude": float}, ) async def get_temperature(args: dict[str, Any]) -> dict[str, Any]: async with httpx.AsyncClient() as client: response = await client.get( "", params={ "latitude": args["latitude"], "longitude": args["longitude"], "current": "temperature_2m", }, ) data = response.json() return { "content": [ {"type": "text", "text": f"Temperature: {data['current']['temperature_2m']}"} ] } # インプロセスMCPサーバーにラップ weather_server = create_sdk_mcp_server( name="weather", version="1.0.0", tools=[get_temperature], ) # query() に渡して使用 async for message in query( prompt="What's the temperature in Tokyo?", options=ClaudeAgentOptions( mcp_servers={"weather": weather_server}, allowed_tools=["mcp__weather__get_temperature"], ), ): if isinstance(message, ResultMessage) and message.subtype == "success": print(message.result) ``` 🏗 本番システムへの組み込み方 ・エラーハンドリングでは例外をスローせず `{"is_error": True}` を返すことで、エージェントループを継続させつつ Claude にリカバリーさせることができます ・`readOnlyHint=True` アノテーションを設定すると、副作用のないツールを他のリードオンリーツールと並列実行できます ・画像を返す場合は `{"type": "image", "data": base64_str, "mimeType": "image/png"}` 形式のコンテンツブロックを使用します ・`structuredContent` フィールドでツール結果を機械可読な JSON として返却できます(ただし Python の `@tool` では未サポート、スタンドアロン MCP サーバーが必要) 💡 ユースケース 🗄 データベースアクセス:エージェントに直接 DB クエリを実行させる 🌐 外部API連携:社内 API やサードパーティサービスをツールとして公開する 📊 データ可視化:グラフを生成し画像(base64)として返却する 🔧 ドメインロジック:計算、変換、バリデーションなど特定の業務ロジックをツール化する ⚠️ 注意点 ・Python の dict スキーマではすべてのキーが必須になります。オプションパラメータは schema に含めず、description で説明して `args.get()` で読み取ってください ・`structuredContent` は Python の `@tool` デコレータでは転送されません(スタンドアロン MCP サーバーを使用) ・ツール検索(tool search)はデフォルトで有効で、SDK MCP ツールのスキーマは必要になるまで遅延ロードされます。無効にすると `tools` 配列のすべてのツールが毎ターンのコンテキストを消費します ・アノテーションはメタデータであり強制力はありません。`readOnlyHint=True` でも handler が書き込みを行う場合があります ✨ インプロセスのカスタムツールにより、エージェントの能力を自由に拡張でき、外部プロセスの管理も不要です。 #ClaudeAgentSDK# #AIAgent#
もっと見る
このあと12:00からFindy「鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力」が開催されます🚀 書籍の紹介、新しいJS・TSの話、推しレシピ、AI時代の学習について紹介。 各種媒体あわせて申込みが300人を超えたとのことです🌼 #TS_findy#
もっと見る
「DDDって実際のOSSでどう使われ、保守品質とどう関係してるの?」——有名な割に大規模な実証データがほぼなかったこの問いに、865リポジトリのマイニングで挑む研究です🔍 タイトル: Domain-Driven Design in Practice: A Mining Study of Maintenance and Evolution in Open-Source Repositories URL: ❓ 何を調べるの? 💡 GitHubのDDDタグ付き1,260件をフィルタした865リポジトリ(Java/C#/TypeScript)を対象に、8つの戦術的ビルディングブロック(Entities, Value Objects, Aggregates, Repositories, Domain Services, Domain Events, Application Services, Factories)の実態を分析します。 ❓ どうやって検出するの? 💡 3層パイプラインです。DDD固有のアノテーション、命名規約(例: OrderRepository)、パッケージ・ディレクトリ構造の3つを組み合わせ、精度0.75以上を満たした段階でのみ次へ進みます。 ❓ 何が一番の技術的課題? 💡 Bounded Context(境界づけられたコンテキスト)の境界違反です。「モデルとコードのギャップ」をクロスコンテキスト依存として定量化し、違反率=BC間依存÷全クラス間依存で測ります。境界推定は2名の人手でCohen's kappa 0.80以上を要求。 ❓ 信頼性の担保は? 💡 言語横断はKruskal-Wallis+Dunn事後検定、相関はSpearmanのρ。年齢・規模・言語・種別・チーム規模を交絡として制御し、検出が精度基準を割ったら結論を無効化せずスコープを狭める「劣化計画」を事前登録しています。 設計の堅牢さが際立つ研究で、DDDの保守・進化を語る実証基盤になりそうだと感じます。 #DDD# #ソフトウェア工学#
もっと見る
# ADK 2.0の便利だけど知られていない機能 🌍 エージェントに「スキル」として再利用可能な機能モジュールを簡単に追加できたら、開発効率が大きく上がると思いませんか? ADK 2.0のスキル機能は、 📌 タイトル:エージェント向けスキル (Skills) 🔗 URL: 🧩 概要 スキルは を使ってエージェントにスキルをラップして提供できます。 🛠 使い方 スキルはSKILL.mdファイルとして定義し、エージェントに読み込ませます。 ```python from adk import Agent from adk.skills import SkillToolset # ファイルシステムからスキルを読み込み skill_toolset = SkillToolset( skill_path="./skills/data_analysis" ) agent = Agent( name="analyst", model="gemini-3.5-flash", tools=[skill_toolset], instruction="データ分析スキルを使って質問に回答してください。" ) ``` SKILL.mdのフロントマターにはスキルの名前、説明、バージョンなどのメタデータを記述し、本文にエージェントへの具体的な指示を記載します。L3リソースとして外部ファイルやスクリプトを参照することも可能です。 🏗 本番システムへの組み込み方 ・スキルを独立したディレクトリとして管理し、バージョン管理とテストを容易にする ・共通スキル(データ検索、レポート生成など)をチーム横断で再利用できるスキルライブラリを構築する ・L3リソースを活用して、スキルに必要なデータやスクリプトをバンドルする ・スキルのフロントマターにバージョンを記載し、互換性を管理する 💡 ユースケース 📊 データ分析スキルを複数のエージェントで共有して使い回す 📝 レポート生成のテンプレートとロジックをスキルとしてパッケージ化する 🔌 外部API連携のノウハウをスキルとして標準化し、チームで共有する 🧩 複雑なワークフローをスキルの組み合わせとして構成する ⚠️ 注意点 スキル機能は実験的(Experimental)なステータスです。Python v1.25.0以降、TypeScript v0.6.1以降、Go v1.2.0以降で利用できますが、APIや仕様が変更される可能性があります。本番環境への導入時はバージョン固定を推奨します。また、 ✨ スキルを活用することで、エージェントの機能を再利用可能なモジュールとして整理でき、開発と保守の効率が大幅に向上します。まずは小さなスキルから試してみてください。 #ADK# #AIAgent#
もっと見る
# ADK 2.0の便利だけど知られていない機能 🌍 長い会話を続けていると、コンテキストウィンドウがいっぱいになってエージェントの品質が低下した経験はありませんか? ADK 2.0のコンテキスト圧縮(コンパクション)機能は、古いイベントをスライディングウィンドウ方式で要約し、コンテキストウィンドウを効率的に管理する機能です。長時間の会話でもエージェントの応答品質を維持できます。 📌 タイトル:コンテキスト圧縮(コンパクション) 🔗 URL: 🧩 概要 コンテキスト圧縮は、会話が長くなった際に古いイベントを要約して圧縮する仕組みです。2つの主要パラメータで動作を制御します。compaction_intervalは圧縮を実行するイベント間隔、overlap_sizeは圧縮時に次のウィンドウに引き継ぐイベント数です。例えば、compaction_interval=3、overlap_size=1の場合、3イベントごとに圧縮が実行され、最後の1イベントは次のウィンドウにも含まれます。Pythonではアプリに設定し、TypeScriptではTokenBasedContextCompactorでトークンしきい値ベースの制御が可能です。カスタムサマライザーも実装できます。 🛠 使い方 PythonではEventsCompactionConfigをAppに設定します。 ```python from import App from google.adk.context import EventsCompactionConfig compaction_config = EventsCompactionConfig( compaction_interval=5, # 5イベントごとに圧縮 overlap_size=2, # 直近2イベントを次のウィンドウに引き継ぎ ) app = App( agent=my_agent, events_compaction_config=compaction_config, ) ``` TypeScriptではTokenBasedContextCompactorを使用します。 ```typescript import { TokenBasedContextCompactor } from '@anthropic-ai/adk'; const compactor = new TokenBasedContextCompactor({ tokenThreshold: 4000, }); ``` カスタムサマライザーが必要な場合は、LlmEventSummarizerを拡張して独自の要約ロジックを実装できます。 🏗 本番システムへの組み込み方 ・compaction_intervalを会話の平均長さに合わせて調整する ・overlap_sizeを大きくすると文脈の連続性が向上するが、圧縮効率は低下する ・カスタムサマライザーで業務ドメインに特化した要約を実装する ・圧縮前後のイベント数とトークン数をモニタリングし、パラメータを最適化する 💡 ユースケース 💬 カスタマーサポートの長時間チャットでコンテキスト品質を維持 📝 長期プロジェクト管理エージェントの会話履歴を効率的に圧縮 🎯 重要な情報を保持しながら不要な詳細を削減してコストを最適化 🔧 ドメイン固有のカスタムサマライザーで業務に最適な要約を実現 ⚠️ 注意点 圧縮により古いイベントの詳細な情報は失われます。重要な情報はStateに保存するなど、圧縮されても失われない設計を心がけてください。また、overlap_sizeが小さすぎると文脈の断絶が生じ、エージェントの応答品質が低下する可能性があります。compaction_intervalとoverlap_sizeのバランスを実際のユースケースでテストすることをお勧めします。 ✨ コンテキスト圧縮により、長時間の会話でもコンテキストウィンドウを効率的に活用できます。エージェントの応答品質とコスト効率の両立に大きく貢献する機能です。 #ADK# #AIAgent#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 🔧 社内 API・DB・ドメインロジックを `@tool` で定義して、Claude に呼び出させましょう。 カスタムツールは、`@tool` デコレータでインプロセス MCP サーバーとして独自関数を定義し、Claude が会話中に呼び出せるようにする機能です。 📌 タイトル:Claude にカスタムツールを提供する 🔗 URL: 🧩 概要 `@tool`(Python)/ `tool()`(TypeScript)で名前・説明・スキーマ・ハンドラーを定義し、`create_sdk_mcp_server` でラップして `mcp_servers` に渡します。副作用のないツールには `readOnlyHint: true` を付けて並列実行を最適化できます。 🛠 使い方 `@tool`(Python)/ `tool()`(TypeScript)で名前・説明・スキーマ・ハンドラーを定義し、`create_sdk_mcp_server` でラップして `mcp_servers={"weather": server}` に渡します。ツール名は `mcp__weather__get_temperature` の形式で Claude に公開されます。 🏗 実践的な使い方 ・社内 API(顧客情報・在庫・注文状況等)を `@tool` で定義し、自然言語での問い合わせに対応するエージェントを構築します。 ・`readOnlyHint: true` を読み取り専用ツールに付与し、複数ツールの同時実行でレイテンシを削減します。 ・ハンドラー内で例外を握りつぶし `is_error=True` を返すと、エージェントループは継続し Claude がリトライ・代替手段を試みます。 ・チャート生成ツールが `image` ブロック(base64)でグラフ画像を返し、Claude に結果を分析させます。 💡 ユースケース 🏢 社内 API への自然言語アクセスエージェント 📊 グラフ生成+画像分析パイプライン 🔄 エラー耐性のある自律リトライ ⚠️ 注意点 ハンドラー内でキャッチされない例外は `query()` 全体を落とすため、必ずエラーハンドリングを行ってください。`tools: ["Read","Grep"]` で組み込みツールの利用を制限することも可能です。 #ClaudeAgentSDK# #AI#
もっと見る