<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>API &#8211; まったりエンジニア</title>
	<atom:link href="https://javeo.jp/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>https://javeo.jp</link>
	<description>ほどほどレベルのプログラミング</description>
	<lastBuildDate>Tue, 16 Jun 2026 05:02:47 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://javeo.jp/wp-content/uploads/2026/05/cropped-サイトアイコン2-32x32.png</url>
	<title>API &#8211; まったりエンジニア</title>
	<link>https://javeo.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Claude CodeでWordPress自動投稿【MCP活用】</title>
		<link>https://javeo.jp/claude-code-wordpress-mcp-xserver/</link>
					<comments>https://javeo.jp/claude-code-wordpress-mcp-xserver/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Tue, 16 Jun 2026 05:01:10 +0000</pubDate>
				<category><![CDATA[AI・Claude]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Claude]]></category>
		<category><![CDATA[Claude Code]]></category>
		<category><![CDATA[MCP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[レンタルサーバー]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=4008</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/06/claude-code-wordpress-mcp-xserver-ogp-1024x538.jpg" class="webfeedsFeaturedVisual" /></p>Claude Code自身にWordPress投稿用のMCPサーバーを作ってもらう方法をまとめました、依頼プロンプト例と動作テスト手順が中心です、サンプルはGitHubで公開しています]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/06/claude-code-wordpress-mcp-xserver-ogp-1024x538.jpg" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<p class="wp-block-paragraph">「AIに記事を書かせて、そのままWordPressに下書き保存できたら楽なのに」と思ったことはないですか？</p>



<p class="wp-block-paragraph">今回は <strong>Claude Code と MCP を使って、XserverのWordPressに記事を自動で下書き投稿する仕組み</strong>を作ったので、その作り方と使い方をまとめておきます</p>



<p class="wp-block-paragraph">AIにブログの下書きを書いてもらう人は増えてきましたが、出来上がった文章を管理画面にコピペして、見出し整えて、カテゴリ付けて…という地味な作業は意外と面倒です</p>



<p class="wp-block-paragraph">そこに「MCP（Model Context Protocol）」という新しい仕組みを噛ませると、Claudeに頼むだけで下書きが管理画面に届くようになります</p>



<p class="wp-block-paragraph">今回のMCPサーバー自体、私がPythonを一行ずつ書いたというより<strong>Claude Code本人に「こういうサーバーを作って」と頼んで作ってもらった</strong>ものです</p>



<p class="wp-block-paragraph">なのでこの記事は、完成したコードを丸ごとコピペする話というより<strong>Claudeにどう頼めばMCPサーバーができあがるのか、どうテストすれば安心して使えるのか</strong>を中心にまとめていきます</p>



<h2 class="wp-block-heading">Claude CodeでWordPress自動投稿｜何ができるようになるか</h2>



<p class="wp-block-paragraph">まずは完成形のイメージから紹介します</p>



<p class="wp-block-paragraph">セットアップが終わると、Claude Codeに対してこんなお願いができるようになります</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">「VLOOKUP関数について、初心者向けに1000字くらいで解説記事を書いて、下書きで保存しておいて」</p>
</blockquote>



<p class="wp-block-paragraph">これだけで、WordPress管理画面の「投稿一覧」に下書きの記事が勝手にできあがっています</p>



<p class="wp-block-paragraph">主に次のようなことができるようになります</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>テーマを伝えるだけで記事の下書きをWordPressに自動投稿</li>



<li><strong>アイキャッチ画像</strong>のアップロードと設定</li>



<li><strong>カテゴリ・タグ</strong>の設定（既存から選ぶ・足りなければ新規作成）</li>



<li><strong>メタディスクリプション</strong>（SEO用の説明文）の登録</li>



<li><strong>テーマ独自のブロック</strong>（SWELLのステップ・FAQ・注意ボックスなど）での装飾</li>



<li><strong>記事ごとのカスタムCSS</strong>（SWELLの投稿別CSS欄）の設定</li>



<li>既存記事の取得・編集も会話で完結（タイトル変更・本文追記など）</li>



<li>下書き一覧を出してもらって、書きかけ記事の整理も簡単</li>
</ul>



<p class="wp-block-paragraph">要するに <strong><span class="swl-marker mark_yellow">下書きから装飾までの面倒な手作業をAIとの会話で済ませられる</span></strong>ようになります</p>



<p class="wp-block-paragraph">もちろん公開前のプレビュー確認は管理画面で行いますが、それ以外の編集作業をブラウザでぽちぽち進めなくて済むのが地味に効きます</p>



<h3 class="wp-block-heading">テーマ独自のブロックは「見本ページ」を読ませて覚えさせる</h3>



<p class="wp-block-paragraph">1つだけコツがあります、「SWELLのステップブロックで書いて」と頼むだけでは、Claudeはあなたのテーマの正確なブロックの形までは分かりません、ブロックの中身（HTML）はテーマごとに違うからです</p>



<p class="wp-block-paragraph">そこで効くのが、使いたいブロックを並べた<strong><span class="swl-marker mark_yellow">見本用の固定ページを1枚だけ作っておく</span></strong>方法です</p>



<p class="wp-block-paragraph">その見本ページをClaudeに<strong>読み取らせる</strong>と、実際のブロックのHTMLを覚えて、同じ形を記事の中で再現できるようになります</p>



<p class="wp-block-paragraph">私の場合は、ステップ・FAQ・吹き出し・各種ボックスなどを1ページにまとめた見本を作って、それをClaudeに読ませてから装飾してもらう、という流れにしています</p>



<h2 class="wp-block-heading">逆に苦手なこと｜任せきれない部分は人がやる</h2>



<p class="wp-block-paragraph">万能ではないので、苦手なところも正直に書いておきます</p>



<p class="wp-block-paragraph">いちばんはっきりしているのが画像です、「この記事に合うスクショを貼って」と頼んでも、<strong><span class="swl-marker mark_yellow">AIは記事の見た目を見ているわけではないし、必要なスクショを自分で撮ることもできません</span></strong></p>



<p class="wp-block-paragraph">ローカルの画像をアップロードするにしても、メディアライブラリから選ぶにしても、「どれが適切か」の判断はAIには難しいです、特に、まだ存在しないスクショを用意することはできないので、ここは人の出番になります</p>



<h3 class="wp-block-heading">代わりに「キャプチャのメモ」を入れてもらう</h3>



<p class="wp-block-paragraph">まるごと任せられないだけで、下ごしらえは頼めます</p>



<p class="wp-block-paragraph"><strong>「ここにスクショを入れる」という場所と、「何を写したスクショにするか」のメモ</strong>を、該当箇所に書いておいてもらう使い方です、そうすれば人は、メモ通りにスクショを撮って貼るだけで済みます</p>



<p class="wp-block-paragraph">実際この記事の画像も、先にAIが「ここにアプリケーションパスワード発行画面のスクショ」とメモを置いておいて、その場所に私が撮ったものを入れています</p>



<h3 class="wp-block-heading">WordPress REST APIにないことはできない</h3>



<p class="wp-block-paragraph">このMCPはWordPressのREST API（記事・固定ページ・メディア・カテゴリなどを操作する窓口）を通して動いているので、そこに用意されていないこと——<strong>サイト全体に効くCSSやJavaScript、プラグインの設定、メニューやサイト構成の変更</strong>などは反映できません（記事1本ごとのCSSのほうは、後で触れる補助プラグインを入れれば設定できます、JSも技術的には可能ですが、安全のためおすすめしません）</p>



<p class="wp-block-paragraph">「こう変えたい」と相談すれば書き方や手順の<strong>提案はしてくれます</strong>が、実際に反映するのはテーマ・カスタマイザー・プラグイン側の作業で、MCPの守備範囲の外になります</p>



<h3 class="wp-block-heading">あえて「触れる範囲」は絞っている</h3>



<p class="wp-block-paragraph">逆に、REST API経由で触れるメタ情報（SEOのディスクリプションなど）は、できる中でも<strong>あえて最小限に絞っています</strong>、SEOのタイトルやog:imageなども、開放すればMCPから設定できるようにはできます、ただ<strong>自動で書き換えられる範囲が広いほど、うっかり上書きや、認証情報が漏れたときの被害も大きくなります</strong>、なので「実際に自動化したいものだけ開けておく」のが安全だと考えています</p>



<p class="wp-block-paragraph">具体的には、SEOプラグインのメタディスクリプションやSWELLの投稿別CSSは、標準のWordPressでは外部から書き込めません、これらを書き込めるようにするための<strong>補助プラグイン</strong>を、Claudeに作ってもらって自分で設置しています</p>



<p class="wp-block-paragraph">置き場所は通常のプラグインフォルダではなく、<strong><span class="swl-marker mark_yellow">mu-plugins</span></strong>（must-use plugins）という特別なフォルダです、ここに置くと<strong>管理画面に項目すら出ない</strong>うえに、置くだけで自動で有効化されて、テーマやプラグインの更新でも消えません、自作の小さな仕組みを安全に常駐させる用途にちょうど良い場所です（普通にブログを運営しているとフォルダ自体が無いことも多いので、その場合は <strong>wp-content/</strong> の下に新しく <strong>mu-plugins</strong> フォルダを作って置きます）</p>



<p class="wp-block-paragraph">このあたりの「Claudeに作ってもらって自分で置く」流れは、MCPサーバー本体を作るときと同じです、補助プラグインは<strong>1ファイルの短いPHP</strong>なので、依頼すればすぐ作ってもらえます</p>



<p class="wp-block-paragraph">それから、これは「できない」というより<strong>最後は人が見ておきたい</strong>ところですが、仕上がりの見た目です、AIはブロックのHTMLを組むところまでで、テーブルの幅やモバイルでの崩れといった<strong>実際の表示までは見えていません</strong>、ファクトの裏取りと同じ感覚で、公開前にプレビューでさっと目視しておくのが安心です</p>



<p class="wp-block-paragraph">もう1つ、これはMCPというよりAIに記事を書かせるとき全般のコツですが、「リストには下線を付ける」「画像は影付きスタイルにする」のような<strong>自分ルール</strong>を決めておくと、AIはそれに合わせて作ってくれます、このあたりのAI執筆側のコツは、機会があったら別記事でまとめようと思います</p>



<h2 class="wp-block-heading">そもそもMCPって何｜AIと外部サービスを繋ぐ共通規格</h2>



<p class="wp-block-paragraph">「MCP」はModel Context Protocolの略で、Anthropic（Claudeを作っている会社）が提唱しているAIアシスタント業界の新しい標準仕様です</p>



<p class="wp-block-paragraph">ざっくり言うと、<strong>AIに外部のサービスを操作させるための共通言語</strong>のようなものになります</p>



<h3 class="wp-block-heading">MCPで何が変わるのか</h3>



<p class="wp-block-paragraph">これまでもAIに「○○をやって」と頼むことはできましたが、AI自身は実際にWordPressを操作したりファイルを読み書きしたりはできませんでした</p>



<p class="wp-block-paragraph">MCPサーバーを間に挟むことで、AIから外部システムを「ツール」として呼び出せるようになり、AIが実作業まで進められるようになります</p>



<h3 class="wp-block-heading">今回作る仕組みの全体像</h3>



<p class="wp-block-paragraph">図にするとこんな流れになります</p>



<pre class="wp-block-preformatted">[あなた] ⇄ [Claude Code] ⇄ [MCPサーバー] ⇄ [WordPress REST API] ⇄ [WordPress]</pre>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>Claude Code が「下書きを保存して」というあなたの指示を理解する</li>



<li>MCPサーバー（自分のPCで動く小さなプログラム）がそれをWordPressが分かる形に翻訳する</li>



<li>WordPress REST API が実際に記事を作成する</li>
</ul>



<p class="wp-block-paragraph">WordPress公式のMCPサーバーはまだ無いので、今回はPythonで自作しました、といっても最初は<strong>200行ほどの小さなもの</strong>をClaudeに作ってもらって、そこから少しずつツールを足していった形です</p>



<p class="wp-block-paragraph">Claude Code自体の基本的な使い方はまた別記事で書こうと思いますが、その前段として<a href="https://javeo.jp/claude-howto-beginner/" target="_blank" rel="noopener noreferrer">Claudeの使い方を初心者向けに解説した記事</a>もあるので、Claudeに触ったことがない人はそちらから読んでもらえると入りやすいです</p>



<h2 class="wp-block-heading">Claudeに「WordPress操作のMCPサーバーを作って」と頼む</h2>



<p class="wp-block-paragraph">ここがこの記事の本題です、MCPサーバーは自分でゼロからコードを書かなくても<strong>Claude Code本人に作ってもらえます</strong></p>



<p class="wp-block-paragraph">コツは一度に全部を作らせないことで、<strong><span class="swl-marker mark_yellow">1つのツールを作る → 動かしてテスト → 次のツールを足す</span></strong>という小さいサイクルで育てていくと失敗しにくいです</p>



<p class="wp-block-paragraph">最初に「接続確認だけするツール」を作ってもらうと、すぐ動作確認できて手応えがつかめます</p>



<h3 class="wp-block-heading">最初の依頼：土台と接続確認だけ</h3>



<p class="wp-block-paragraph">まずはこんなふうに、使う技術と認証の方針を伝えて土台を作ってもらいます</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">PythonでWordPressを操作するMCPサーバーを作りたいです<br>・FastMCP（mcp.server.fastmcp の FastMCP）を使う<br>・WordPress REST API（/wp-json/wp/v2/）を叩く<br>・認証はアプリケーションパスワードで、認証情報は .env から読む（python-dotenv）<br>・まずは接続確認のツール（サイト名とログインユーザーを返す）だけ作って</p>
</blockquote>



<p class="wp-block-paragraph">ここで<strong><span class="swl-marker mark_yellow">認証情報は .env から読む</span></strong>と最初に指定しておくのが地味に大事です、こうしておくとコードの中にパスワードが残らないので、あとでそのまま公開しても問題ない形になります</p>



<h3 class="wp-block-heading">ツールを1つずつ足していく</h3>



<p class="wp-block-paragraph">接続確認が通ったら、記事を作るツールから順番に足していきます</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">接続確認が通ったので、記事を下書き保存するツール create_post を追加して<br>デフォルトのstatusはdraft、publishは明示したときだけにして</p>
</blockquote>



<p class="wp-block-paragraph">同じ調子で<strong>list_posts</strong>（一覧取得）、<strong>update_post</strong>（更新）、<strong>get_post</strong>（取得）と1つずつ頼んでいきます、カテゴリやタグの一覧取得・新規作成も同じやり方で足せます</p>



<h3 class="wp-block-heading">うまく作ってもらうための小さなコツ</h3>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>一度に全機能を作らせない、<strong>1ツールずつ作ってテストしてから</strong>次を足す</li>



<li>認証情報は最初に「.envから読む」と指定する（コードに直書きさせない）</li>



<li>接続確認のツールから作ると、最初の動作確認がすぐできる</li>



<li>エラーが出たら<strong>エラーメッセージをそのまま貼る</strong>と、原因を見つけて直してくれる</li>



<li>「デフォルトはdraft」のような安全側の仕様も、最初の依頼文に入れておく</li>
</ul>



<h2 class="wp-block-heading">Claude Code×WordPress自動投稿のセットアップ手順</h2>



<p class="wp-block-paragraph">ここから実際の構築手順です</p>



<h3 class="wp-block-heading">用意するもの</h3>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>必要なもの</th><th>補足</th></tr></thead><tbody><tr><td>Claude Code（Desktop版）</td><td>ClaudeのPro / Maxプランで利用可能</td></tr><tr><td>WordPress（自己ホスト型）</td><td>Xserver、ロリポップ、ConoHaなど、バージョンは5.6以上</td></tr><tr><td>Python 3.10以上</td><td>Windows 11なら公式インストーラーで導入</td></tr><tr><td>PowerShell</td><td>Windows 11標準搭載、コマンドを数行打つだけ</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Claude Codeは有料プラン専用なので、無料で試したい場合はClaudeのコネクタ機能を使う代替手段もあります</p>



<h3 class="wp-block-heading">Step1：プロジェクトフォルダを作る</h3>



<p class="wp-block-paragraph">任意の場所にフォルダを作ります、私はデスクトップに作りました</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-lang="text"><code>C:\Users\ユーザー名\Desktop\blog\</code></pre></div>



<h3 class="wp-block-heading">Step2：必要なファイルをClaudeに作ってもらう</h3>



<p class="wp-block-paragraph">前の章で作ってもらった<strong>wp_mcp_server.py</strong>に加えて、動かすために次の3ファイルが必要です、いずれもClaudeに頼めばそのまま作って配置までやってくれます</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><strong>requirements.txt</strong>（必要なライブラリ一覧）</li>



<li><strong>.mcp.json</strong>（Claude CodeにMCPサーバーの場所を教える設定）</li>



<li><strong>.env</strong>（WordPressの認証情報を書く、<span class="swl-marker mark_yellow">中身は次のステップで自分で書く</span>）</li>
</ul>



<p class="wp-block-paragraph">こんな感じで頼めばまとめて作ってくれます</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">このサーバーを動かすのに必要な requirements.txt と .mcp.json も作って、同じフォルダに置いて<br>.env は中身が認証情報なので、空のテンプレート（WP_BASE_URL / WP_USERNAME / WP_APP_PASSWORD の3つを書く枠）だけ作っておいて</p>
</blockquote>



<p class="wp-block-paragraph"><strong><span class="swl-marker mark_yellow">.envの中身（=認証情報）だけは人が書きます</span></strong>、ここはClaudeに渡さない情報なので、空のテンプレートだけ作ってもらって、値は次のステップで自分で埋めるのが安全です</p>



<h3 class="wp-block-heading">Step3：Pythonライブラリのインストールも頼める</h3>



<p class="wp-block-paragraph">requirements.txtができたら、ライブラリのインストールもClaudeに頼めます</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">requirements.txt のライブラリをインストールして</p>
</blockquote>



<p class="wp-block-paragraph">これで <strong>mcp</strong>、<strong>requests</strong>、<strong>markdown</strong> などのパッケージが入ります、自分で実行したい場合は、PowerShellで次のコマンドでもOKです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-powershell" data-lang="PowerShell"><code>cd C:\Users\ユーザー名\Desktop\blog\
python -m pip install -r requirements.txt</code></pre></div>



<h3 class="wp-block-heading">Step4：WordPressでアプリケーションパスワードを発行</h3>



<p class="wp-block-paragraph">ここが今回の肝になる部分です、普段のログインパスワードではなく <strong>API専用の使い捨てパスワード</strong>を発行します</p>



<ol style="background-color:#f3fafe80" class="wp-block-list -list-under-dashed has-background">
<li>WordPress管理画面にログインして「ユーザー → プロフィール」を開く</li>



<li>ページ最下部にある「アプリケーションパスワード」欄まで移動</li>



<li>名前を入力（例：<strong>Claude MCP</strong>）して「新しいアプリケーションパスワードを追加」をクリック</li>



<li><strong>xxxx xxxx xxxx xxxx xxxx xxxx</strong> 形式の文字列が表示されるのでコピー</li>
</ol>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21-1024x538.png" alt="" class="wp-image-4009" srcset="https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21-300x158.png 300w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21-768x403.png 768w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_21.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30-1024x538.png" alt="" class="wp-image-4010" srcset="https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30-300x158.png 300w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30-150x79.png 150w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30-768x403.png 768w, https://javeo.jp/wp-content/uploads/2026/05/2026-05-20_18h28_30.png 1198w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph"><strong><span class="swl-marker mark_yellow" style="color:#e8313b">この画面を閉じると二度と表示されません</span></strong>、すぐ次のステップで貼り付けてください</p>
</div></div>



<h3 class="wp-block-heading">Step5：.envファイルに認証情報を書く</h3>



<p class="wp-block-paragraph">Step2でClaudeに枠だけ作ってもらった<strong>.env</strong>ファイルを開いて、次の3つの値を自分で埋めます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-lang=".env"><code>WP_BASE_URL=https://あなたのドメイン
WP_USERNAME=WordPressのログインユーザー名
WP_APP_PASSWORD=xxxx xxxx xxxx xxxx xxxx xxxx</code></pre></div>



<p class="wp-block-paragraph">アプリケーションパスワードはスペース込みのままで大丈夫です、わざわざスペースを削る必要はありません</p>



<h3 class="wp-block-heading">Step6：Claude Codeで動作確認</h3>



<p class="wp-block-paragraph">このフォルダでClaude Codeを起動すると、<strong>.mcp.json</strong> が自動で検出されてMCPサーバーの起動許可を求められます、「Allow」を押してください</p>



<p class="wp-block-paragraph">その後Claude Codeに次のように頼みます</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">「WordPressの接続確認をして」</p>
</blockquote>



<p class="wp-block-paragraph">サイト名とログインユーザー名が返ってくれば接続成功です、お疲れさまでした</p>



<h2 class="wp-block-heading">作ってもらったサーバーの動作テスト手順</h2>



<p class="wp-block-paragraph">MCPサーバーのテストは<strong><span class="swl-marker mark_yellow">Claudeに実際に実行させて、会話で結果を確認するのが一番早い</span></strong>です</p>



<p class="wp-block-paragraph">ツールを1つ足すたびに次の流れを回しておくと、どこかが壊れた瞬間に気づけます、本格的なテストコード（pytestなど）を書くのは仕様が固まってからで十分です</p>



<div class="swell-block-step" data-num-style="circle">
<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">接続を確認する</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">「WordPressの接続確認をして」と頼んで、サイト名とログインユーザー名が返ってくればまず合格です</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">テスト用の下書きを作る</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">「テスト用の下書きを1件作って、投稿IDを教えて」と頼みます、WordPress管理画面の投稿一覧に下書きが増えていれば作成は成功です</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">一覧と中身を取得する</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">「下書き一覧を出して」「さっきの投稿の中身を見せて」と頼んで、取得系のツールがちゃんと動くかを見ます</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">テスト投稿を片付ける</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">「さっきのテスト投稿を削除して」で後片付けまでできれば、作成から削除まで一通り通ったことになります</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">わざと失敗させてみる</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">.envのパスワードを1文字だけ変えて、401（認証失敗）が分かりやすく返るかも見ておきます、エラーのときに何が起きたか分かる作りになっていれば安心です、確認できたらパスワードは元に戻します</p>
</div></div>
</div>



<p class="wp-block-paragraph">この「会話で1ツールずつ叩く」テストの積み重ねが、結局いちばん速くて確実でした</p>



<h2 class="wp-block-heading">Claude Codeで実際に記事を投稿する流れ</h2>



<p class="wp-block-paragraph">セットアップが終わったら、基本はチャットで会話しながら書いてもらうだけです</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">「ExcelのVLOOKUPについて、初心者向けに1000字程度で解説記事を書いて、下書きで保存しておいて」</p>
</blockquote>



<p class="wp-block-paragraph">これだけで、Claudeが記事本文を生成して<strong>create_post</strong>ツール経由でWordPressに下書きとして投稿してくれます</p>



<p class="wp-block-paragraph">あとは管理画面でプレビューして、必要なら手直しして「公開」を押すだけです</p>



<h3 class="wp-block-heading">運用上の3つの注意点</h3>



<p class="wp-block-paragraph">便利な仕組みですが、AIに丸投げで運用する前にいくつか注意点があります</p>



<div class="wp-block-group is-style-big_icon_point"><div class="wp-block-group__inner-container">
<ul class="wp-block-list -list-under-dashed">
<li><strong>下書き保存を原則とする</strong>:AIが書いた記事は人間が目視チェックしてから公開する、私のセットアップではデフォルトを<strong>draft</strong>に固定しています</li>



<li><strong>認証情報はコミットしない</strong>:<strong>.env</strong>には認証情報が入るので、GitHubなどに公開しないよう<strong>.gitignore</strong>に原則追加</li>



<li><strong>ハルシネーション対策</strong>:固有名詞・日付・数字・出典は鵜呑みにせず裏取りを推奨</li>
</ul>
</div></div>



<p class="wp-block-paragraph">特にハルシネーション対策は <a href="https://javeo.jp/claude-howto-beginner/" target="_blank" rel="noopener noreferrer">Claudeの使い方記事</a> でも書いた通り、生成AI全般で気をつけたいポイントです</p>



<h2 class="wp-block-heading">まとめ｜AIに任せる作業と人間がやるべき作業</h2>



<p class="wp-block-paragraph">今回作った仕組みを整理するとこんな感じになります</p>



<figure class="wp-block-table is-style-stripes"><table><thead><tr><th>やったこと</th><th>できるようになったこと</th></tr></thead><tbody><tr><td>MCPサーバー本体をClaudeに作ってもらう</td><td>Claude CodeからWordPressを直接操作（記事・カテゴリ・タグ・メタ・アイキャッチ）</td></tr><tr><td>アプリケーションパスワードで認証</td><td>普段のログインパスワードを使わずに済む</td></tr><tr><td>補助プラグインで触れる範囲を選ぶ</td><td>必要な項目（メタディスクリプション・投稿別CSS）だけ安全に開放</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">最初のセットアップでは認証まわりで少し手こずりましたが、一度動いてしまえば「テーマを伝える → 下書きが管理画面にできてる」という流れがとても快適です</p>



<p class="wp-block-paragraph">個人的に思うのは、<strong><span class="swl-marker mark_yellow">「AIに全部任せる」じゃなくて、手間のかかる部分をAIに渡して、最後の判断は人間がする</span></strong>、この役割分担がちょうど良い距離感でした</p>



<p class="wp-block-paragraph">ここまで読むと細かい手順や注意点が多く見えるかもしれませんが、実際にはこの記事で書いたほど細かく指示しなくても、<strong><span class="swl-marker mark_yellow">Claudeが自分で判断してよしなに進めてくれる場面が多い</span></strong>です、必要なら途中で「ここはこうして」と相談すれば直してくれます、まずは小さく頼んで動かしてみるところから始めてみてください</p>



<p class="wp-block-paragraph">同じくWordPress×AIの自動投稿を試したい方の参考になれば嬉しいです</p>



<h2 class="wp-block-heading">コード本体と仕組み｜GitHubにサンプル公開しました</h2>



<p class="wp-block-paragraph">参考までに、今回作ったMCPサーバーの主要な構成も載せておきます</p>



<p class="wp-block-paragraph">記事に載せているのは説明用に切り出した一部で、<strong>実際に動く完全版（18個のツール・840行ほど）はGitHubで公開しました</strong></p>



<p class="wp-block-paragraph"><a href="https://github.com/javeo2022/wordpress-mcp-server" target="_blank" rel="noopener noreferrer">javeo2022/wordpress-mcp-server（GitHub）</a></p>



<p class="wp-block-paragraph">そのまま使う場合は<strong>.env.example</strong>をコピーして.envを作り、自分のサイトのURLとアプリケーションパスワードを書けば動きます、.env自体は.gitignoreで除外してあるので、認証情報がうっかり一緒に公開される心配はありません</p>



<h3 class="wp-block-heading">requirements.txt</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-lang="requirements.txt"><code>mcp&gt;=1.2.0
requests&gt;=2.32.0
python-dotenv&gt;=1.0.0
markdown&gt;=3.6
python-frontmatter&gt;=1.1.0</code></pre></div>



<h3 class="wp-block-heading">.mcp.json</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-lang="JSON"><code>{
  &quot;mcpServers&quot;: {
    &quot;wordpress&quot;: {
      &quot;command&quot;: &quot;python&quot;,
      &quot;args&quot;: [&quot;C:\\path\\to\\wp_mcp_server.py&quot;],
      &quot;env&quot;: {}
    }
  }
}</code></pre></div>



<h3 class="wp-block-heading">wp_mcp_server.py（主要部分の抜粋）</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-file="wp_mcp_server.py" data-lang="Python"><code>from mcp.server.fastmcp import FastMCP
import os, requests
from dotenv import load_dotenv

load_dotenv()
WP_BASE_URL = os.getenv(&quot;WP_BASE_URL&quot;, &quot;&quot;).rstrip(&quot;/&quot;)
WP_USERNAME = os.getenv(&quot;WP_USERNAME&quot;, &quot;&quot;)
WP_APP_PASSWORD = os.getenv(&quot;WP_APP_PASSWORD&quot;, &quot;&quot;)
API_BASE = f&quot;{WP_BASE_URL}/wp-json/wp/v2&quot;

mcp = FastMCP(&quot;wordpress&quot;)

@mcp.tool()
def create_post(title: str, content: str, status: str = &quot;draft&quot;) -&gt; dict:
    &quot;&quot;&quot;新しい記事をWordPressに作成する（デフォルトは下書き）&quot;&quot;&quot;
    resp = requests.post(
        f&quot;{API_BASE}/posts&quot;,
        auth=(WP_USERNAME, WP_APP_PASSWORD),
        json={&quot;title&quot;: title, &quot;content&quot;: content, &quot;status&quot;: status},
        timeout=30,
    )
    resp.raise_for_status()
    return resp.json()

if __name__ == &quot;__main__&quot;:
    mcp.run()</code></pre></div>



<p class="wp-block-paragraph">短いコードですが、仕組みのポイントはこのあたりです</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><strong>FastMCP(&#8220;wordpress&#8221;)</strong> でサーバーを1つ定義する</li>



<li><strong><span class="swl-marker mark_yellow">@mcp.tool() を付けた関数が、そのままClaudeから呼べるツールになる</span></strong></li>



<li>関数の説明文（docstring）が「このツールは何をするか」のClaude向けの説明になるので、日本語で丁寧に書いておく</li>



<li>認証・タイムアウト・エラー処理は共通の関数にまとめて、各ツールはそれを呼ぶだけにすると見通しが良い</li>



<li>接続先のサイトを引数で切り替えられるようにすると、複数サイトの運用にも対応できる</li>
</ul>



<p class="wp-block-paragraph">完成版ではこの形で、create_postやupdate_post、upload_mediaなど合計18個のツールを登録しています</p>



<p class="wp-block-paragraph">このサーバーをそっくり真似しなくても、<strong>「こういうツールが欲しい」とClaudeに伝えて1つずつ足していく</strong>やり方なら、自分の運用に合った形が作れます</p>


<div class="p-blogParts post_content" data-partsID="4603">
<div class="jv-books" id="jv-books-ai" data-shelf="ai"><div class="jv-books-head"><span class="jv-books-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Claude・生成AIを学べる本</span><span class="jv-books-pr">PR</span></div><div class="jv-books-grid"><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4065342902?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2909/9784065342909.jpg?_ex=240x240" alt="面倒なことはChatGPTにやらせよう" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">面倒なことはChatGPTにやらせよう</p><p class="jv-book-author">カレーちゃん・からあげ</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4065342902?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="ai" data-mall="amazon" data-book="4065342902">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17728615%2F&#038;m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17728615%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="ai" data-mall="rakuten" data-book="4065342902">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4297153548?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3540/9784297153540_1_2.jpg?_ex=240x240" alt="実践Claude Code入門" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">実践Claude Code入門</p><p class="jv-book-author">西見公宏・吉田真吾・大嶋勇樹</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4297153548?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="ai" data-mall="amazon" data-book="4297153548">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18439208%2F&#038;m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18439208%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="ai" data-mall="rakuten" data-book="4297153548">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4297152754?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2758/9784297152758_1_2.jpg?_ex=240x240" alt="Claude CodeによるAI駆動開発入門" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">Claude CodeによるAI駆動開発入門</p><p class="jv-book-author">平川知秀</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4297152754?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="ai" data-mall="amazon" data-book="4297152754">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18401065%2F&#038;m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18401065%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="ai" data-mall="rakuten" data-book="4297152754">楽天で見る</a></div></div></div></div><p class="jv-books-note">私のおすすめからランダムで3冊を表示しています</p></div>
<style>
.jv-books{border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin:1.5em 0;background:#fff}
.jv-books-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.jv-books-title{font-weight:700;font-size:1.05em}
.jv-books-pr{font-size:.7em;color:#888;border:1px solid #ccc;border-radius:3px;padding:1px 6px;flex-shrink:0}
.jv-books-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;min-height:330px}
.jv-book-card{display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid #f0f0f0;border-radius:6px;padding:12px 8px;background:#fafafa}
.jv-book-cover img{width:auto;max-width:120px;height:170px;object-fit:contain}
.jv-book-info{width:100%;flex:1;display:flex;flex-direction:column}
.jv-book-title{font-size:.82em;font-weight:600;line-height:1.4;margin:8px 0 2px;min-height:2.8em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.jv-book-author{font-size:.72em;color:#777;margin:0 0 8px}
.jv-book-btns{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:auto}
.jv-btn{display:block;text-align:center;font-size:.78em;font-weight:600;color:#fff!important;text-decoration:none!important;border-radius:4px;padding:7px 4px;line-height:1.2}
.jv-btn-az{background:#e88b00}
.jv-btn-rk{background:#bf0000}
.jv-btn:hover{opacity:.85}
.jv-books-note{font-size:.7em;color:#999;text-align:right;margin:8px 0 0}
@media(max-width:599px){
.jv-books-grid{grid-template-columns:1fr;min-height:0}
.jv-book-card{flex-direction:row;text-align:left;gap:12px}
.jv-book-cover img{height:110px;max-width:80px}
.jv-book-info{min-width:0}
.jv-book-title{min-height:0}
.jv-book-btns{flex-direction:row}
.jv-btn{flex:1}
}
</style>
<script>
(function(){
var SHELF='ai';
var root=document.getElementById('jv-books-'+SHELF);
if(!root||root.dataset.init)return;
root.dataset.init='1';
var POOL=[{"t": "面倒なことはChatGPTにやらせよう", "a": "カレーちゃん・からあげ", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2909/9784065342909.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4065342902?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17728615%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17728615%2F", "id": "4065342902"}, {"t": "実践Claude Code入門", "a": "西見公宏・吉田真吾・大嶋勇樹", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3540/9784297153540_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4297153548?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18439208%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18439208%2F", "id": "4297153548"}, {"t": "Claude CodeによるAI駆動開発入門", "a": "平川知秀", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2758/9784297152758_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4297152754?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18401065%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18401065%2F", "id": "4297152754"}, {"t": "3時間で身につくClaude活用術", "a": "尾藤克之", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5495/9784866215495_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4866215496?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18576909%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18576909%2F", "id": "4866215496"}];
var REL='nofollow sponsored noopener noreferrer';
function el(tag,cls){var e=document.createElement(tag);if(cls)e.className=cls;return e;}
function btn(href,cls,label,mall,id){
var a=el('a','jv-btn '+cls);a.href=href;a.target='_blank';a.rel=REL;a.textContent=label;
a.setAttribute('data-shelf',SHELF);a.setAttribute('data-mall',mall);a.setAttribute('data-book',id);
return a;}
function card(b){
var d=el('div','jv-book-card');
var cover=el('a','jv-book-cover');cover.href=b.az;cover.target='_blank';cover.rel=REL;
var img=el('img');img.src=b.img;img.alt=b.t;img.width=120;img.height=170;img.loading='lazy';
cover.appendChild(img);
var info=el('div','jv-book-info');
var ttl=el('p','jv-book-title');ttl.textContent=b.t;
var au=el('p','jv-book-author');au.textContent=b.a;
var btns=el('div','jv-book-btns');
btns.appendChild(btn(b.az,'jv-btn-az','Amazonで見る','amazon',b.id));
if(b.rk){btns.appendChild(btn(b.rk,'jv-btn-rk','楽天で見る','rakuten',b.id));}
info.appendChild(ttl);info.appendChild(au);info.appendChild(btns);
d.appendChild(cover);d.appendChild(info);
return d;}
var pool=POOL.slice();
for(var i=pool.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=pool[i];pool[i]=pool[j];pool[j]=t;}
var grid=root.querySelector('.jv-books-grid');
grid.style.opacity='0';
while(grid.firstChild)grid.removeChild(grid.firstChild);
pool.slice(0,3).forEach(function(b){grid.appendChild(card(b));});
grid.style.transition='opacity .5s ease';
void grid.offsetWidth;
grid.style.opacity='1';
})();
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/claude-code-wordpress-mcp-xserver/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】TeamsにWebhookで自動通知する方法【2026年版】</title>
		<link>https://javeo.jp/teams-notify/</link>
					<comments>https://javeo.jp/teams-notify/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Fri, 05 Jun 2026 14:38:43 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://javeo.jp/teams-notify/</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/06/teams-notify-1024x538.jpg" class="webfeedsFeaturedVisual" /></p>PythonでTeamsに自動通知 旧Incoming Webhookの廃止を受けて、Power Automate WorkflowsのWebhookにAdaptive CardをPOSTする手順とサンプルコードまでまとめました]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/06/teams-notify-1024x538.jpg" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<p class="wp-block-paragraph">Pythonでバッチを組むと、処理結果やエラーをどこかに通知したくなります、メールだと埋もれがちなので、普段使っているチャットに飛ばしておくと見落としが減って便利です</p>



<p class="wp-block-paragraph">会社のやり取りがTeams中心なら、Teamsに通知できると確認の手間が減ります、ただ少し前まで手軽だった<strong>Incoming Webhook</strong>(Office 365 コネクタ)は段階的に廃止が進んでいて、新しく作るなら今は<strong><span class="swl-marker mark_yellow">Power Automate Workflows</span></strong>で用意するのが公式の推奨です</p>



<p class="wp-block-paragraph">以前<a href="https://javeo.jp/chatwork-notify/" target="_blank" rel="noopener noreferrer">ChatworkにPythonから通知する記事</a>を書きましたが、今回はそのTeams版です、Workflowsで発行したWebアドレスにPythonからJSONをPOSTするだけなので、流れはChatworkのときと近いです、この記事ではWebhookの作り方から実際に送るサンプルコードまでまとめてご紹介します</p>



<div class="wp-block-group is-style-big_icon_memo"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">難しいプログラムは要りません、Workflowsで1つWebhookを作って、Pythonから数行POSTするだけなので身構えなくて大丈夫です</p>
</div></div>



<h2 class="wp-block-heading">Teams通知の仕組み</h2>



<p class="wp-block-paragraph">先に全体像をつかんでおきます、やることはシンプルで、<strong>Workflows</strong>で作った<strong>Webhook URL</strong>(専用のWebアドレス)宛てに、Pythonからメッセージの中身をJSONでPOSTすると、指定したチャネルにカードとして投稿される、という流れです</p>



<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>Teamsの<strong>Workflows</strong>でWebhookを作る(Webhook URLが発行される)</li>



<li>Pythonからその<strong>Webhook URL</strong>にメッセージをJSONでPOSTする</li>



<li>指定したチャネルにメッセージが投稿される</li>
</ul>



<p class="wp-block-paragraph">送るデータの形は<strong><span class="swl-marker mark_yellow">Adaptive Card</span></strong>という、Teamsが受け取れるカード形式のJSONです、見た目はあとから整えられますが、まずは1行のメッセージを送るところから作っていきます</p>



<div class="wp-block-group is-style-big_icon_memo"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">昔の<strong>Incoming Webhook</strong>は宛先のURLさえ知っていれば誰でも投稿できる作りで、セキュリティ面が心配されていました、Workflowsは作った人のフロー(自動処理)を経由して投稿する形になっていて、そのあたりが置き換わった理由とされています</p>
</div></div>



<h2 class="wp-block-heading">WorkflowsでWebhookを作る</h2>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">はじめに前提です、Workflows(Power Automate)を使うには<strong><span class="swl-marker mark_yellow">職場または学校アカウント(Microsoft 365)</span></strong>が必要です、個人用のMicrosoftアカウント(outlook.comなど)ではPower Automateが使えず、WorkflowsアプリがTeamsのメニューに出てこないので、会社や学校のTeamsで用意してください</p>
</div></div>



<p class="wp-block-paragraph">まずはTeams側でWebhookを用意します、公式に用意されているテンプレートを選ぶだけなので、プログラムの知識は要りません、手順は次のとおりです</p>



<div class="swell-block-step" data-num-style="circle">
<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">Workflowsアプリを開く</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">Teamsの左側のメニューから<strong><span class="swl-marker mark_yellow">Workflows</span></strong>アプリを開きます、見当たらないときは左メニューの一番下にある<strong>アプリ</strong>から<strong>Workflows</strong>を検索すると出てきます</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">テンプレートを選ぶ</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">テンプレートの一覧から<strong><span class="swl-marker mark_yellow">Webhook 要求を受信したらチャネルに投稿する</span></strong>(英語表記だと Post to a channel when a webhook request is received)を選びます</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">フロー名を入力する</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">このWebhookの名前(フロー名)を入力します、あとから自分が見て分かればいいので、バッチ通知用のような名前を付けておくと管理が楽です</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">投稿先のチームとチャネルを選ぶ</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">通知を流したい<strong>チーム</strong>と<strong>チャネル</strong>を選びます、ここで選べるのは<strong><span class="swl-marker mark_yellow">標準チャネル</span></strong>だけなので、非公開チャネルやチャットには直接送れない点に気をつけてください</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">Webhook URLをコピーして控える</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">作成すると<strong><span class="swl-marker mark_yellow">Webhook URL</span></strong>が発行されます、このURL宛てにPythonからPOSTする形になるので、コピーして控えておきます、画面を閉じたあとに確認したいときは、Workflowsアプリの一覧から該当のフローを開いて見られます</p>
</div></div>
</div>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">発行された<strong><span class="swl-marker mark_yellow" style="color:#e8313b">Webhook URLはパスワードと同じ</span></strong>です、このURLを知っていれば該当チャネルに投稿できてしまうので、人に教えたりGitHubなどの公開リポジトリにそのまま載せたりしないように気をつけてください</p>
</div></div>



<h2 class="wp-block-heading">Pythonのプログラム</h2>



<p class="wp-block-paragraph">Webhook URLが用意できたら、あとはPythonから送るだけです、URLはコードに直書きせず<strong>.env</strong>ファイルから読み込む形にしています、こうしておけば値を差し替えるのも楽ですし、うっかり鍵を公開してしまう事故も防げます</p>



<p class="wp-block-paragraph">まず読み込みに使う<strong>python-dotenv</strong>を入れておきます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>pip install python-dotenv</code></pre></div>



<p class="wp-block-paragraph">次にプロジェクトの直下に<strong>.env</strong>を作って、さっき発行された<strong>Webhook URL</strong>を書いておきます、変数名は<strong>TEAMS_WEBHOOK_URL</strong>にして、値だけ(URLそのもの)を書きます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>TEAMS_WEBHOOK_URL=発行されたWebhook URL</code></pre></div>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">作った<strong>.env</strong>は<strong>.gitignoreに入れて</strong>、GitHubなどにアップしないようにしておきます、.gitignoreはGitに「このファイルは管理しないでね(=GitHubにもアップしないでね)」と伝えるためのリストです、これで鍵をコードに直書きせず、リポジトリにも残さずに済みます</p>
</div></div>



<p class="wp-block-paragraph">本体のコードがこちらです、ステータスコードが200か202かどうかで送信成功を True・False で返すようにしています</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import os

import requests
from dotenv import load_dotenv

load_dotenv()
TEAMS_WEBHOOK_URL = os.environ[&quot;TEAMS_WEBHOOK_URL&quot;]


def send_to_teams(message, webhook_url=TEAMS_WEBHOOK_URL) -&gt; bool:
    payload = {
        &quot;type&quot;: &quot;message&quot;,
        &quot;attachments&quot;: [
            {
                &quot;contentType&quot;: &quot;application/vnd.microsoft.card.adaptive&quot;,
                &quot;content&quot;: {
                    &quot;$schema&quot;: &quot;http://adaptivecards.io/schemas/adaptive-card.json&quot;,
                    &quot;type&quot;: &quot;AdaptiveCard&quot;,
                    &quot;version&quot;: &quot;1.4&quot;,
                    &quot;body&quot;: [
                        {&quot;type&quot;: &quot;TextBlock&quot;, &quot;text&quot;: message, &quot;wrap&quot;: True},
                    ],
                },
            }
        ],
    }
    response = requests.post(webhook_url, json=payload)
    return response.status_code in (200, 202)</code></pre></div>



<p class="wp-block-paragraph">やっていることはシンプルで、発行された<strong>Webhook URL</strong>に対して、メッセージを入れたJSONをPOSTするだけです、送るJSONはトップに type として message を置いて、その中の attachments に<strong>Adaptive Card</strong>を入れる、という決まった形になっています、引数のmessageがそのまま<strong>TextBlock</strong>の本文として表示されます</p>



<p class="wp-block-paragraph">送り方のポイントが2つあります、まず<strong>json=</strong>でデータを渡すと、Content-Typeが<strong>application/json</strong>に自動で設定されるので、ヘッダーを手で書く必要はありません、認証についても<strong><span class="swl-marker mark_yellow">Webhook URL自体に署名が含まれている</span></strong>ので、追加の認証ヘッダやトークンは不要です</p>



<div class="wp-block-group is-style-big_icon_point"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">成功したときのステータスコードは<strong><span class="swl-marker mark_yellow" style="color:#e8313b">202(Accepted)</span></strong>です、Chatworkなどは200が返りますが、WorkflowsのWebhookは受け付けてから裏で処理する作りなので、200ではなく202が返ってきます、なので成功判定は200と202のどちらかなら成功、としています</p>
</div></div>



<p class="wp-block-paragraph">あとは <strong>send_to_teams(&#39;通知したいメッセージ&#39;)</strong> のように呼べば、バッチの好きなタイミングで通知できます、処理が終わったタイミングや、例外を捕まえたタイミングで呼ぶと、結果やエラーをそのままTeamsに流せます</p>



<div class="wp-block-group is-style-big_icon_memo"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph"><strong>TextBlock</strong>の<strong>text</strong>には、太字や斜体、リンクといった一部のmarkdownが使えます、見出しや改行で少し見やすくする程度なら十分です、ただ画像やコードブロックは別の要素を組む形になるので、ここでは1行のテキストを送る範囲にとどめています</p>
</div></div>



<h2 class="wp-block-heading">使うときの注意点</h2>



<p class="wp-block-paragraph">つまずきやすいところを先にまとめておきます</p>



<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li>投稿先に選べるのは<strong>標準チャネル</strong>だけ(非公開チャネルやチャットには直接送れない)</li>



<li>旧<strong>Incoming Webhook</strong>は廃止される流れなので、これから作るなら<strong>Workflows</strong>で用意する</li>



<li>成功のステータスコードは<strong>200ではなく202</strong>になることがある</li>



<li>利用には<strong>職場・学校アカウント(Microsoft 365)</strong>が必要(個人アカウントではWorkflowsが使えない)</li>
</ul>



<p class="wp-block-paragraph">旧<strong>Incoming Webhook</strong>(Office 365 コネクタ)は段階的に廃止が進められてきて、公式の最新案内では<strong><span class="swl-marker mark_yellow">2026年5月の更新で最終的な廃止</span></strong>とされています、期限は過去に何度も後ろ倒しされてきた経緯がありますが、これから新しく作るなら使えない前提で考えておくのが安全なので、Workflowsで用意するのが確実です、既存のWebhookがある人も最新の案内を確認しつつ早めに移しておくと安心です</p>



<p class="wp-block-paragraph">権限まわりは環境によります、Power Automateは多くのMicrosoft 365環境で使えますが、組織の設定によってはWorkflowsの作成が制限されていることもあります、テンプレートが選べない、作成でエラーが出るといったときは、組織の管理者に確認してみてください</p>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">ループの中で大量に送るような使い方は避けて、処理結果やエラーの要点だけ送るくらいがちょうどいいです、短時間に送りすぎると制限がかかることもあるので、通知は要点をまとめて1回、を意識しておくと安全です</p>
</div></div>



<h2 class="wp-block-heading">公式ドキュメント</h2>



<p class="wp-block-paragraph">もう少し踏み込みたいときは、↓の公式ドキュメントが参考になります、Workflowsからカードを投稿する話や、コネクタ廃止の経緯がまとまっています</p>



<ul class="wp-block-list -list-under-dashed">
<li><a href="https://learn.microsoft.com/ja-jp/power-automate/overview-adaptive-cards" target="_blank" rel="noopener noreferrer">Microsoft Teams にアダプティブ カードを投稿するフローを作成する｜Microsoft Learn</a></li>



<li><a href="https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/" target="_blank" rel="noopener noreferrer">Retirement of Office 365 connectors within Microsoft Teams｜Microsoft 365 Developer Blog</a></li>
</ul>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">仕事のやり取りがTeams中心なら、処理結果やエラーがそのまま流れてくると見落としがぐっと減ります、Webhookを1つ作ってしまえば、あとはPythonから呼ぶだけなので、一度組んでおくと使い回しが効きます</p>



<p class="wp-block-paragraph">同じ要領でChatworkに通知したい方は、<a href="https://javeo.jp/chatwork-notify/" target="_blank" rel="noopener noreferrer">PythonからChatworkに自動通知する記事</a>もあわせてどうぞ、APIトークンとルームIDの取り方からまとめています、送り先が違うだけで、Pythonから通知する考え方は今回とほぼ同じです</p>



<p class="wp-block-paragraph">Pythonの自動化つながりだと、<a href="https://javeo.jp/python_wait/" target="_blank" rel="noopener noreferrer">Selenium WebDriverWaitの使い方</a>でスクレイピングを安定させて、その結果をこのTeams通知に流す、といった組み合わせも便利です、作ったスクリプトを配りたいときは、<a href="https://javeo.jp/decompile-pyinstaller/" target="_blank" rel="noopener noreferrer">PyInstallerでexe化する話</a>もどうぞ</p>


<div class="p-blogParts post_content" data-partsID="4602">
<div class="jv-books" id="jv-books-python" data-shelf="python"><div class="jv-books-head"><span class="jv-books-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Python自動化の独学に効く本</span><span class="jv-books-pr">PR</span></div><div class="jv-books-grid"><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4814401523?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1529/9784814401529_1_2.jpg?_ex=240x240" alt="退屈なことはPythonにやらせよう 第3版" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">退屈なことはPythonにやらせよう 第3版</p><p class="jv-book-author">Al Sweigart</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4814401523?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="amazon" data-book="4814401523">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="rakuten" data-book="4814401523">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4297107384?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7383/9784297107383.jpg?_ex=240x240" alt="Pythonクローリング&amp;スクレイピング 増補改訂版" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">Pythonクローリング&amp;スクレイピング 増補改訂版</p><p class="jv-book-author">加藤耕太</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4297107384?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="amazon" data-book="4297107384">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="rakuten" data-book="4297107384">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4839973857?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3858/9784839973858.jpg?_ex=240x240" alt="シゴトがはかどる Python自動処理の教科書" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">シゴトがはかどる Python自動処理の教科書</p><p class="jv-book-author">クジラ飛行机</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4839973857?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="amazon" data-book="4839973857">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="rakuten" data-book="4839973857">楽天で見る</a></div></div></div></div><p class="jv-books-note">私のおすすめからランダムで3冊を表示しています</p></div>
<style>
.jv-books{border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin:1.5em 0;background:#fff}
.jv-books-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.jv-books-title{font-weight:700;font-size:1.05em}
.jv-books-pr{font-size:.7em;color:#888;border:1px solid #ccc;border-radius:3px;padding:1px 6px;flex-shrink:0}
.jv-books-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;min-height:330px}
.jv-book-card{display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid #f0f0f0;border-radius:6px;padding:12px 8px;background:#fafafa}
.jv-book-cover img{width:auto;max-width:120px;height:170px;object-fit:contain}
.jv-book-info{width:100%;flex:1;display:flex;flex-direction:column}
.jv-book-title{font-size:.82em;font-weight:600;line-height:1.4;margin:8px 0 2px;min-height:2.8em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.jv-book-author{font-size:.72em;color:#777;margin:0 0 8px}
.jv-book-btns{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:auto}
.jv-btn{display:block;text-align:center;font-size:.78em;font-weight:600;color:#fff!important;text-decoration:none!important;border-radius:4px;padding:7px 4px;line-height:1.2}
.jv-btn-az{background:#e88b00}
.jv-btn-rk{background:#bf0000}
.jv-btn:hover{opacity:.85}
.jv-books-note{font-size:.7em;color:#999;text-align:right;margin:8px 0 0}
@media(max-width:599px){
.jv-books-grid{grid-template-columns:1fr;min-height:0}
.jv-book-card{flex-direction:row;text-align:left;gap:12px}
.jv-book-cover img{height:110px;max-width:80px}
.jv-book-info{min-width:0}
.jv-book-title{min-height:0}
.jv-book-btns{flex-direction:row}
.jv-btn{flex:1}
}
</style>
<script>
(function(){
var SHELF='python';
var root=document.getElementById('jv-books-'+SHELF);
if(!root||root.dataset.init)return;
root.dataset.init='1';
var POOL=[{"t": "退屈なことはPythonにやらせよう 第3版", "a": "Al Sweigart", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1529/9784814401529_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4814401523?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F", "id": "4814401523"}, {"t": "Pythonクローリング&スクレイピング 増補改訂版", "a": "加藤耕太", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7383/9784297107383.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4297107384?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F", "id": "4297107384"}, {"t": "シゴトがはかどる Python自動処理の教科書", "a": "クジラ飛行机", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3858/9784839973858.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4839973857?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F", "id": "4839973857"}, {"t": "もっとシゴトがはかどる Python×Excel×AI 業務自動化の教科書", "a": "クジラ飛行机", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8302/9784839988302_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4839988307?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18238595%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18238595%2F", "id": "4839988307"}, {"t": "Python2年生 スクレイピングのしくみ 第2版", "a": "森巧尚", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2605/9784798182605.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4798182605?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17821975%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17821975%2F", "id": "4798182605"}];
var REL='nofollow sponsored noopener noreferrer';
function el(tag,cls){var e=document.createElement(tag);if(cls)e.className=cls;return e;}
function btn(href,cls,label,mall,id){
var a=el('a','jv-btn '+cls);a.href=href;a.target='_blank';a.rel=REL;a.textContent=label;
a.setAttribute('data-shelf',SHELF);a.setAttribute('data-mall',mall);a.setAttribute('data-book',id);
return a;}
function card(b){
var d=el('div','jv-book-card');
var cover=el('a','jv-book-cover');cover.href=b.az;cover.target='_blank';cover.rel=REL;
var img=el('img');img.src=b.img;img.alt=b.t;img.width=120;img.height=170;img.loading='lazy';
cover.appendChild(img);
var info=el('div','jv-book-info');
var ttl=el('p','jv-book-title');ttl.textContent=b.t;
var au=el('p','jv-book-author');au.textContent=b.a;
var btns=el('div','jv-book-btns');
btns.appendChild(btn(b.az,'jv-btn-az','Amazonで見る','amazon',b.id));
if(b.rk){btns.appendChild(btn(b.rk,'jv-btn-rk','楽天で見る','rakuten',b.id));}
info.appendChild(ttl);info.appendChild(au);info.appendChild(btns);
d.appendChild(cover);d.appendChild(info);
return d;}
var pool=POOL.slice();
for(var i=pool.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=pool[i];pool[i]=pool[j];pool[j]=t;}
var grid=root.querySelector('.jv-books-grid');
grid.style.opacity='0';
while(grid.firstChild)grid.removeChild(grid.firstChild);
pool.slice(0,3).forEach(function(b){grid.appendChild(card(b));});
grid.style.transition='opacity .5s ease';
void grid.offsetWidth;
grid.style.opacity='1';
})();
</script>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/teams-notify/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>VBAでJSONを扱う方法 VBA-JSONの使い方</title>
		<link>https://javeo.jp/vba-json/</link>
					<comments>https://javeo.jp/vba-json/#comments</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Fri, 22 May 2026 23:00:00 +0000</pubDate>
				<category><![CDATA[Excel・VBA]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[マクロ]]></category>
		<category><![CDATA[初心者]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=111</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/05/vba-json-1024x538.jpg" class="webfeedsFeaturedVisual" /></p>ExcelVBAでJSONを扱うなら定番ライブラリ「VBA-JSON」がおすすめです、JsonConverter.basの導入から参照設定、ParseJsonでのパース、ConvertToJsonでの生成、配列やネストへのアクセスまで初心者向けにまとめました]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/05/vba-json-1024x538.jpg" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<p class="wp-block-paragraph">「VBAでJSONを読み込みたいんだけど、標準機能だとどうにもならない…」と手が止まっていませんか？</p>



<p class="wp-block-paragraph">結論から言うと、<strong><span class="swl-marker mark_yellow">ExcelVBAでJSONを扱うなら「VBA-JSON」という定番ライブラリを入れるのが一番ラク</span></strong>です</p>



<p class="wp-block-paragraph">やることはシンプルで、<code>JsonConverter.bas</code> というファイルを1つ取り込んで、参照設定を1つ入れるだけ、あとは <code>ParseJson</code> でJSONを読み込んで、<code>ConvertToJson</code> でJSONを書き出せます</p>



<p class="wp-block-paragraph">この記事では、VBA-JSONの導入から実際の使い方(パース・生成・配列やネストへのアクセス・ループ処理)まで、初心者の方にも分かるように順を追って解説していきます、つまずきポイントとFAQ、AIにコードを書いてもらうコツもまとめているので、必要なところだけ拾い読みでも大丈夫です</p>



<h2 class="wp-block-heading">VBAでJSONを扱うなら VBA-JSON が定番</h2>



<p class="wp-block-paragraph">まず大前提として、<strong>VBAには標準でJSONを扱う機能がありません</strong></p>



<p class="wp-block-paragraph">Excelには CSV を読む機能はあっても、JSONをそのまま「項目ごとに取り出す」みたいなことは素のVBAだとできないんですよね</p>



<p class="wp-block-paragraph">そこで使うのが、オープンソースのライブラリ「<strong>VBA-JSON</strong>」です</p>



<p class="wp-block-paragraph">GitHubの <a href="https://github.com/VBA-tools/VBA-JSON" target="_blank" rel="noopener noreferrer">VBA-tools/VBA-JSON</a> で公開されていて、JSON界隈ではかなり知られた定番です、最新は <code>v2.3.1</code> で、WindowsのExcelでもMacのExcelでも動きます</p>



<p class="wp-block-paragraph">使う関数は基本的にこの2つだけ覚えればOKです</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><strong>ParseJson</strong> … JSON文字列を、VBAで扱えるデータ(Dictionary / Collection)に変換する(=読み込む)</li>



<li><strong>ConvertToJson</strong> … VBAのデータを、JSON文字列に変換する(=書き出す)</li>
</ul>



<p class="wp-block-paragraph">「読み込む」と「書き出す」の往復、これだけです、難しそうに見えて中身はシンプルなので安心してください</p>



<h2 class="wp-block-heading">VBAでJSONを扱う場面はどんなとき？</h2>



<p class="wp-block-paragraph">そもそも「ExcelでJSONなんて使うの？」と思うかもしれませんが、最近のWeb APIはJSONで返ってくるのがほぼ標準なので、意外と日常業務の中で出番があります</p>



<p class="wp-block-paragraph">たとえばこんなケースです</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>為替レートや天気予報のWeb APIを叩いてExcelに取り込む</li>



<li>WebサービスからダウンロードしたデータをVBAで集計する</li>



<li>取引先のシステムとJSON形式でデータをやり取りする</li>



<li>WordPressや社内システムのREST APIを操作する</li>
</ul>



<p class="wp-block-paragraph">VBA-JSONを使えるようになると、<strong>Excel完結の作業に外部データを取り込める幅</strong>が一気に広がります、普段の集計シートに「最新のデータを自動で引っ張ってくる」ような仕組みを足せるイメージですね</p>



<p class="wp-block-paragraph">実際にWeb APIへリクエストを送ってJSONを受け取る流れは、<a href="https://javeo.jp/ebay-api-request/" target="_blank" rel="noopener noreferrer">eBay APIにVBAでリクエストを送る方法を解説した記事</a>でも具体例を扱っているので、API連携をやってみたい方はあわせてどうぞ</p>



<h2 class="wp-block-heading">そもそもJSONって何？という人向けの基礎</h2>



<p class="wp-block-paragraph">「JSONって言葉は聞くけど、よく分かってない」という方のために、ここで一度ざっくり整理しておきます、もう分かってる方は読み飛ばしてOKです</p>



<p class="wp-block-paragraph">JSON(<strong>J</strong>ava<strong>S</strong>cript <strong>O</strong>bject <strong>N</strong>otation)は、テキストベースのデータ交換フォーマットです</p>



<p class="wp-block-paragraph">Web APIからデータを取得するとき、他システムとのデータやり取りなど、いろんな場面で使われています、軽量で人間にも機械にも読みやすいのが特徴ですね</p>



<h3 class="wp-block-heading">JSONの基本構造と記述ルール</h3>



<p class="wp-block-paragraph">細かいルールはいくつかありますが、まず押さえておきたいのはこのあたりです</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>項目名は「&#8221;」(ダブルクォーテーション)で囲む</li>



<li>文字列も「&#8221;」(ダブルクォーテーション)で囲む</li>



<li>数値は小数点を含めてそのまま表記(クォーテーション不要)</li>



<li>真偽値(Boolean)は「true」「false」のどちらか ※小文字、「&#8221;」は付けない</li>



<li>Null値は「null」 ※小文字、「&#8221;」は付けない</li>



<li>「[ ]」で囲んだ配列の中も、上記と同じルール</li>
</ul>



<p class="wp-block-paragraph">形としては「<code>"キー": 値</code>」のセットが基本で、複数のデータを <code>{ }</code> で囲んだものを「オブジェクト」、順序のあるデータの並びを <code>[ ]</code> で囲んだものを「配列」と呼びます</p>



<p class="wp-block-paragraph">このあたりの言葉は、VBA-JSONを使うときに何度も出てくるので、なんとなく頭に入れておくと後がスムーズです</p>



<h3 class="wp-block-heading">JSONのサンプルをExcelの表で考えてみる</h3>



<p class="wp-block-paragraph">JSONはCSVほど一目で分かる形式じゃないので、サンプルと一緒に見方を説明します、この記事ではずっとこのデータを例に進めていきます</p>



<p class="wp-block-paragraph">たとえばこんなJSON形式のデータがあるとして</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-lang="JSON"><code>[{&quot;name&quot;:&quot;Javeo&quot;,&quot;birthdate&quot;:{&quot;year&quot;:2000,&quot;month&quot;:1,&quot;day&quot;:1},&quot;height&quot;:180,&quot;weight&quot;:70,&quot;favorite_foods&quot;:[&quot;Meat&quot;,&quot;Vegetables&quot;],&quot;glasses&quot;:true},{&quot;name&quot;:&quot;Javelin&quot;,&quot;birthdate&quot;:{&quot;year&quot;:2002,&quot;month&quot;:2,&quot;day&quot;:2},&quot;height&quot;:150,&quot;weight&quot;:null,&quot;favorite_foods&quot;:[&quot;Sweets&quot;],&quot;glasses&quot;:false}]</code></pre></div>



<p class="wp-block-paragraph">一行だと分かりづらいので、整形するとこうなります(VSCodeなどのエディタで簡単に整形できます)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-json" data-lang="JSON"><code>[
  {
    &quot;name&quot;: &quot;Javeo&quot;,
    &quot;birthdate&quot;: {
      &quot;year&quot;: 2000,
      &quot;month&quot;: 1,
      &quot;day&quot;: 1
    },
    &quot;height&quot;: 180,
    &quot;weight&quot;: 70,
    &quot;favorite_foods&quot;: [
      &quot;Meat&quot;,
      &quot;Vegetables&quot;
    ],
    &quot;glasses&quot;: true
  },
  {
    &quot;name&quot;: &quot;Javelin&quot;,
    &quot;birthdate&quot;: {
      &quot;year&quot;: 2002,
      &quot;month&quot;: 2,
      &quot;day&quot;: 2
    },
    &quot;height&quot;: 150,
    &quot;weight&quot;: null,
    &quot;favorite_foods&quot;: [
      &quot;Sweets&quot;
    ],
    &quot;glasses&quot;: false
  }
]</code></pre></div>



<p class="wp-block-paragraph">これをExcel的に表にすると、こんなイメージになります</p>


<div class="c-scrollHint"><span>スクロールできます <i class="icon-more_arrow"></i></span></div>
<figure data-table-scrollable="both" class="wp-block-table is-all-centered"><table style="--table-width:1200px;"><tbody><tr><th rowspan="2">name</th><th colspan="3">birthdate</th><th rowspan="2">height</th><th rowspan="2">witght</th><th colspan="2" rowspan="2">favorite_foods</th><th rowspan="2">glasses</th></tr><tr><th>year</th><th>month</th><th>day</th></tr><tr><td>javeo</td><td>2000</td><td>1</td><td>1</td><td>180</td><td>70</td><td>Meat</td><td>Vegetables</td><td>true</td></tr><tr><td>Javelin</td><td>2002</td><td>2</td><td>2</td><td>150</td><td></td><td>Sweets</td><td></td><td>false</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">つまりJSONをざっくり言うと、<strong>項目と値が対になっていて、「{ }」が階層を、「[ ]」が配列のデータ群を表している</strong>と思えばOKです</p>



<p class="wp-block-paragraph">この「JaveoとJavelinの2人分のデータ」を、これからVBA-JSONで取り出していきます</p>



<h2 class="wp-block-heading">VBA-JSONの導入手順(2026年版)</h2>



<p class="wp-block-paragraph">ここが一番大事なパートです、導入でつまずく人が多いので、順番にやっていきましょう</p>



<p class="wp-block-paragraph">やることは大きく分けて2つ、<strong><span class="swl-marker mark_yellow">「JsonConverter.basのインポート」と「参照設定」</span></strong>だけです</p>



<div class="swell-block-step" data-num-style="circle">
<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l"><strong>ライブラリのダウンロード</strong></div><div class="swell-block-step__body">
<p class="wp-block-paragraph">GitHubの<a href="https://github.com/VBA-tools/VBA-JSON" target="_blank" rel="noreferrer noopener">VBA-tools/VBA-JSON</a>リポジトリにアクセス</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l"><strong>ファイルを探す</strong></div><div class="swell-block-step__body">
<p class="wp-block-paragraph">ページ内にある「<code>JsonConverter.bas</code>」をダウンロード</p>



<p class="wp-block-paragraph">※何年も更新されていませんが、文字列を分解するだけのプログラムで特に改良点がないってだけなので気にせずどうぞ</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l"><strong>VBAへのインポート</strong></div><div class="swell-block-step__body">
<p class="wp-block-paragraph">VBAで使えるようにするにはVBEの画面でインポートするだけ</p>



<div class="wp-block-media-text is-stacked-on-mobile"><figure class="wp-block-media-text__media"><a href="https://javeo.jp/wp-content/uploads/2022/02/image-6.png"><img decoding="async" width="298" height="398" src="https://javeo.jp/wp-content/uploads/2022/02/image-6.png" alt="" class="wp-image-159 size-full" srcset="https://javeo.jp/wp-content/uploads/2022/02/image-6.png 298w, https://javeo.jp/wp-content/uploads/2022/02/image-6-225x300.png 225w" sizes="(max-width: 298px) 100vw, 298px" /></a></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">プロジェクトエクスプローラー<br>右クリック→「ファイルのインポート」</p>
</div></div>



<p class="wp-block-paragraph">もしくは「JsonConverter.bas」をプロジェクトエクスプローラーへドラッグ&amp;ドロップでもOK</p>



<figure class="wp-block-image size-full"><a href="https://javeo.jp/wp-content/uploads/2022/02/VBA-JSONをインポート.gif"><img decoding="async" width="868" height="474" src="https://javeo.jp/wp-content/uploads/2022/02/VBA-JSONをインポート.gif" alt="" class="wp-image-167"/></a></figure>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">Microsoft Scripting Runtime に参照設定する</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">VBA-JSONを動かすには参照設定が要ります</p>



<p class="wp-block-paragraph">VBA-JSONは内部で「Dictionary」という、キーと値をセットで扱うデータの入れ物を使っています、このDictionaryをそのまま書くスタイル(早期バインディングと言います)で動かすために、<strong><span class="swl-marker mark_yellow">Microsoft Scripting Runtime への参照設定が必要</span></strong>になります</p>



<p class="wp-block-paragraph">設定はVBEのメニューからで、手順はこうです</p>



<ol style="background-color:#f8fbfd" class="wp-block-list -list-under-dashed has-background">
<li>VBEのメニューで「ツール → 参照設定」を開く</li>



<li>一覧から「<code>Microsoft Scripting Runtime</code>」を探す</li>



<li>チェックボックスにチェックを入れて「OK」を押す</li>
</ol>



<p class="wp-block-paragraph">これを忘れると、コードを実行したときに「ユーザー定義型は定義されていません」というエラーが出ます、後ろのFAQでも触れますが、この参照設定はかなりの確率でハマるので先に済ませておくのがおすすめです</p>
</div></div>
</div>



<h3 class="wp-block-heading">Mac の Excel で使う場合</h3>



<p class="wp-block-paragraph">MacのExcelには Microsoft Scripting Runtime が無いので、参照設定の代わりに同じ作者の「<strong>VBA-Dictionary</strong>」というライブラリを一緒に入れます</p>



<p class="wp-block-paragraph"><a href="https://github.com/VBA-tools/VBA-Dictionary" target="_blank" rel="noopener noreferrer">VBA-tools/VBA-Dictionary</a> から <code>Dictionary.cls</code> をダウンロードして、JsonConverter.bas と同じようにインポートすればOKです、WindowsとMacの両方で動かしたいときも、参照設定ではなくこのVBA-Dictionaryを使う形にしておくと安心ですね</p>



<p class="wp-block-paragraph">ここまでできたら準備は完了です、いよいよ実際にJSONを扱っていきます</p>



<h2 class="wp-block-heading">ParseJson でJSONを解析(パース)してみる</h2>



<p class="wp-block-paragraph">JSON形式のテキストを、VBAで扱えるデータ構造(DictionaryやCollection)に変換することを「<strong>解析(パース)</strong>」と言います</p>



<p class="wp-block-paragraph">このパースが、<code>ParseJson</code> 関数を使えば<strong>たった一行で完了</strong>します</p>



<p class="wp-block-paragraph">まずはWeb APIからJSONを取ってきてパースする、いちばんよくある形のサンプルです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>&#39; /// 事前準備 ///
&#39; VBEの [ツール] &gt; [参照設定] から下記にチェックを入れる
&#39; ・Microsoft Scripting Runtime   (Dictionary用、VBA-JSONに必須)
&#39; ・Microsoft XML, v6.0           (APIを叩く場合)
Sub GetJsonData()
    Dim http As Object
    Dim jsonText As String
    Dim parsedData As Object &#39; 解析後のデータ格納用

    &#39; Web APIからJSONデータを取得(例)
    Set http = CreateObject(&quot;MSXML2.XMLHTTP&quot;)
    http.Open &quot;GET&quot;, &quot;https://javeo.jp/wp-json/test/v1/data&quot;, False
    http.send
    jsonText = http.responseText

    &#39; ここがVBA-JSONの本体、JSONを解析
    Set parsedData = ParseJson(jsonText)

    &#39; 解析したデータをデバッグ出力
    Debug.Print &quot;名前: &quot; & parsedData(1)(&quot;name&quot;)
    Debug.Print &quot;身長: &quot; & parsedData(1)(&quot;height&quot;)

    Set http = Nothing
    Set parsedData = Nothing
End Sub</code></pre></div>



<p class="wp-block-paragraph">長く見えるかもしれませんが、VBA-JSONを使っている箇所は、結局このたった一行だけです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Set parsedData = ParseJson(jsonText)</code></pre></div>



<p class="wp-block-paragraph">この一行を通すことで、最初のサンプルにあった「長いただの文字列」が、<code>parsedData(1)("name")</code> といった具合に<strong>要素を指定してデータを取り出せる構造</strong>に変わります</p>



<p class="wp-block-paragraph">APIを使わず、手元の文字列をそのままパースして試すこともできます、まずは動きを確かめたいときはこちらが手っ取り早いです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Sub ParseSample()
    Dim jsonText As String
    Dim parsedData As Object

    &#39; 動作確認用に文字列を直接用意
    jsonText = &quot;[{&quot;&quot;name&quot;&quot;:&quot;&quot;Javeo&quot;&quot;,&quot;&quot;height&quot;&quot;:180}]&quot;

    Set parsedData = ParseJson(jsonText)

    Debug.Print parsedData(1)(&quot;name&quot;) &#39; → Javeo
    Debug.Print parsedData(1)(&quot;height&quot;) &#39; → 180
End Sub</code></pre></div>



<p class="wp-block-paragraph">VBAの中で「&#8221;」を書くときは「&#8221;&#8221;」と2つ重ねる必要があるので、そこだけ少し読みづらいですが、やっていることは「文字列をパースして取り出す」だけです</p>



<h2 class="wp-block-heading">パースしたJSONから値を取り出す(配列・オブジェクト・ネスト)</h2>



<p class="wp-block-paragraph">ここがVBA-JSONを使ううえで一番つまずきやすく、そして一番大事なところです</p>



<p class="wp-block-paragraph">ポイントは、<strong>パース後のデータが「Dictionary」と「Collection」の2種類に化けている</strong>という点です</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>JSONの「{ }」(オブジェクト)→ <strong>Dictionary</strong> になる(キー名で取り出す)</li>



<li>JSONの「[ ]」(配列)→ <strong>Collection</strong> になる(番号で取り出す)</li>
</ul>



<p class="wp-block-paragraph">この区別さえ分かれば、あとは指定の仕方が決まります、サンプルの「JaveoとJavelinのデータ」を例に、ひとつずつ見ていきましょう</p>



<h3 class="wp-block-heading">配列(Collection)は番号で取り出す</h3>



<p class="wp-block-paragraph">サンプルのJSONは全体が「[ ]」で囲まれた配列なので、パース直後の <code>parsedData</code> はCollectionになっています</p>



<p class="wp-block-paragraph">Collectionは「何番目」という番号(インデックス)で要素を取り出します、<strong>VBAのCollectionは1番から始まる</strong>のがポイントで、0番からじゃないので注意です</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>&#39; 1人目(Javeo)のデータを取り出す
Set firstPerson = parsedData(1)

&#39; 2人目(Javelin)のデータを取り出す
Set secondPerson = parsedData(2)</code></pre></div>



<h3 class="wp-block-heading">オブジェクト(Dictionary)はキー名で取り出す</h3>



<p class="wp-block-paragraph">取り出した1人分のデータ(<code>parsedData(1)</code>)は「{ }」のオブジェクトなので、こちらはDictionaryです</p>



<p class="wp-block-paragraph">Dictionaryは番号ではなく、<strong>キー名(項目名)を指定して</strong>値を取り出します</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>&#39; 1人目の名前と身長
Debug.Print parsedData(1)(&quot;name&quot;)   &#39; → Javeo
Debug.Print parsedData(1)(&quot;height&quot;) &#39; → 180

&#39; 真偽値もそのまま取れる
Debug.Print parsedData(1)(&quot;glasses&quot;) &#39; → True</code></pre></div>



<p class="wp-block-paragraph"><code>parsedData(1)("name")</code> は「配列の1番目(Collection)→ その中のnameキー(Dictionary)」という読み方になります、カッコが連続するのは、この2段階を一気に書いているからなんですね</p>



<h3 class="wp-block-heading">ネスト(入れ子)は同じ要領でつなげる</h3>



<p class="wp-block-paragraph">サンプルの <code>birthdate</code> は、中にさらに <code>year / month / day</code> を持つ「入れ子のオブジェクト」です、こういうネストも、考え方は同じでカッコをつなげるだけです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>&#39; 1人目の生年月日(birthdateの中のyear)
Debug.Print parsedData(1)(&quot;birthdate&quot;)(&quot;year&quot;)  &#39; → 2000
Debug.Print parsedData(1)(&quot;birthdate&quot;)(&quot;month&quot;) &#39; → 1

&#39; 配列の中の値(favorite_foodsの1個目)
Debug.Print parsedData(1)(&quot;favorite_foods&quot;)(1) &#39; → Meat</code></pre></div>



<p class="wp-block-paragraph">コツは、<strong><span class="swl-marker mark_yellow">「{ }が来たらキー名」「[ ]が来たら番号」をJSONの形に合わせて交互に書いていく</span></strong>だけ、整形したJSONを見ながら指でたどると間違えにくいです</p>



<h3 class="wp-block-heading">ループでまとめて処理する</h3>



<p class="wp-block-paragraph">実際の業務では「全員分をシートに書き出す」みたいに、繰り返し処理(ループ)で回すことがほとんどです</p>



<p class="wp-block-paragraph">配列(Collection)は <code>For Each</code> でぐるっと回せます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Sub WriteToSheet()
    Dim parsedData As Object
    Dim person As Object
    Dim i As Long

    Set parsedData = ParseJson(jsonText) &#39; jsonTextは取得済みとする

    i = 1
    &#39; 配列の要素(1人分のデータ)を1件ずつ取り出す
    For Each person In parsedData
        Cells(i, 1).Value = person(&quot;name&quot;)
        Cells(i, 2).Value = person(&quot;height&quot;)
        Cells(i, 3).Value = person(&quot;birthdate&quot;)(&quot;year&quot;)
        i = i + 1
    Next person
End Sub</code></pre></div>



<p class="wp-block-paragraph">キー名が分からないオブジェクトを総当たりで見たいときは、<code>.Keys</code> でキー一覧を回す手もあります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Dim key As Variant
&#39; 1人目のオブジェクトのキーと値を全部出す
For Each key In parsedData(1).Keys
    Debug.Print key & &quot; = &quot; & parsedData(1)(key)
Next key</code></pre></div>



<p class="wp-block-paragraph">ここまでで「読み込む(パース)」側はバッチリです、配列は番号・オブジェクトはキー名、これさえ押さえれば、たいていのJSONは取り出せます</p>



<h2 class="wp-block-heading">ConvertToJson でVBAのデータをJSONに変換(生成)</h2>



<p class="wp-block-paragraph">今度は逆方向、つまりVBAのDictionaryやCollectionから<strong>JSON文字列を作る(生成する)</strong>パターンです、こちらは <code>ConvertToJson</code> 関数を使います</p>



<p class="wp-block-paragraph">「VBAで作ったデータをAPIに送りたい」「JSON形式でファイルに保存したい」みたいなときに出番があります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Sub CreateJsonString()
    Dim postData As Object
    Dim skillsCollection As Collection
    Dim jsonString As String

    &#39; データを格納する親オブジェクトを準備
    Set postData = CreateObject(&quot;Scripting.Dictionary&quot;)

    &#39; 基本的なキーと値を追加
    postData(&quot;name&quot;) = &quot;鈴木 一郎&quot;
    postData(&quot;age&quot;) = 25

    &#39; 配列用のオブジェクトを「Collection」で準備
    Set skillsCollection = New Collection

    &#39; Collectionにデータを追加
    skillsCollection.Add &quot;Word&quot;
    skillsCollection.Add &quot;PowerPoint&quot;

    &#39; 親オブジェクトにCollectionを追加
    postData.Add &quot;skills&quot;, skillsCollection

    &#39; DictionaryをJSON文字列に変換
    jsonString = ConvertToJson(postData)

    &#39; 結果をイミディエイトウィンドウに出力
    Debug.Print jsonString
    &#39; 想定される出力: {&quot;name&quot;:&quot;鈴木 一郎&quot;,&quot;age&quot;:25,&quot;skills&quot;:[&quot;Word&quot;,&quot;PowerPoint&quot;]}

    &#39; オブジェクトの解放
    Set postData = Nothing
    Set skillsCollection = Nothing
End Sub</code></pre></div>



<p class="wp-block-paragraph">ポイントは、<strong><span class="swl-marker mark_yellow">JSONの「{ }」はDictionary、「[ ]」はCollectionで組み立てる</span></strong>という点です、パースのときと逆の対応関係になっているだけなので、慣れると自然に書けるようになります</p>



<p class="wp-block-paragraph">この <code>jsonString</code> をWeb APIに送信(POSTなど)すれば、VBAで作ったデータをサーバーに送れます</p>



<h3 class="wp-block-heading">改行付きで見やすく出力したいとき</h3>



<p class="wp-block-paragraph">デフォルトのままだと、生成されるJSONは改行なしの一行になります、人が読む用にきれいに整形したいときは、<code>Whitespace</code> オプションを付けます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>&#39; インデント2つ分で改行を入れて整形
jsonString = ConvertToJson(postData, Whitespace:=2)</code></pre></div>



<p class="wp-block-paragraph">ファイルに保存して中身を確認したいときなんかは、こちらのほうが見やすくておすすめです</p>



<h2 class="wp-block-heading">VBA-JSONを使わずにJSONを扱う方法(JScript)</h2>



<p class="wp-block-paragraph">ここまでVBA-JSONをおすすめしてきましたが、「ライブラリを追加したくない」「配布先でインポートさせるのが面倒」というケースもありますよね</p>



<p class="wp-block-paragraph">そういうときの代替案として、<strong>Windows標準のJScriptエンジンを使ってJSONをパースする方法</strong>もあるので紹介しておきます</p>



<p class="wp-block-paragraph">JScriptはWindowsに最初から入っているスクリプト実行の仕組みで、これを <code>ScriptControl</code> という部品から呼び出すと、JavaScriptの <code>JSON.parse</code> をVBAから間接的に使えます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Sub ParseByJScript()
    Dim sc As Object
    Dim jsonText As String
    Dim parsed As Object

    jsonText = &quot;{&quot;&quot;name&quot;&quot;:&quot;&quot;Javeo&quot;&quot;,&quot;&quot;height&quot;&quot;:180}&quot;

    &#39; JScriptエンジンを用意
    Set sc = CreateObject(&quot;ScriptControl&quot;)
    sc.Language = &quot;JScript&quot;

    &#39; JavaScriptのJSON.parseで解析
    Set parsed = sc.Eval(&quot;(&quot; & jsonText & &quot;)&quot;)

    &#39; プロパティ名で値を取り出す
    Debug.Print parsed.name   &#39; → Javeo
    Debug.Print parsed.height &#39; → 180
End Sub</code></pre></div>



<p class="wp-block-paragraph">この方法のメリットは、外部ライブラリのインポートが要らないことです</p>



<p class="wp-block-paragraph">ただ、いくつか弱点もあって、正直なところ常用にはVBA-JSONのほうが向いています</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><code>ScriptControl</code> は32bit版のOfficeでしか動かない(64bit版では別の書き方が必要)</li>



<li>取り出した値の扱い(配列やネスト)がVBA-JSONより少しクセがある</li>



<li>Macでは使えない</li>
</ul>



<p class="wp-block-paragraph">なので個人的には、<strong><span class="swl-marker mark_yellow">基本はVBA-JSON、どうしてもライブラリを足せない事情があるときだけJScript</span></strong>という使い分けがおすすめです</p>



<h2 class="wp-block-heading">VBA-JSONのよくあるつまずき・FAQ</h2>



<p class="wp-block-paragraph">VBA-JSONでハマりやすいポイントを、質問形式でまとめておきます、エラーが出たらまずここを確認してみてください</p>



<h3 class="wp-block-heading">「ユーザー定義型は定義されていません」と出る</h3>



<p class="wp-block-paragraph">これは <strong><span class="swl-marker mark_yellow">参照設定の漏れ</span></strong>がほぼ原因です</p>



<p class="wp-block-paragraph">VBA-JSONはDictionaryを使うので、WindowsのExcelなら「ツール → 参照設定」で <code>Microsoft Scripting Runtime</code> にチェックが入っているか確認してください、入っていなければチェックを入れて保存し、もう一度実行すれば直ります</p>



<p class="wp-block-paragraph">MacのExcelの場合は、前述のVBA-Dictionary(<code>Dictionary.cls</code>)を取り込んでいるかを確認しましょう</p>



<h3 class="wp-block-heading">「KeyNotFoundError」のようなエラーが出る</h3>



<p class="wp-block-paragraph">これは、<strong>JSONに存在しないキー名を指定して取り出そうとした</strong>ときに出るエラーです</p>



<p class="wp-block-paragraph">キー名のタイプミス、大文字小文字の違い、そもそもそのキーが無いJSONだった、あたりが定番の原因ですね</p>



<p class="wp-block-paragraph">このエラーはハマりやすいので、原因の切り分けと対処法を <a href="https://javeo.jp/vba-json-error/" target="_blank" rel="noopener noreferrer">VBA-JSONでKeyNotFoundErrorが発生するときの対処をまとめた記事</a> で別途くわしく解説しています、同じエラーで止まっている方はそちらをどうぞ</p>



<h3 class="wp-block-heading">日本語が文字化けする</h3>



<p class="wp-block-paragraph">Web APIから取得したJSONの日本語が文字化けする場合は、<strong>文字コードの取り違え</strong>が原因のことが多いです</p>



<p class="wp-block-paragraph">多くのAPIはUTF-8で返してくるので、<code>responseText</code> をそのまま使うとShift_JIS環境で化けることがあります、その場合は <code>responseBody</code>(バイト列)を取得して、UTF-8として読み直すと直ります</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>Dim stream As Object
Set stream = CreateObject(&quot;ADODB.Stream&quot;)
stream.Open
stream.Type = 1               &#39; バイナリ
stream.Write http.responseBody
stream.Position = 0
stream.Type = 2               &#39; テキスト
stream.Charset = &quot;UTF-8&quot;       &#39; UTF-8として読み直す
jsonText = stream.ReadText
stream.Close</code></pre></div>



<h3 class="wp-block-heading">キーがあるか分からないとき、どう書けばいい？</h3>



<p class="wp-block-paragraph">キーが存在するか不安なときは、取り出す前に <code>.Exists</code> でチェックすると安全です(Dictionaryの機能です)</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-vba" data-lang="VBA"><code>If parsedData(1).Exists(&quot;weight&quot;) Then
    Debug.Print parsedData(1)(&quot;weight&quot;)
Else
    Debug.Print &quot;weightキーはありません&quot;
End If</code></pre></div>



<p class="wp-block-paragraph">これを挟んでおくと、キーが無いJSONが来てもエラーで止まらずに処理を続けられます</p>



<h2 class="wp-block-heading">VBA-JSONの活用例</h2>



<p class="wp-block-paragraph">導入と使い方が分かったところで、「で、実際どんなことに使えるの？」というイメージを少し具体的にしておきます</p>



<p class="wp-block-paragraph">いちばん多いのは、やはり <strong><span class="swl-marker mark_yellow">Web APIのレスポンス(JSON)をパースしてシートに展開する</span></strong>パターンです、為替レート・天気・在庫情報みたいな「外部の最新データ」をExcelに自動で取り込めると、手作業のコピペがまるごと無くなります</p>



<p class="wp-block-paragraph">たとえばフリマやECのAPIを叩いて、出品データや売上をExcelに集計する、みたいな使い方ですね、APIへリクエストを送る具体的な書き方は <a href="https://javeo.jp/ebay-api-request/" target="_blank" rel="noopener noreferrer">eBay APIにVBAでリクエストを送る方法の記事</a> にまとめているので、JSONパースと組み合わせると一通りの流れがつかめます</p>



<p class="wp-block-paragraph">逆に <code>ConvertToJson</code> 側だと、VBAで組み立てたデータをJSONにして、メール本文やAPIのリクエストボディに載せる、といった使い方ができます、VBAから自動でメールを送る仕組みは <a href="https://javeo.jp/vba-gmail-send/" target="_blank" rel="noopener noreferrer">VBAでGmailを送信する方法の記事</a> で扱っているので、データ生成と通知を組み合わせたい方はあわせてどうぞ</p>



<p class="wp-block-paragraph">そもそもVBA自体がはじめてで「Dim とか For Each の書き方からあやしい…」という方は、先に <a href="https://javeo.jp/vba-beginner-001/" target="_blank" rel="noopener noreferrer">VBA入門の記事</a> で基礎をさらっておくと、この記事のコードもぐっと読みやすくなると思います</p>



<h2 class="wp-block-heading">AIにVBA-JSONのコードを書いてもらうコツ</h2>



<p class="wp-block-paragraph">最近はClaudeやChatGPTにVBAコードを書いてもらう人も増えてきました、もちろんVBA-JSONを使ったコードも、頼めば書いてくれます</p>



<p class="wp-block-paragraph">ただ、AIにそのまま「VBAでJSONをパースして」と頼むと、<strong>意図しない実装を返してくる</strong>ことがあるんですよね</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li>VBA-JSONを使わず、自前のJSON解析関数をゼロから書こうとする</li>



<li>参照設定の前提がズレていて、そのままだと動かないコードを返す</li>



<li>標準機能だけで無理やり読もうとして、やたら長いコードになる</li>
</ul>



<p class="wp-block-paragraph">こうしたズレを避けるには、依頼するときに次のような前提を明示するのがおすすめです</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-lang="AIへの依頼例"><code>VBAで○○のJSONデータをパースするコードを書いてほしい
前提:
- VBA-JSON(JsonConverter.bas)を導入済み
- ParseJson の戻り値を Dictionary / Collection として直接扱う
- 参照設定は Microsoft Scripting Runtime を入れている前提
- 配列は番号、オブジェクトはキー名でアクセスする形で</code></pre></div>



<p class="wp-block-paragraph">エラーが出たときも、コードとエラーメッセージをまとめて貼り付ければ、AIが原因と対処をだいたい提示してくれます、自分でハマる時間がかなり減らせるので、これは活用しない手はないです</p>



<p class="wp-block-paragraph">ClaudeでVBAコードを書いてもらう基本的な流れは <a href="https://javeo.jp/claude-howto-beginner/" target="_blank" rel="noopener noreferrer">Claudeの使い方を初心者向けに解説した記事</a> にまとめているので、AIにコードを頼むのが初めての方は、そちらから読むとスムーズだと思います</p>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">VBA-JSONを使えば、これまでVBAでは扱いにくかったJSONが、ぐっと身近になります</p>



<p class="wp-block-paragraph">導入のポイントはこの2つだけです</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><code>JsonConverter.bas</code> をVBEにインポートする</li>



<li><code>Microsoft Scripting Runtime</code> に参照設定する(Macは VBA-Dictionary)</li>
</ul>



<p class="wp-block-paragraph">使い方も、覚える関数は2つだけです</p>



<ul style="background-color:#FFFFDC80" class="wp-block-list -list-under-dashed has-background">
<li><strong>JSONを読み込むなら <code>ParseJson</code></strong>(配列は番号、オブジェクトはキー名で取り出す)</li>



<li><strong>JSONを書き出すなら <code>ConvertToJson</code></strong>(「{ }」はDictionary、「[ ]」はCollectionで組む)</li>
</ul>



<p class="wp-block-paragraph">この導入2ステップと関数2つさえ押さえれば、Web APIとの連携をはじめ、VBAでできることの幅がかなり広がります</p>



<p class="wp-block-paragraph">まずは手元の短いJSONを <code>ParseJson</code> に通して、<code>Debug.Print</code> で1個取り出してみるところから始めると、感覚がつかみやすいと思います</p>


<div class="p-blogParts post_content" data-partsID="4601">
<div class="jv-books" id="jv-books-vba" data-shelf="vba"><div class="jv-books-head"><span class="jv-books-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> VBAの独学に効く本</span><span class="jv-books-pr">PR</span></div><div class="jv-books-grid"><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4839975728?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5722/9784839975722_1_2.jpg?_ex=240x240" alt="Excel VBA塾【動画×本で学ぶ!】" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">Excel VBA塾【動画×本で学ぶ!】</p><p class="jv-book-author">たてばやし淳</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4839975728?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="vba" data-mall="amazon" data-book="4839975728">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16918602%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16918602%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="vba" data-mall="rakuten" data-book="4839975728">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4297108755?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8755/9784297108755.jpg?_ex=240x240" alt="パーフェクトExcel VBA" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">パーフェクトExcel VBA</p><p class="jv-book-author">高橋宣成</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4297108755?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="vba" data-mall="amazon" data-book="4297108755">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16076590%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16076590%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="vba" data-mall="rakuten" data-book="4297108755">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4815631298?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1291/9784815631291.jpg?_ex=240x240" alt="Excel マクロ&amp;VBA［実践ビジネス入門講座］完全版 第3版" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">Excel マクロ&amp;VBA［実践ビジネス入門講座］完全版 第3版</p><p class="jv-book-author">国本温子</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4815631298?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="vba" data-mall="amazon" data-book="4815631298">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18165619%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18165619%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="vba" data-mall="rakuten" data-book="4815631298">楽天で見る</a></div></div></div></div><p class="jv-books-note">私のおすすめからランダムで3冊を表示しています</p></div>
<style>
.jv-books{border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin:1.5em 0;background:#fff}
.jv-books-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.jv-books-title{font-weight:700;font-size:1.05em}
.jv-books-pr{font-size:.7em;color:#888;border:1px solid #ccc;border-radius:3px;padding:1px 6px;flex-shrink:0}
.jv-books-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;min-height:330px}
.jv-book-card{display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid #f0f0f0;border-radius:6px;padding:12px 8px;background:#fafafa}
.jv-book-cover img{width:auto;max-width:120px;height:170px;object-fit:contain}
.jv-book-info{width:100%;flex:1;display:flex;flex-direction:column}
.jv-book-title{font-size:.82em;font-weight:600;line-height:1.4;margin:8px 0 2px;min-height:2.8em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.jv-book-author{font-size:.72em;color:#777;margin:0 0 8px}
.jv-book-btns{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:auto}
.jv-btn{display:block;text-align:center;font-size:.78em;font-weight:600;color:#fff!important;text-decoration:none!important;border-radius:4px;padding:7px 4px;line-height:1.2}
.jv-btn-az{background:#e88b00}
.jv-btn-rk{background:#bf0000}
.jv-btn:hover{opacity:.85}
.jv-books-note{font-size:.7em;color:#999;text-align:right;margin:8px 0 0}
@media(max-width:599px){
.jv-books-grid{grid-template-columns:1fr;min-height:0}
.jv-book-card{flex-direction:row;text-align:left;gap:12px}
.jv-book-cover img{height:110px;max-width:80px}
.jv-book-info{min-width:0}
.jv-book-title{min-height:0}
.jv-book-btns{flex-direction:row}
.jv-btn{flex:1}
}
</style>
<script>
(function(){
var SHELF='vba';
var root=document.getElementById('jv-books-'+SHELF);
if(!root||root.dataset.init)return;
root.dataset.init='1';
var POOL=[{"t": "Excel VBA塾【動画×本で学ぶ!】", "a": "たてばやし淳", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5722/9784839975722_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4839975728?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16918602%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16918602%2F", "id": "4839975728"}, {"t": "パーフェクトExcel VBA", "a": "高橋宣成", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8755/9784297108755.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4297108755?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16076590%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16076590%2F", "id": "4297108755"}, {"t": "Excel マクロ&VBA［実践ビジネス入門講座］完全版 第3版", "a": "国本温子", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1291/9784815631291.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4815631298?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18165619%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18165619%2F", "id": "4815631298"}, {"t": "増強改訂版 できる イラストで学ぶ 入社1年目からのExcel VBA", "a": "きたみあきこ", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8414/9784295018414.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4295018414?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17725381%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17725381%2F", "id": "4295018414"}];
var REL='nofollow sponsored noopener noreferrer';
function el(tag,cls){var e=document.createElement(tag);if(cls)e.className=cls;return e;}
function btn(href,cls,label,mall,id){
var a=el('a','jv-btn '+cls);a.href=href;a.target='_blank';a.rel=REL;a.textContent=label;
a.setAttribute('data-shelf',SHELF);a.setAttribute('data-mall',mall);a.setAttribute('data-book',id);
return a;}
function card(b){
var d=el('div','jv-book-card');
var cover=el('a','jv-book-cover');cover.href=b.az;cover.target='_blank';cover.rel=REL;
var img=el('img');img.src=b.img;img.alt=b.t;img.width=120;img.height=170;img.loading='lazy';
cover.appendChild(img);
var info=el('div','jv-book-info');
var ttl=el('p','jv-book-title');ttl.textContent=b.t;
var au=el('p','jv-book-author');au.textContent=b.a;
var btns=el('div','jv-book-btns');
btns.appendChild(btn(b.az,'jv-btn-az','Amazonで見る','amazon',b.id));
if(b.rk){btns.appendChild(btn(b.rk,'jv-btn-rk','楽天で見る','rakuten',b.id));}
info.appendChild(ttl);info.appendChild(au);info.appendChild(btns);
d.appendChild(cover);d.appendChild(info);
return d;}
var pool=POOL.slice();
for(var i=pool.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=pool[i];pool[i]=pool[j];pool[j]=t;}
var grid=root.querySelector('.jv-books-grid');
grid.style.opacity='0';
while(grid.firstChild)grid.removeChild(grid.firstChild);
pool.slice(0,3).forEach(function(b){grid.appendChild(card(b));});
grid.style.transition='opacity .5s ease';
void grid.offsetWidth;
grid.style.opacity='1';
})();
</script>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/vba-json/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】LINE Notify終了のお知らせと代替方法-公式アカウント作成とMessaging API</title>
		<link>https://javeo.jp/line-messaging-api/</link>
					<comments>https://javeo.jp/line-messaging-api/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Mon, 13 Jan 2025 22:00:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[API]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=2727</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/07/python-1024x538.png" class="webfeedsFeaturedVisual" /></p>LINE Notify終了のお知らせ まずはLINE Notifyに届いた悲しいお知らせについて 何の前触れもなく（多分）LINE通知が来まして、私はクラウドソーシングの案件検索バッチの通知で使っていたのでサービス終了は [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/07/python-1024x538.png" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">お手軽にLINE通知できる&#8221;<strong>LINE Notify</strong>&#8220;ですが、2025/3/31にサービス終了するお知らせが届きました</p>



<p class="wp-block-paragraph">今は&#8221;<strong>Messaging API</strong>&#8220;が主流になっているのか今回こちらに統合されるような形になっているみたいです</p>



<p class="wp-block-paragraph">と言うことで&#8221;<strong>LINE Notify</strong>&#8220;を&#8221;<strong>Messaging API</strong>&#8220;に置き換える手順をまとめていきます</p>
</div>



<h2 class="wp-block-heading">LINE Notify終了のお知らせ</h2>



<div class="wp-block-media-text is-stacked-on-mobile" style="grid-template-columns:25% auto"><figure class="wp-block-media-text__media"><img decoding="async" width="313" height="679" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-12_23h51_44-1.png" alt="" class="wp-image-2729 size-full" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-12_23h51_44-1.png 313w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-12_23h51_44-1-138x300.png 138w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-12_23h51_44-1-69x150.png 69w" sizes="(max-width: 313px) 100vw, 313px" /></figure><div class="wp-block-media-text__content">
<p class="wp-block-paragraph">まずはLINE Notifyに届いた悲しいお知らせについて</p>



<p class="wp-block-paragraph">何の前触れもなく（多分）LINE通知が来まして、私はクラウドソーシングの案件検索バッチの通知で使っていたのでサービス終了は結構な痛手・・</p>



<p class="wp-block-paragraph">兎にも角にも通知の最後にあるリンクに何か情報があると思ってリンクをクリックしてみます</p>



<p class="wp-block-paragraph">↓↓↓は同じリンクです</p>



<p class="wp-block-paragraph"><a href="https://notify-bot.line.me/closing-announce">サービス終了の詳細を見る</a></p>
</div></div>



<p class="wp-block-paragraph">ページを開いてみるとサービス終了に加えてやはりありました、代替方法の案内です</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>弊社サービスで利用可能な代替方法</strong></p>



<p class="wp-block-paragraph">通知を送る代替方法として、LINE公式アカウントからメッセージを送信できる<a href="https://developers.line.biz/ja/services/messaging-api/" target="_blank" rel="noreferrer noopener">Messaging API</a>の利用をご検討ください。Messaging APIを利用することで、一定数のメッセージを毎月無料で送信できます。料金に関する詳細は、「<a href="https://developers.line.biz/ja/docs/messaging-api/overview/#line-official-account-plan" target="_blank" rel="noreferrer noopener">Messaging APIの料金</a>」を参照してください。</p>



<p class="wp-block-paragraph">Messaging APIで利用できる機能の詳細は、「<a href="https://developers.line.biz/ja/docs/messaging-api/" target="_blank" rel="noreferrer noopener">Messaging APIドキュメント</a>」の各ページを参照してください。</p>
<cite><a href="https://notify-bot.line.me/closing-announce">https://notify-bot.line.me/closing-announce</a></cite></blockquote>



<p class="wp-block-paragraph">と言うことで&#8221;<strong><span class="marker-under"><span class="bold-red">Messaging API</span></span></strong>&#8220;を使う手続きを調べます！</p>



<h2 class="wp-block-heading">Messaging APIを利用するために色々登録する</h2>



<p class="wp-block-paragraph">Messaging APIを利用するためには最終的に公式チャンネルの作成が必要になるようでして、そこに至るまでに諸々登録らしく順番に対応していきます</p>



<h3 class="wp-block-heading">LINE Developersコンソールに登録</h3>



<p class="wp-block-paragraph">いつの間にやら<a href="https://developers.line.biz/ja/">Developersサイト</a>がリニューアルされてましたが・・兎にも角にもログインをしてみます</p>



<p class="wp-block-paragraph">※LINE Notifyを利用していた前提なので個人アカウントで登録しているものとして進めます</p>



<p class="wp-block-paragraph"><a href="https://developers.line.biz/ja/">Developersサイト</a>からまずはLINE Developersコンソールに登録していきます</p>



<div class="wp-block-group is-row is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex">
<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">LINE Developersの登録手順</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title"><a href="https://developers.line.biz/ja/">LINE Developers</a>サイトで右上の&#8221;コンソールにログイン&#8221;をクリック</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large is-style-default"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37.jpg"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37-1024x538.jpg" alt="" class="wp-image-2804" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37-1024x538.jpg 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37-300x158.jpg 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37-150x79.jpg 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37-768x403.jpg 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h02_37.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">LINE Business IDと言いつつ、この段階では普段使いのLINEアカウントでログインできるので上段の&#8221;LINEアカウントでログイン&#8221;を</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2-1024x538.png" alt="" class="wp-image-2762" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h14_55-2.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">メアド＆パスワードかQRコードでログインを</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46-1024x538.png" alt="" class="wp-image-2763" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-17_06h19_46.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP4</div><div class="timeline-item-content cf"><div class="timeline-item-title">ログインするとLINEビジネスIDの作成を求められるので作成開始</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3-1024x538.png" alt="" class="wp-image-2764" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h20_47-3.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP5</div><div class="timeline-item-content cf"><div class="timeline-item-title">開発者名とメアドを求められるので適当に設定してLINE開発者契約に同意にチェックを入れて作成</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2.png"><img decoding="async" width="1024" height="969" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2-1024x969.png" alt="" class="wp-image-2766" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2-1024x969.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2-300x284.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2-150x142.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2-768x726.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h21_47-2.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP6</div><div class="timeline-item-content cf"><div class="timeline-item-title">完了！</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1.png"><img decoding="async" width="1024" height="986" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1-1024x986.png" alt="" class="wp-image-2767" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1-1024x986.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1-300x289.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1-150x144.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1-768x739.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h22_47-1.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>
</ul></div>
</div>



<h3 class="wp-block-heading">プロパイダーの作成</h3>



<p class="wp-block-paragraph">続いてプロパイダーを作成します</p>



<p class="wp-block-paragraph">LINE Developersコンソールに登録完了した画面と同じですがデベロッパートップ画面にある&#8221;新規プロパイダー作成&#8221;ボタンから登録処理していきます</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">プロパイダーの作成手順</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title">デベロッパー画面のトップで&#8221;新規プロパイダー作成&#8221;を<br></div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2-1024x538.png" alt="" class="wp-image-2781" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h51_19-2.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">プロパイダー名を適当に設定</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1-1024x538.png" alt="" class="wp-image-2771" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h52_54-1.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">完了！（左部のメニューに表示されてるはず）</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1.png"><img decoding="async" width="1024" height="490" src="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1-1024x490.png" alt="" class="wp-image-2772" srcset="https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1-1024x490.png 1024w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1-300x144.png 300w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1-150x72.png 150w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1-768x368.png 768w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1-1536x735.png 1536w, https://javeo.jp/wp-content/uploads/2024/11/2024-11-13_00h56_51-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>
</ul></div>



<h3 class="wp-block-heading">Messaging APIチャネル（LINE公式アカウント）の作成</h3>



<p class="wp-block-paragraph">次はチャネルを作成します※結果、LINE公式アカウントを作成します</p>



<p class="wp-block-paragraph">色々と項目がありますが個人利用なのでとりあえず適当に</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">チャネルの作成手順</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title">プロパイダー画面で&#8221;Messaging API&#8221;をクリック</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35-1024x555.png" alt="" class="wp-image-2822" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35-300x163.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35-150x81.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35-768x416.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h32_35.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">LINE公式アカウント作成ページへ遷移</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48-1024x555.png" alt="" class="wp-image-2823" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48-300x163.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48-150x81.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48-768x416.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h35_48.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">会社・店舗情報を登録</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35.png"><img decoding="async" width="742" height="1024" src="https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35-742x1024.png" alt="" class="wp-image-2824" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35-742x1024.png 742w, https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35-217x300.png 217w, https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35-109x150.png 109w, https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35-768x1060.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35-1113x1536.png 1113w, https://javeo.jp/wp-content/uploads/2024/12/2024-11-17_05h59_35.png 1200w" sizes="(max-width: 742px) 100vw, 742px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP4</div><div class="timeline-item-content cf"><div class="timeline-item-title">入力内容の確認<br></div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1.png"><img decoding="async" width="1024" height="490" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1-1024x490.png" alt="" class="wp-image-2826" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1-1024x490.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1-300x144.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1-150x72.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1-768x368.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1-1536x735.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_00-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP5</div><div class="timeline-item-content cf"><div class="timeline-item-title">LINE公式アカウントの作成完了！</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1-1024x555.png" alt="" class="wp-image-2833" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h51_54-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">中央の&#8221;LINE Official Account Managerへ&#8221;をクリック</p>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP6</div><div class="timeline-item-content cf"><div class="timeline-item-title">情報利用に関する同意を</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40.png"><img decoding="async" width="1024" height="490" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40-1024x490.png" alt="" class="wp-image-2828" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40-1024x490.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40-300x144.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40-150x72.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40-768x368.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40-1536x735.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_40.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP7</div><div class="timeline-item-content cf"><div class="timeline-item-title">続いて個別規約への同意を</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1.png"><img decoding="async" width="1024" height="817" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1-1024x817.png" alt="" class="wp-image-2830" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1-1024x817.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1-300x239.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1-150x120.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1-768x613.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1-1536x1226.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h53_50-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP8</div><div class="timeline-item-content cf"><div class="timeline-item-title">LINE Official Account Managerへ遷移完了！</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1-1024x555.png" alt="" class="wp-image-2832" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-04_23h56_00-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>
</ul></div>



<h2 class="wp-block-heading">LINE Notifyの代替になる機能を探す</h2>



<p class="wp-block-paragraph">ようやく本題に入ります</p>



<p class="wp-block-paragraph">&#8220;<strong>Messaging API</strong>&#8220;には多くの機能がありそうですが今回は&#8221;<strong>LINE Notify</strong>&#8220;の代替として自分宛に通知する方法を探します</p>



<h3 class="wp-block-heading">まずは<strong>Messaging API</strong>の有効化</h3>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title"><strong>Messaging API</strong>の有効化手順</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP1</div><div class="timeline-item-content cf"><div class="timeline-item-title">LINE Official ACCOUNT Managerのホーム画面右上の&#8221;設定&#8221;へ</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12-1024x576.png" alt="" class="wp-image-2813" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h14_12.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP2</div><div class="timeline-item-content cf"><div class="timeline-item-title">左部メニューの&#8221;Messaging API&#8221;へ</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1-1024x576.png" alt="" class="wp-image-2816" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_31-1.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP3</div><div class="timeline-item-content cf"><div class="timeline-item-title">&#8220;Messaging APIを利用する&#8221;をクリック</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39-1024x576.png" alt="" class="wp-image-2815" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_39.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP4</div><div class="timeline-item-content cf"><div class="timeline-item-title">既プロパイダーの選択か新規作成を※今回は既プロパイダーを選択</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57-1024x576.png" alt="" class="wp-image-2817" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h15_57.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP5</div><div class="timeline-item-content cf"><div class="timeline-item-title">プライバシーポリシーと利用規約URLがあれば選択を</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02-1024x576.png" alt="" class="wp-image-2818" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_02.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP6</div><div class="timeline-item-content cf"><div class="timeline-item-title">最終確認画面</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08-1024x576.png" alt="" class="wp-image-2819" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_08.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">STEP7</div><div class="timeline-item-content cf"><div class="timeline-item-title">完了！</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26-1024x576.png" alt="" class="wp-image-2820" srcset="https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26-300x169.png 300w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26-150x84.png 150w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26-768x432.png 768w, https://javeo.jp/wp-content/uploads/2024/12/2024-12-01_22h16_26.png 1448w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">※&#8221;Channel情報&#8221;は後からでも確認できます</p>
</div></div></li>
</ul></div>



<h2 class="wp-block-heading">Pythonでプッシュ通知用のプログラムを作る</h2>



<p class="wp-block-paragraph">必要な諸々の登録が終わったので遂にPythonのプログラムを作ります</p>



<p class="wp-block-paragraph">まず必要なパッケージのインストールを</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>pip install line-bot-sdk</code></pre></div>



<p class="wp-block-paragraph">続いて自分に通知するためだけの最低限のプログラムがコチラ</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>def line_message_api (message: str, user_id:str =&#39;{自分のユーザーID}&#39;):
    &#39;&#39;&#39;
    LINE Messaging APIを使って通知する
    &#39;&#39;&#39;
    # アクセストークンの設定
    CHANNEL_ACCESS_TOKEN = &#39;{自分のアクセストークン}&#39;
    # LINE Bot APIのインスタンスを作成 
    line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN) 
    # メッセージを送信 
    line_bot_api.push_message(user_id, TextSendMessage(text=message))</code></pre></div>



<p class="wp-block-paragraph">プログラム自体は短いですが必要な値は&#8221;ユーザーID&#8221;と&#8221;チャンネルアクセストークン&#8221;の2つ</p>



<p class="wp-block-paragraph">それぞれLINE Developersサイトにあるので取得しに行きます</p>



<h3 class="wp-block-heading">&#8220;ユーザーID&#8221;の取得箇所</h3>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1-1024x576.png" alt="" class="wp-image-2852" srcset="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1-300x169.png 300w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1-150x84.png 150w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1-768x432.png 768w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1-1536x864.png 1536w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h31_24-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">&#8220;チャネル基本設定&#8221;タブ画面の下部に表示されている&#8221;あなたのユーザーID&#8221;項目の&#8221;<strong>Uで始まる33桁の英数字</strong>&#8220;がユーザIDです</p>



<h3 class="wp-block-heading">&#8220;チャンネルアクセストークン&#8221;の取得箇所</h3>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24.png"><img decoding="async" width="1024" height="576" src="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24-1024x576.png" alt="" class="wp-image-2853" srcset="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24-1024x576.png 1024w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24-300x169.png 300w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24-150x84.png 150w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24-768x432.png 768w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24-1536x864.png 1536w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_00h37_24.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">&#8220;Messaging API設定&#8221;タブ画面の下部に表示されている&#8221;チャネルアクセストークン&#8221;項目の&#8221;<strong>英数字記号</strong>&#8220;がアクセストークンです</p>



<h3 class="wp-block-heading">実際にプログラムを実行してみた結果</h3>



<p class="wp-block-paragraph">こちらがLINEのトーク画面です</p>



<figure class="wp-block-image size-full"><a href="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_01h02_20-1.png"><img decoding="async" width="375" height="588" src="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_01h02_20-1.png" alt="" class="wp-image-2856" srcset="https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_01h02_20-1.png 375w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_01h02_20-1-191x300.png 191w, https://javeo.jp/wp-content/uploads/2025/01/2025-01-14_01h02_20-1-96x150.png 96w" sizes="(max-width: 375px) 100vw, 375px" /></a></figure>



<p class="wp-block-paragraph">公式アカウントの記号付きでチャネル名になっていて、メッセージが反映されていることを確認できます</p>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">LINE Notifyに比べると手順が多くお手軽とは言えないですが、LINE通知は他に変え難い便利さがあるので個人的にはこれぐらいなら許容範囲内</p>



<p class="wp-block-paragraph">せっかくLINE公式アカウントを作ったのなら他にも使い道は多くありそうなので時間見つけて活用方法探したいですね</p>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/line-messaging-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>eByaのAPIでトークンの有効期限が切れたら</title>
		<link>https://javeo.jp/ebya-api-token-expired/</link>
					<comments>https://javeo.jp/ebya-api-token-expired/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Sun, 09 Jun 2024 23:00:00 +0000</pubDate>
				<category><![CDATA[雑記・その他]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[eBay]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=2298</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/01/コンピューターを使うロボットのイラスト-1024x538.jpg" class="webfeedsFeaturedVisual" /></p>GetItemを使ってるとエラーが 先日、自作したExcelで商品情報取得するツール使っていたら見慣れないエラーが・・・ レスポンスの中身を見るとコチラが 私は英語が苦手なのですぐにGoogle先生に翻訳を頼んだのですが [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/01/コンピューターを使うロボットのイラスト-1024x538.jpg" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">eBayのAPIを使っていたら急にエラーが発生しました</p>



<p class="wp-block-paragraph">周りでも同じエラーが起こったんですがたまたま？それともeBay側の都合？がわからずなのでお知らせ込みで対応方法まとめました</p>
</div>



<h2 class="wp-block-heading">GetItemを使ってるとエラーが</h2>



<p class="wp-block-paragraph">先日、自作したExcelで商品情報取得するツール使っていたら見慣れないエラーが・・・</p>



<p class="wp-block-paragraph">レスポンスの中身を見るとコチラが</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ErrorCode:932
LongMessage:Auth token is hard expired, User needs to generate a new token for this application.</code></pre></div>



<p class="wp-block-paragraph">私は英語が苦手なのですぐにGoogle先生に翻訳を頼んだのですが、日本語版がコチラ</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>認証トークンの有効期限が切れています。ユーザーはこのアプリケーション用に新しいトークンを生成する必要があります。</code></pre></div>



<p class="wp-block-paragraph">今まで一度も有効期限切れエラーなんて発生したことないのに何で！？</p>



<p class="wp-block-paragraph">と思いましたが原因と対応方法はわかりやすいエラーで、メッセージに書いてある通りおとなしく&#8221;<strong><span class="marker-under"><span class="bold-red">新しいトークンを生成</span></span></strong>&#8220;します</p>



<h2 class="wp-block-heading">トークンを再作成する</h2>



<p class="wp-block-paragraph">やり方は簡単で下記手順の通り</p>



<div class="wp-block-cocoon-blocks-timeline timeline-box cf block-box not-nested-style cocoon-block-timeline"><div class="timeline-title">トークン再作成手順</div><ul class="timeline">
<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">ラベル</div><div class="timeline-item-content cf"><div class="timeline-item-title">まずはデベロッパーサイトでログイン処理</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph"><a href="https://developer.ebay.com/my/auth?env=sandbox&amp;index=0" target="_blank" rel="noreferrer noopener nofollow">https://developer.ebay.com/my/auth?env=sandbox&amp;index=0</a></p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/06/image-4.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/06/image-4-1024x538.png" alt="" class="wp-image-2330" srcset="https://javeo.jp/wp-content/uploads/2024/06/image-4-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/06/image-4-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/06/image-4-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/06/image-4-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/06/image-4.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">手順1</div><div class="timeline-item-content cf"><div class="timeline-item-title">&#8220;<strong><span class="marker-under">Sign in to Production</span></strong>&#8220;ボタンを押下<br><a href="https://javeo.jp/wp-content/uploads/2024/06/image.png"></a></div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/06/image.png"><img decoding="async" width="1024" height="567" src="https://javeo.jp/wp-content/uploads/2024/06/image-1024x567.png" alt="" class="wp-image-2299" srcset="https://javeo.jp/wp-content/uploads/2024/06/image-1024x567.png 1024w, https://javeo.jp/wp-content/uploads/2024/06/image-300x166.png 300w, https://javeo.jp/wp-content/uploads/2024/06/image-150x83.png 150w, https://javeo.jp/wp-content/uploads/2024/06/image-768x425.png 768w, https://javeo.jp/wp-content/uploads/2024/06/image.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">手順2</div><div class="timeline-item-content cf"><div class="timeline-item-title">eBayにログイン</div><div class="timeline-item-snippet">
<p class="wp-block-paragraph">※ログイン画面は認証方法で異なります</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39-1024x538.png" alt="" class="wp-image-2303" srcset="https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_39.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">手順3</div><div class="timeline-item-content cf"><div class="timeline-item-title">Agreeしてあげる</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55-1024x538.png" alt="" class="wp-image-2304" srcset="https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55-300x158.png 300w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55-768x403.png 768w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-10_01h04_55.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div></li>



<li class="wp-block-cocoon-blocks-timeline-item timeline-item cf"><div class="timeline-item-label">手順4</div><div class="timeline-item-content cf"><div class="timeline-item-title">新しいトークン出現！</div><div class="timeline-item-snippet">
<figure class="wp-block-image size-full"><a href="https://javeo.jp/wp-content/uploads/2024/06/image-3.png"><img decoding="async" width="905" height="475" src="https://javeo.jp/wp-content/uploads/2024/06/image-3.png" alt="" class="wp-image-2302" srcset="https://javeo.jp/wp-content/uploads/2024/06/image-3.png 905w, https://javeo.jp/wp-content/uploads/2024/06/image-3-300x157.png 300w, https://javeo.jp/wp-content/uploads/2024/06/image-3-150x79.png 150w, https://javeo.jp/wp-content/uploads/2024/06/image-3-768x403.png 768w" sizes="(max-width: 905px) 100vw, 905px" /></a></figure>
</div></div></li>
</ul></div>



<p class="wp-block-paragraph">最初に同じことやってるはずなんですが正直忘れてました</p>



<p class="wp-block-paragraph">APIの取得手順をブログに残しておいて良かったと過去の自分をほめてあげたい</p>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">今回突然エラーになりましたが、これは本当に単純な有効期限切れですかね？</p>



<p class="wp-block-paragraph"><a href="https://javeo.jp/ebay-api-finding-abolition/" data-type="link" data-id="https://javeo.jp/ebay-api-finding-abolition/" target="_blank" rel="noreferrer noopener nofollow">findItemsAdvanced終了のお知らせ</a>もあったので何かeBay側で発生してる気もします・・</p>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/ebya-api-token-expired/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】eBayのFinding APIは廃止予定です</title>
		<link>https://javeo.jp/ebay-api-finding-abolition/</link>
					<comments>https://javeo.jp/ebay-api-finding-abolition/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Sun, 02 Jun 2024 23:03:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[eBay]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=2272</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/07/python-1024x538.png" class="webfeedsFeaturedVisual" /></p>Finding API終了の知らせ 作っちゃえば運用するだけのツールなんで久しく開いてなかったリファレンスページを開くと見慣れないメッセージがあったので早速翻訳した結果がコチラ 注: Finding APIのすべての呼び [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/07/python-1024x538.png" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">久々にeByaのAPIリファレンスを見に行ったら<strong>Finding API終了</strong>のお知らせがあったので共有と新しい<strong>Browse API</strong>なるもののお知らせがあったのでお知らせ半分、自分の予習半分でまとめました</p>
</div>



<h2 class="wp-block-heading">Finding API終了の知らせ</h2>



<p class="wp-block-paragraph">作っちゃえば運用するだけのツールなんで久しく開いてなかったリファレンスページを開くと見慣れないメッセージがあったので早速翻訳した結果がコチラ</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>注: Finding API</strong>のすべての呼び出しは非推奨になっており、2025 年 2 月 5 日に廃止される予定です。この API の代替として、高度な検索機能も備えた<a href="https://developer.ebay.com/api-docs/buy/browse/resources/methods" target="_blank" rel="noreferrer noopener nofollow">Browse API</a>があります。</p>
<cite><a href="https://developer.ebay.com/devzone/finding/callref/finditemsadvanced.html" target="_blank" rel="noreferrer noopener nofollow">https://developer.ebay.com/devzone/finding/callref/finditemsadvanced.html</a></cite></blockquote>



<p class="wp-block-paragraph">いつの間に非推奨！？そして廃止予定！？</p>



<p class="wp-block-paragraph">この<strong>Finding API</strong>はセラーID等から商品一覧を取得できる<strong>findItemsAdvance</strong>含まれていて、このfindItemsAdvanceは私がeBay関係で受注した案件でも番多く利用してきたのでなかなかの衝撃</p>



<p class="wp-block-paragraph">私は自身eBayを利用していないのですが、過去発注いただいたクラインとから修正依頼あるかもしれないしこれからもeBayのツール作成を受注する可能性あるんで新しい<strong>Browse API</strong>を見ていきます</p>



<h2 class="wp-block-heading"><strong>Browse API</strong>について</h2>



<p class="wp-block-paragraph">早速リファレンス画面へ</p>



<p class="wp-block-paragraph"><a href="https://developer.ebay.com/api-docs/buy/browse/resources/methods" target="_blank" rel="noreferrer noopener nofollow">https://developer.ebay.com/api-docs/buy/browse/resources/methods</a></p>



<p class="wp-block-paragraph">（なんとなく画面のテイストが変わった気がしますが）大きく分けてitem_summary、itemの2つににカテゴライズされてそれぞれ2つ、5つのAPIが準備されていますがその中でもよく使いそうなものをピックアップ</p>



<h3 class="wp-block-heading">search</h3>



<p class="wp-block-paragraph">おそらくこれが<strong>findItemsAdvance</strong>の代替になる</p>



<p class="wp-block-paragraph">キーワード検索の他、フィルターで抽出結果のフィルタリングとかできそうなのでこれを注視していく</p>



<h3 class="wp-block-heading">getItem</h3>



<p class="wp-block-paragraph">Trading APIの方にあるGetItemの代替っぽい</p>



<p class="wp-block-paragraph">Trading APIは特に終了のお知らせはないので継続利用しても問題ないと思うのですが、新しいBrowse APIに準備されているので今後は新しくツールを作らならコチラを使うようにした方が良さそう</p>



<p class="wp-block-paragraph">ItemIDを指定すると商品の詳細が取得できるシンプルなAPI</p>



<h3 class="wp-block-heading">getItems</h3>



<p class="wp-block-paragraph">getItemの簡易版を最大20個を同時に取得できる</p>



<p class="wp-block-paragraph">どうせならgetItemで詳細情報収集した方がいい気もしますが <strong>5,000回/1日</strong> の制限があるのでこっちで必要情報が間に合うならこちらを推奨</p>



<h2 class="wp-block-heading">searchで<strong>findItemsAdvance</strong>を再現できるのか</h2>



<p class="wp-block-paragraph">本題の<strong>Finding API</strong>が使えなくなった時の代替になるかの検証ですが、条件は今までの受注経験から&#8221;<strong>SellerIDベースで一覧取得できるか</strong>&#8220;で、結論から言うと</p>



<p class="has-medium-font-size wp-block-paragraph"><strong><span class="bold-red"><span class="marker-under">searchではSellerIDを条件に情報収集できません</span></span></strong></p>



<p class="wp-block-paragraph">正確には&#8221;SellerIDだけを条件に取得できない&#8221;なので近い条件では取得できる可能性はありますが指定したSellerIDの全商品の取得は2024年6月現在では確認できませんでした</p>



<p class="wp-block-paragraph">とは言え、公式がBrowse API（item_summary）への移行を推奨しているので使い方のまとめと完全再現できないと判断した理由をまとめていきます</p>



<h2 class="wp-block-heading">item_summaryをPythonで実行する</h2>



<p class="wp-block-paragraph">大きく分けて&#8221;request headers&#8221;と&#8221;Resource URI&#8221;の二つを設定してAPIを投げます</p>



<h3 class="wp-block-heading">request headersについて</h3>



<p class="wp-block-paragraph">まずはrequest headersから</p>



<p class="wp-block-paragraph"><a href="https://developer.ebay.com/api-docs/static/rest-request-components.html#headers" target="_blank" rel="noreferrer noopener nofollow">https://developer.ebay.com/api-docs/static/rest-request-components.html#headers</a></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>headers = {
    &#39;Accept&#39;: &#39;application/json&#39;,
    &#39;Accept-Charset&#39;: &#39;utf-8&#39;,
    &#39;Accept-Encoding&#39;: &#39;gzip&#39;,
    &#39;Accept-Language&#39;: &#39;en-US&#39;,
    &#39;Authorization&#39;: &#39;Bearer {accessToken}&#39;,
    &#39;Content-Type&#39;: &#39;application/json&#39;,
    &#39;Content-Language&#39;: &#39;en-US&#39;,
}</code></pre></div>



<p class="wp-block-paragraph">findItemsAdvanceでは&#8221;App ID&#8221;を必要としていましたが、item_summaryでは&#8221;accessToken&#8221;が必要らしい</p>



<p class="wp-block-paragraph">&#8220;accessToken&#8221;とは何と言われると<a href="https://developer.ebay.com/my/keys">https://developer.ebay.com/my/keys</a>から遷移した先にある&#8221;Get OAuth Application Token&#8221;で表示される画面びっしりの文字がトークンになるのでポップアップの最下部にある&#8221;Copy Token&#8221;でトークンをコピーすればそれがaccessTokenになる</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33.png"><img decoding="async" width="1024" height="490" src="https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33-1024x490.png" alt="" class="wp-image-2277" srcset="https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33-1024x490.png 1024w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33-300x144.png 300w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33-150x72.png 150w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33-768x368.png 768w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33-1536x735.png 1536w, https://javeo.jp/wp-content/uploads/2024/06/2024-06-02_16h08_33.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">念のため書いておくと&#8221;Bearer &#8220;の後ろにトークンを貼るのでAuthorizationだけ抜粋すると↓のような感じに</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>&#39;Authorization&#39;: &#39;Bearer v^1.1#i^1#f^0#r^0#p^1#I^3#t^H4sIAAAAAAA・・・&#39;,</code></pre></div>



<p class="wp-block-paragraph">その他は基本固定で良さそう</p>



<h3 class="wp-block-heading">Resource URIについて</h3>



<p class="wp-block-paragraph">続いて各パラメータについて</p>



<p class="wp-block-paragraph"><a href="https://developer.ebay.com/api-docs/buy/browse/resources/item_summary/methods/search#h2-input">https://developer.ebay.com/api-docs/buy/browse/resources/item_summary/methods/search#h2-input</a></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>resource_uri = R&#39;https://api.ebay.com/buy/browse/v1/item_summary/search?&#39;
uri_para = {
    &#39;q&#39;: &lt;string&gt;,
    &#39;gtin&#39;: &lt;string&gt;,
    &#39;charity_ids&#39;: &lt;string&gt;,
    &#39;fieldgroups&#39;: &lt;string&gt;,
    &#39;compatibility_filter&#39;: &lt;CompatibilityFilter&gt;,
    &#39;auto_correct&#39;: &lt;string&gt;,
    &#39;category_ids&#39;: &lt;string&gt;,
    &#39;filter&#39;: &lt;FilterField&gt;,
    &#39;sort&#39;: &lt;SortField&gt;,
    &#39;limit&#39;: &lt;string&gt;,
    &#39;offset&#39;: &lt;string&gt;,
    &#39;aspect_filter&#39;: &lt;AspectFilter&gt;,
    &#39;epid&#39;: &lt;string&gt;,
}
# 設定したクエリパラメータを追加する
resource_uri += urllib.parse.urlencode(uri_para)</code></pre></div>



<p class="wp-block-paragraph">指定できるものは多いけど実際に必要そうなものは数える程度</p>



<p class="wp-block-paragraph">注意点をいくつか抜粋</p>



<ol class="wp-block-list">
<li>「q」、「category_ids」、「epid」、または「gtin」クエリ パラメータが必須<br>※Error Code:12001参照</li>



<li>&lt;FilterField>は<a href="https://developer.ebay.com/api-docs/buy/static/ref-buy-browse-filters.html" target="_blank" rel="noreferrer noopener nofollow">https://developer.ebay.com/api-docs/buy/static/ref-buy-browse-filters.html</a>参照</li>



<li>selleridの指定は&lt;FilterField>の中にある</li>
</ol>



<p class="wp-block-paragraph">findItemsAdvancedでもitemFilterで制限していたので似たような制御のようで1.の必須パラメータが邪魔して全件取得ができないのがsearchの問題点</p>



<p class="wp-block-paragraph">itemFilterをパラメータにしてもらえれば欲しい情報が取得できそうなラインナップなのが残念ポイントで、キーワードを設定した検索で良ければ取得できそうだけどそうじゃない感</p>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">eBayを利用した物販やっている人はfindItemsAdvanceを使って特定セラーの情報を収集するツールを使っているイメージなので2025年2月5日は衝撃の日になりそう</p>



<p class="wp-block-paragraph">時間ができたらもう少し<strong>Browse API</strong>を調べてみたいです（需要ありそうだし）</p>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/ebay-api-finding-abolition/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】モッピーの情報を収集して発信する</title>
		<link>https://javeo.jp/moppy_automatic/</link>
					<comments>https://javeo.jp/moppy_automatic/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Mon, 25 Dec 2023 23:00:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[RPA]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=1668</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/01/コンピューターを使うロボットのイラスト-1024x538.jpg" class="webfeedsFeaturedVisual" /></p>処理の全貌 まずは概要説明 どんな処理をしているのか文字起こしするとこんな感じ ポイントサイトについて深掘りはしないのですが、クローリングから始まる一連の流れを自動化してるよって目線で見ていただけると ↓↓でもう少しだけ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2023/01/コンピューターを使うロボットのイラスト-1024x538.jpg" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">Pythonで毎日自動処理するプログラムをいくつか作っているのでその紹介です</p>



<p class="wp-block-paragraph">24時間365日稼働させるためには相応の環境が必要で、私はWindows Serverを使っていますので同じように全自動環境が欲しい方は下記を参考にしてみてください</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">
https://javeo.jp/contracts-windows-server/
</div></figure>
</div>



<h2 class="wp-block-heading">処理の全貌</h2>



<p class="wp-block-paragraph">まずは概要説明</p>



<p class="wp-block-paragraph">どんな処理をしているのか文字起こしするとこんな感じ</p>



<ol class="has-watery-green-background-color has-background wp-block-list">
<li><span class="bold"><span class="bold-red">毎朝8時にプログラムを定時期実行</span></span>させて以降の処理を実行</li>



<li>ポイントサイトの<a href="https://pc.moppy.jp/entry/invite.php?invite=zh24e108" data-type="link" data-id="https://pc.moppy.jp/entry/invite.php?invite=zh24e108" target="_blank" rel="noreferrer noopener">モッピー</a>に対して<span class="bold-red"><span class="marker-under">クローリング実行</span></span></li>



<li>スクレイピング結果は自分のブログサイト（<a href="https://px.a8.net/svt/ejp?a8mat=2ZTU22+94NC8Y+CO4+614CY" target="_blank" rel="noreferrer noopener">Xserver</a>）の<span class="bold-red"><span class="marker-under">データベースに保存</span></span></li>



<li>新規案件とポイントの増減した案件を前日比較して絞り込み</li>



<li>絞り込み結果から<span class="bold-red"><span class="marker-under">ブログ用のページを作成して投稿</span></span></li>



<li>絞り込み結果から<span class="bold-red"><span class="marker-under">Xへポスト</span></span>する</li>



<li>LINEで自分に処理完了を通知</li>
</ol>



<p class="wp-block-paragraph">ポイントサイトについて深掘りはしないのですが、クローリングから始まる一連の流れを自動化してるよって目線で見ていただけると</p>



<p class="wp-block-paragraph">↓↓でもう少しだけ細かく説明します</p>



<h3 class="wp-block-heading">毎朝8時にプログラムを定時期実行させて以降の処理を実行</h3>



<p class="wp-block-paragraph">Windows Serverを使っているのでWindows PCと同じようにタスクスケジューラを使えば定期実行の設定が簡単にできます</p>



<p class="wp-block-paragraph">※詳しくは↓↓↓を見てもらえればわかるはず</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">
https://javeo.jp/taskscheduler/
</div></figure>



<p class="wp-block-paragraph">設定次第で毎日決まった時間に実行したり、1時間毎に実行したりと好きなように繰り返し実行できます</p>



<h3 class="wp-block-heading">ポイントサイトのモッピーに対してクローリング実行</h3>



<p class="wp-block-paragraph"><a href="https://pc.moppy.jp/entry/invite.php?invite=zh24e108" data-type="link" data-id="https://pc.moppy.jp/entry/invite.php?invite=zh24e108" target="_blank" rel="noreferrer noopener">モッピー</a>自体に興味がある人は少ない気がするので詳細は割愛しますが、Pythonを使えばWEBサイトから欲しい情報を収集してリストアップすることが可能です</p>



<p class="wp-block-paragraph">※クローリングに興味のある方は私のプロフィールから<a href="https://crowdworks.jp/public/employees/1664719" target="_blank" rel="noreferrer noopener">クラウドワークス</a>や<a href="https://coconala.com/users/864045" data-type="link" data-id="https://coconala.com/users/864045" target="_blank" rel="noreferrer noopener">ココナラ</a>でご相談ください</p>



<h3 class="wp-block-heading">クローリング結果は自分のブログサイト（Xserver）のデータベースに保存</h3>



<p class="wp-block-paragraph">取得した情報の一部がこんな感じ</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2023/12/image-1.png"><img decoding="async" width="1024" height="325" src="https://javeo.jp/wp-content/uploads/2023/12/image-1-1024x325.png" alt="" class="wp-image-1845" srcset="https://javeo.jp/wp-content/uploads/2023/12/image-1-1024x325.png 1024w, https://javeo.jp/wp-content/uploads/2023/12/image-1-300x95.png 300w, https://javeo.jp/wp-content/uploads/2023/12/image-1-150x48.png 150w, https://javeo.jp/wp-content/uploads/2023/12/image-1-768x244.png 768w, https://javeo.jp/wp-content/uploads/2023/12/image-1.png 1282w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">サーバーの中のデータベースに保存することでWeb画面から検索をかけたりすることが可能になるので結構使い勝手が良いです</p>



<p class="wp-block-paragraph">実際にこのデータを使っているページが↓</p>



<p class="wp-block-paragraph"><a href="https://point.javeo.jp/moppy_poiint_transition/">https://point.javeo.jp/moppy_poiint_transition/</a></p>



<h3 class="wp-block-heading">新規案件とポイントの増減した案件を前日比較して絞り込み</h3>



<p class="wp-block-paragraph">データベースにデータ保存してあればSQL（もっと言えばビューですが）を使って前日比較することが簡単になります</p>



<p class="wp-block-paragraph">細かく言うと 「追加・削除・値の増加・値の減少」で、それぞれ秒で前日比較することもできます</p>



<h3 class="wp-block-heading">絞り込み結果からブログ用のページを作成して投稿</h3>



<p class="wp-block-paragraph">Python使えば比較的簡単にWordpressに記事投稿できるんです</p>



<p class="wp-block-paragraph">きっとAIを使えば文章もいい感じに可変にできる気もしますが今はそこまでの熱意が無いので文章は定形、↑で収集した前日比較の値から作成するテーブルを可変部分で毎日投稿しています</p>



<p class="wp-block-paragraph">毎日投稿しているサイトは↓です</p>



<p class="wp-block-paragraph"><a href="https://point.javeo.jp/">https://point.javeo.jp/</a></p>



<h3 class="wp-block-heading">絞り込み結果からXへポストする</h3>



<p class="wp-block-paragraph">Pythonを使えば簡単にX（旧Twitter）にポストすることもできるんです</p>



<p class="wp-block-paragraph">これまでよろしく、前日比較してポイントのUP・Down、新規広告をカウントしてポストの文章作ってWordpressの記事のURLを記載してポストしています</p>



<p class="wp-block-paragraph">毎日ポストしているbotアカウントがこちら↓</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<a class="twitter-timeline" data-width="500" data-height="750" data-dnt="true" href="https://s.com/javeo2021">Posts by javeo2021</a><script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
</div></figure>



<h3 class="wp-block-heading">LINEで自分に処理完了を通知</h3>



<p class="wp-block-paragraph">最後にサーバー側のメンテンナンスとかで稀にプログラムが実行されないことがあるのでPythonでLINE通知して終了</p>



<p class="wp-block-paragraph">通知方法は↓↓を参照</p>



<figure class="wp-block-embed is-type-wp-embed"><div class="wp-block-embed__wrapper">
https://javeo.jp/line_notify/
</div></figure>



<p class="wp-block-paragraph">ちなみに、途中でエラーがした場合はエラーを通知するようにしています</p>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">色々手が込んだ作りにしたんですが、正直ポイントサイトに興味がある人があまりいないイメージなので、改めてまとめるとココまでやる意味とは！？と自問自答しています</p>



<p class="wp-block-paragraph">なんですが、Windows Serverなど環境を整えればPythonでこんなことを全自動で毎日実行できる一例になったのでそこには価値があったと思っています</p>



<p class="wp-block-paragraph">他にもいくつかWindows Serverで実行していることがあるのでどこかで紹介していきます</p>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/moppy_automatic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Python】ChatworkでAPIを使って自動的にメッセージを送る</title>
		<link>https://javeo.jp/chatwork-notify/</link>
					<comments>https://javeo.jp/chatwork-notify/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Sun, 06 Aug 2023 23:00:00 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Chatwork]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=1303</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/06/chatwork-notify-1024x538.jpg" class="webfeedsFeaturedVisual" /></p>Pythonでバッチを組むと、処理結果やエラーをどこかに通知したくなります、メールだと埋もれがちなので、チャットに飛ばしておくと見落としが減って便利です 通知先としてよく挙がるLINEやメールは、最近ちょっとハードルが上 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2026/06/chatwork-notify-1024x538.jpg" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<p class="wp-block-paragraph">Pythonでバッチを組むと、処理結果やエラーをどこかに通知したくなります、メールだと埋もれがちなので、チャットに飛ばしておくと見落としが減って便利です</p>



<p class="wp-block-paragraph">通知先としてよく挙がるLINEやメールは、最近ちょっとハードルが上がっています、LINEは手軽だった<strong>LINE Notifyが2025年3月で終了</strong>して、今はメッセージ送信に<strong>LINE公式アカウント</strong>の用意が必要になりました、メールも安定して送ろうとすると<strong>外部サービスの契約</strong>が要りがちです</p>



<p class="wp-block-paragraph">その点Chatworkは、アカウントさえあれば<strong>APIトークン</strong>と<strong>ルームID</strong>の2つを用意するだけでPythonから数行でメッセージを送れます、この記事ではその2つの取得方法から、実際に送るサンプルコードまでまとめてご紹介します</p>



<div class="wp-block-group is-style-big_icon_memo"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">公式ドキュメントにあるソースを少し弄った程度のシンプルなプログラムです、難しい準備は要らないので身構えなくて大丈夫です</p>
</div></div>



<h2 class="wp-block-heading">APIの利用に必要なもの</h2>



<p class="wp-block-paragraph">プログラムのなかで使うパラメータは次の2つです</p>



<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li><strong>APIトークン</strong>(誰として送るか=送信元アカウントの鍵)</li>



<li><strong>ルームID</strong>(どのチャットに送るか=宛先)</li>
</ul>



<p class="wp-block-paragraph">それぞれの取得方法を順番に見ていきます</p>



<h2 class="wp-block-heading">APIトークンを取得</h2>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">ここで取得した<strong>APIトークン</strong>のアカウントとしてメッセージが送られます、普段使いのアカウントではなく<strong><span class="swl-marker mark_yellow">通知用アカウント</span></strong>を別で作ってトークンを取得するのがおすすめです</p>
</div></div>



<div class="swell-block-step" data-num-style="circle">
<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">サービス連携を開く</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">ログイン後、右上のアカウント名をクリックして、メニューの中から<strong><span class="swl-marker mark_yellow">サービス連携</span></strong>をクリックします</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57-1024x538.png" alt="Chatworkの右上メニューからサービス連携を開く" class="wp-image-3067" srcset="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57-300x158.png 300w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57-150x79.png 150w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57-768x403.png 768w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h55_57.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">APIトークンをコピーする</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">ChatworkのWEBページに移動するので、左側のメニューで<strong><span class="swl-marker mark_yellow">APIトークン</span></strong>をクリックします、トークンが表示されるのでコピーして控えておきます</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1-1024x538.png" alt="Chatworkのサービス連携画面でAPIトークンをコピーする" class="wp-image-3069" srcset="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1-300x158.png 300w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1-150x79.png 150w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1-768x403.png 768w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_20h56_51-1.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div>
</div>



<div class="wp-block-group is-style-big_icon_point"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">パーソナルプラン以外(ビジネスプランなど)では、APIトークンの利用に<strong>組織管理者への申請・承認</strong>が必要なことがあります、トークンの画面が出てこないときは管理者に確認してみてください</p>
</div></div>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph"><strong><span class="swl-marker mark_yellow" style="color:#e8313b">APIトークンはパスワードと同じ</span></strong>です、人に教えたりGitHubなどの公開リポジトリにそのまま載せたりしないように気をつけてください、もし漏れてしまったときはサービス連携の画面から再発行すれば、古いトークンは無効になります</p>
</div></div>



<h2 class="wp-block-heading">ルームIDを取得</h2>



<p class="wp-block-paragraph">次は、メッセージを送りたいルームの<strong>ルームID</strong>を調べます</p>



<div class="swell-block-step" data-num-style="circle">
<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">対象のグループチャットを開く</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">通知の対象にする<strong><span class="swl-marker mark_yellow">グループチャット</span></strong>をクリックして、アクティブな状態にしておきます</p>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">グループチャットの設定を開く</div><div class="swell-block-step__body">
<p class="wp-block-paragraph"><strong>右上の歯車アイコン</strong>をクリックして、<strong><span class="swl-marker mark_yellow">グループチャットの設定</span></strong>をクリックします</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1-1024x538.png" alt="Chatworkの歯車アイコンからグループチャットの設定を開く" class="wp-image-3072" srcset="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1-300x158.png 300w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1-150x79.png 150w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1-768x403.png 768w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_07-1.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div>



<div class="swell-block-step__item"><div class="swell-block-step__number u-bg-main"><span class="__label">STEP</span></div><div class="swell-block-step__title u-fz-l">ルームIDを控える</div><div class="swell-block-step__body">
<p class="wp-block-paragraph">設定画面の左下に<strong>ルームID</strong>が表示されているので、控えておきます</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1.png"><img decoding="async" width="1024" height="641" src="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1-1024x641.png" alt="Chatworkのグループチャット設定画面の左下に表示されるルームID" class="wp-image-3074" srcset="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1-1024x641.png 1024w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1-300x188.png 300w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1-150x94.png 150w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1-768x480.png 768w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h03_14-1.png 1202w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
</div></div>
</div>



<div class="wp-block-group is-style-big_icon_memo"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">ブラウザ版ならURLからも確認できます、対象のルームを開いたときのアドレスが <strong>https://www.chatwork.com/#!rid●●●●●●●●</strong> のようになっていて、<strong><span class="swl-marker mark_yellow">#!rid のうしろの数字</span></strong>がルームIDです</p>
</div></div>



<h2 class="wp-block-heading">Pythonのプログラム</h2>



<p class="wp-block-paragraph">肝心のPythonプログラムがこちらです、APIトークンとルームIDはコードに直書きせず、<strong>.env</strong>ファイルから読み込む形にしています、こうしておけば値を差し替えるのも楽ですし、うっかり鍵を公開してしまう事故も防げます</p>



<p class="wp-block-paragraph">まず読み込みに使う<strong>python-dotenv</strong>を入れておきます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>pip install python-dotenv</code></pre></div>



<p class="wp-block-paragraph">次にプロジェクトの直下に<strong>.env</strong>を作って、さっき取得したAPIトークンとルームIDを書いておきます</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>CHATWORK_TOKEN=取得したAPIトークン
CHATWORK_ROOM_ID=取得したルームID</code></pre></div>



<div class="wp-block-group is-style-big_icon_caution"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">作った<strong>.env</strong>は<strong>.gitignoreに入れて</strong>、GitHubなどにアップしないようにしておきます、これで鍵をコードに直書きせず、リポジトリにも残さずに済みます</p>
</div></div>



<p class="wp-block-paragraph">本体のコードがこちらです、ステータスコードが200かどうかで送信成功を<strong>True</strong>・<strong>False</strong>で返すようにしています</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-python" data-lang="Python"><code>import os

import requests
from dotenv import load_dotenv

load_dotenv()
CHATWORK_TOKEN = os.environ[&quot;CHATWORK_TOKEN&quot;]
CHATWORK_ROOM_ID = os.environ[&quot;CHATWORK_ROOM_ID&quot;]


def send_to_chatwork(message, chatwork_token=CHATWORK_TOKEN, room_id=CHATWORK_ROOM_ID) -&gt; bool:
    url = f&quot;https://api.chatwork.com/v2/rooms/{room_id}/messages&quot;
    headers = {
        &quot;accept&quot;: &quot;application/json&quot;,
        &quot;content-type&quot;: &quot;application/x-www-form-urlencoded&quot;,
        &quot;x-chatworktoken&quot;: chatwork_token,
    }
    payload = {
        &quot;self_unread&quot;: 0,
        &quot;body&quot;: message,
    }
    response = requests.post(url, data=payload, headers=headers)
    return response.status_code == 200</code></pre></div>



<p class="wp-block-paragraph">やっていることはシンプルで、<strong>https://api.chatwork.com/v2/rooms/{room_id}/messages</strong> に対して、ヘッダーに<strong>X-ChatWorkToken</strong>(取得したAPIトークン)を入れて、<strong>body</strong>にメッセージ本文を入れてPOSTするだけです、<strong>self_unread</strong>は自分側を未読にするかどうかの任意指定で、0だと既読の状態で送られます</p>



<p class="wp-block-paragraph">あとは <strong>send_to_chatwork(&#8216;通知したいメッセージ&#8217;)</strong> のように呼べば、バッチの好きなタイミングで通知できます</p>



<div class="wp-block-group is-style-big_icon_point"><div class="wp-block-group__inner-container">
<p class="wp-block-paragraph">ChatworkのAPIには利用回数の制限があります、ループの中で大量に送るような使い方は避けて、処理結果やエラーの要点だけ送るくらいがちょうどいいです</p>
</div></div>



<h2 class="wp-block-heading">通知結果</h2>



<p class="wp-block-paragraph">↓のように、APIトークンを発行したアカウントとしてメッセージが送信されます</p>



<figure class="wp-block-image size-large is-style-shadow"><a href="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02-1024x538.png" alt="Pythonから送ったメッセージがChatworkに表示された結果" class="wp-image-3077" srcset="https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02-300x158.png 300w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02-150x79.png 150w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02-768x403.png 768w, https://javeo.jp/wp-content/uploads/2023/08/2025-04-07_21h29_02.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">公式ドキュメント</h2>



<p class="wp-block-paragraph">公式ドキュメントはいくつかありますが、↓のページは簡易テストもできてわかりやすいです</p>



<p class="wp-block-paragraph"><a href="https://developer.chatwork.com/reference/post-rooms-room_id-messages" target="_blank" rel="noopener noreferrer">メッセージを投稿する｜Chatwork API Documentation</a></p>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">仕事で処理結果やエラーを共有するなら、Chatworkは利用シーンが多いので作っておくと便利です</p>



<p class="wp-block-paragraph">Pythonの自動化つながりだと、<a href="https://javeo.jp/python_wait/" target="_blank" rel="noopener noreferrer">Selenium WebDriverWaitの使い方</a>でスクレイピングを安定させて、その結果をこのChatwork通知に流す、といった組み合わせも便利です</p>



<p class="wp-block-paragraph">作ったスクリプトを配りたいときは、<a href="https://javeo.jp/decompile-pyinstaller/" target="_blank" rel="noopener noreferrer">PyInstallerでexe化する話</a>もあわせてどうぞ</p>


<div class="p-blogParts post_content" data-partsID="4602">
<div class="jv-books" id="jv-books-python" data-shelf="python"><div class="jv-books-head"><span class="jv-books-title"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Python自動化の独学に効く本</span><span class="jv-books-pr">PR</span></div><div class="jv-books-grid"><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4814401523?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1529/9784814401529_1_2.jpg?_ex=240x240" alt="退屈なことはPythonにやらせよう 第3版" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">退屈なことはPythonにやらせよう 第3版</p><p class="jv-book-author">Al Sweigart</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4814401523?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="amazon" data-book="4814401523">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F&#038;m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="rakuten" data-book="4814401523">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4297107384?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7383/9784297107383.jpg?_ex=240x240" alt="Pythonクローリング&amp;スクレイピング 増補改訂版" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">Pythonクローリング&amp;スクレイピング 増補改訂版</p><p class="jv-book-author">加藤耕太</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4297107384?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="amazon" data-book="4297107384">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F&#038;m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="rakuten" data-book="4297107384">楽天で見る</a></div></div></div><div class="jv-book-card"><a class="jv-book-cover" href="https://www.amazon.co.jp/dp/4839973857?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3858/9784839973858.jpg?_ex=240x240" alt="シゴトがはかどる Python自動処理の教科書" width="120" height="170" loading="lazy"></a><div class="jv-book-info"><p class="jv-book-title">シゴトがはかどる Python自動処理の教科書</p><p class="jv-book-author">クジラ飛行机</p><div class="jv-book-btns"><a class="jv-btn jv-btn-az" href="https://www.amazon.co.jp/dp/4839973857?tag=javeo2022-22" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="amazon" data-book="4839973857">Amazonで見る</a><a class="jv-btn jv-btn-rk" href="https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F&#038;m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F" target="_blank" rel="nofollow sponsored noopener noreferrer" data-shelf="python" data-mall="rakuten" data-book="4839973857">楽天で見る</a></div></div></div></div><p class="jv-books-note">私のおすすめからランダムで3冊を表示しています</p></div>
<style>
.jv-books{border:1px solid #e0e0e0;border-radius:8px;padding:16px;margin:1.5em 0;background:#fff}
.jv-books-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.jv-books-title{font-weight:700;font-size:1.05em}
.jv-books-pr{font-size:.7em;color:#888;border:1px solid #ccc;border-radius:3px;padding:1px 6px;flex-shrink:0}
.jv-books-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;min-height:330px}
.jv-book-card{display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid #f0f0f0;border-radius:6px;padding:12px 8px;background:#fafafa}
.jv-book-cover img{width:auto;max-width:120px;height:170px;object-fit:contain}
.jv-book-info{width:100%;flex:1;display:flex;flex-direction:column}
.jv-book-title{font-size:.82em;font-weight:600;line-height:1.4;margin:8px 0 2px;min-height:2.8em;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.jv-book-author{font-size:.72em;color:#777;margin:0 0 8px}
.jv-book-btns{display:flex;flex-direction:column;gap:6px;width:100%;margin-top:auto}
.jv-btn{display:block;text-align:center;font-size:.78em;font-weight:600;color:#fff!important;text-decoration:none!important;border-radius:4px;padding:7px 4px;line-height:1.2}
.jv-btn-az{background:#e88b00}
.jv-btn-rk{background:#bf0000}
.jv-btn:hover{opacity:.85}
.jv-books-note{font-size:.7em;color:#999;text-align:right;margin:8px 0 0}
@media(max-width:599px){
.jv-books-grid{grid-template-columns:1fr;min-height:0}
.jv-book-card{flex-direction:row;text-align:left;gap:12px}
.jv-book-cover img{height:110px;max-width:80px}
.jv-book-info{min-width:0}
.jv-book-title{min-height:0}
.jv-book-btns{flex-direction:row}
.jv-btn{flex:1}
}
</style>
<script>
(function(){
var SHELF='python';
var root=document.getElementById('jv-books-'+SHELF);
if(!root||root.dataset.init)return;
root.dataset.init='1';
var POOL=[{"t": "退屈なことはPythonにやらせよう 第3版", "a": "Al Sweigart", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/1529/9784814401529_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4814401523?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18513569%2F", "id": "4814401523"}, {"t": "Pythonクローリング&スクレイピング 増補改訂版", "a": "加藤耕太", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/7383/9784297107383.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4297107384?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15960670%2F", "id": "4297107384"}, {"t": "シゴトがはかどる Python自動処理の教科書", "a": "クジラ飛行机", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3858/9784839973858.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4839973857?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16520665%2F", "id": "4839973857"}, {"t": "もっとシゴトがはかどる Python×Excel×AI 業務自動化の教科書", "a": "クジラ飛行机", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8302/9784839988302_1_2.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4839988307?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18238595%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F18238595%2F", "id": "4839988307"}, {"t": "Python2年生 スクレイピングのしくみ 第2版", "a": "森巧尚", "img": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/2605/9784798182605.jpg?_ex=240x240", "az": "https://www.amazon.co.jp/dp/4798182605?tag=javeo2022-22", "rk": "https://hb.afl.rakuten.co.jp/hgc/24ecde15.e492bb61.24ecde16.6c9a125b/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17821975%2F&m=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F17821975%2F", "id": "4798182605"}];
var REL='nofollow sponsored noopener noreferrer';
function el(tag,cls){var e=document.createElement(tag);if(cls)e.className=cls;return e;}
function btn(href,cls,label,mall,id){
var a=el('a','jv-btn '+cls);a.href=href;a.target='_blank';a.rel=REL;a.textContent=label;
a.setAttribute('data-shelf',SHELF);a.setAttribute('data-mall',mall);a.setAttribute('data-book',id);
return a;}
function card(b){
var d=el('div','jv-book-card');
var cover=el('a','jv-book-cover');cover.href=b.az;cover.target='_blank';cover.rel=REL;
var img=el('img');img.src=b.img;img.alt=b.t;img.width=120;img.height=170;img.loading='lazy';
cover.appendChild(img);
var info=el('div','jv-book-info');
var ttl=el('p','jv-book-title');ttl.textContent=b.t;
var au=el('p','jv-book-author');au.textContent=b.a;
var btns=el('div','jv-book-btns');
btns.appendChild(btn(b.az,'jv-btn-az','Amazonで見る','amazon',b.id));
if(b.rk){btns.appendChild(btn(b.rk,'jv-btn-rk','楽天で見る','rakuten',b.id));}
info.appendChild(ttl);info.appendChild(au);info.appendChild(btns);
d.appendChild(cover);d.appendChild(info);
return d;}
var pool=POOL.slice();
for(var i=pool.length-1;i>0;i--){var j=Math.floor(Math.random()*(i+1));var t=pool[i];pool[i]=pool[j];pool[j]=t;}
var grid=root.querySelector('.jv-books-grid');
grid.style.opacity='0';
while(grid.firstChild)grid.removeChild(grid.firstChild);
pool.slice(0,3).forEach(function(b){grid.appendChild(card(b));});
grid.style.transition='opacity .5s ease';
void grid.offsetWidth;
grid.style.opacity='1';
})();
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/chatwork-notify/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TwitterのAPIキーを取得する</title>
		<link>https://javeo.jp/ge-twitter-api/</link>
					<comments>https://javeo.jp/ge-twitter-api/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Sat, 22 Oct 2022 23:00:00 +0000</pubDate>
				<category><![CDATA[雑記・その他]]></category>
		<category><![CDATA[API]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=876</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2022/08/twitterDeveloper-Platform-1024x538.png" class="webfeedsFeaturedVisual" /></p>副業でTwitterのAPIを使う機会があったので取得方法を備忘でまとめてみました（都合2アカウント分、つまり2回取得しています） 調べてみると申請画面や項目は結構な頻度で変わるみたいで、この記事は2022年10月現在の [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2022/08/twitterDeveloper-Platform-1024x538.png" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<p class="wp-block-paragraph">副業でTwitterのAPIを使う機会があったので取得方法を備忘でまとめてみました（都合2アカウント分、つまり2回取得しています）</p>



<p class="wp-block-paragraph">調べてみると申請画面や項目は結構な頻度で変わるみたいで、この記事は2022年10月現在の申請方法になりますのでその前提で参考にしてみてください</p>



<p class="wp-block-paragraph">申請画面は英語多めで苦手な方（私）向けに画面多めで構成してますので縦長になりましたがその分伝わりやすいと思うのでご了承を</p>



<p class="wp-block-paragraph">（一応レベルの事前準備をお伝えするとツイッターのアカウントは事前に作成しておいてください）</p>



<h2 class="wp-block-heading">事前準備編</h2>



<h3 class="wp-block-heading">まずはTwitterへログイン</h3>



<p class="wp-block-paragraph"><a href="https://developer.twitter.com/ja" target="_blank" rel="noreferrer noopener">https://developer.twitter.com/ja</a></p>



<p class="wp-block-paragraph">兎にも角にもまずはログインから</p>



<p class="wp-block-paragraph">Googleアカウントに連動してたっけ？と思いつつ連動してれば簡単にログインできます</p>



<p class="wp-block-paragraph" id="block-4c9c4476-85c5-4388-b9ef-67a6588e38fd">そしてなぜかリダイレクト先が開発者用ではなくて普通のTwitter画面に、、、</p>



<div class="wp-block-jetpack-slideshow aligncenter" data-effect="fade"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1024" height="555" alt="" class="wp-block-jetpack-slideshow_image wp-image-933" data-id="933" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1-1024x555.jpg" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1-1024x555.jpg 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1-300x163.jpg 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1-150x81.jpg 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1-768x416.jpg 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1-1536x832.jpg 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h54_09-1.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-945" data-id="945" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_08h55_44-1-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-946" data-id="946" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01.jpg" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01.jpg 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01-300x163.jpg 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01-1024x555.jpg 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01-150x81.jpg 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01-768x416.jpg 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h31_01-1536x832.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<h3 class="wp-block-heading">ついでにPC版のTwitter言語を日本語に</h3>



<p class="wp-block-paragraph">PC側だと初期値が英語設定になっていたので日本語に直します（私だけですか？）</p>



<p class="wp-block-paragraph">たいした話ではないのでさらっと</p>



<p class="wp-block-paragraph"><strong>①more →　②Settings and Support　→　②Settings and privacy　→　④Accessibility, display, and languages　→　⑤Languages　→　⑥Display language　→　⑦Change display language</strong>　で　&#8221;Japanese &#8211; 日本語&#8221;を選択して右下の&#8221;Save&#8221;を押下</p>



<div class="wp-block-jetpack-slideshow aligncenter" data-effect="fade"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1024" height="555" alt="" class="wp-block-jetpack-slideshow_image wp-image-935" data-id="935" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48-1024x555.jpg" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48-1024x555.jpg 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48-300x163.jpg 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48-150x81.jpg 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48-768x416.jpg 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48-1536x832.jpg 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h02_48.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-940" data-id="940" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_38-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-941" data-id="941" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_44-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-942" data-id="942" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h24_58-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-943" data-id="943" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_09h26_17-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<h3 class="wp-block-heading">開発者プラットフォームで今度は&#8221;Sing up&#8221;</h3>



<p class="wp-block-paragraph">Twitterにログインできているとヘッダーのメニューが変わっているので今度は&#8221;<strong>Sing up</strong>&#8220;を</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38.jpg"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38-1024x555.jpg" alt="" class="wp-image-950" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38-1024x555.jpg 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38-300x163.jpg 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38-150x81.jpg 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38-768x416.jpg 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38-1536x832.jpg 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h18_38.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">URLを見ればわかるのですが以降のメニューは英語圏しか準備されていならしく言語が英語に・・・（英語が苦手な私はGoogle先生に翻訳してもらって進めました）</p>



<p class="wp-block-paragraph">聞かれてることは大したことではないので適当に登録して&#8221;<strong>Let&#8217;s do this</strong>&#8220;を押下</p>



<p class="wp-block-paragraph">次ページは利用規約の同意なので気になる人は一読した後に&#8221;<strong>Submit</strong>&#8220;で利用規約に同意を</p>



<p class="wp-block-paragraph">（このあとTwitter開発者用アカウントからメールが届くのでメール内のリンクから続きを）</p>



<div class="wp-block-jetpack-slideshow aligncenter" data-effect="fade"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-952" data-id="952" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h06_44-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-954" data-id="954" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_41-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<h4 class="wp-block-heading">（Twitterアカウントに電話番号が登録されていないと弾かれる）</h4>



<p class="wp-block-paragraph">利用規約同意しようとしても画面が変わらず・・・右上を見るとどうやらTwitterアカウントに電話番号登録が必要とのことなので一度Twitter側の画面へ</p>



<p class="wp-block-paragraph">（先ほど日本語化しているのでわかりやすい！）</p>



<p class="wp-block-paragraph"><strong>もっと見る　→　設定とサポート　設定とプライバシー　→　アカウント　→　アカウント機能　→　電話</strong>　で登録を（この後SNS認証などありますが省略）</p>



<p class="wp-block-paragraph">終わったら改めて&#8221;<strong>Submit</strong>&#8220;で利用規約に同意を</p>



<div class="wp-block-jetpack-slideshow aligncenter" data-effect="fade"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-972" data-id="972" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h09_48-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-958" data-id="958" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1.jpg" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1.jpg 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1-300x163.jpg 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1-1024x555.jpg 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1-150x81.jpg 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1-768x416.jpg 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h21_52-1-1536x832.jpg 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-959" data-id="959" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_09-1-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-960" data-id="960" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_13h22_13-1-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<h2 class="wp-block-heading">開発者ポータル編</h2>



<p class="wp-block-paragraph" id="block-502e37b1-5ba9-419e-9cbd-6ef4c358dfde">ようやく開発者ポータルでの作業へ移ります</p>



<h3 class="wp-block-heading">アプリ名の設定とAPIキーの生成</h3>



<p class="wp-block-paragraph">まず最初にアプリの名前を登録を要求されるので適当に登録（後から変更できます）</p>



<p class="wp-block-paragraph">すると早速&#8221;<span class="marker-under"><strong>API Key</strong> / <strong>API<strong> Key</strong> Secret</strong> / <strong>Bearer Token</strong></span>&#8220;生成さます！が、さすがにここで終わりってことはなくAPIの利用にはまだまだ必要なものがあるのでダッシュボードへ</p>



<div class="wp-block-jetpack-slideshow aligncenter" data-effect="fade"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1024" height="555" alt="" class="wp-block-jetpack-slideshow_image wp-image-962" data-id="962" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27-1024x555.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h33_27.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-963" data-id="963" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h34_33-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<h3 class="wp-block-heading">アクセストークンを生成</h3>



<p class="wp-block-paragraph">ダッシュボードのトップページにある鍵のアイコンからAPIキーとトークンの管理画面へ</p>



<p class="wp-block-paragraph">一番下がアクセストークンなので&#8221;<strong>Generate</strong>&#8220;をクリック</p>



<p class="wp-block-paragraph">すぐに&#8221;<span class="marker-under"><strong>Access Token</strong> / <strong>Access Token Secret</strong></span>&#8220;が生成されるので&#8221;<strong>Yes, I saved them</strong>&#8220;で確定</p>



<div class="wp-block-jetpack-slideshow aligncenter is-style-circle" data-effect="fade"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-964" data-id="964" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h40_10-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-966" data-id="966" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_06-1-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1920" height="1040" alt="" class="wp-block-jetpack-slideshow_image wp-image-967" data-id="967" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20.png 1920w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h42_20-1536x832.png 1536w" sizes="(max-width: 1920px) 100vw, 1920px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<h3 class="wp-block-heading">ユーザー認証設定してクライアントIDを取得</h3>



<p class="wp-block-paragraph">左部のメニューから&#8221;<strong>Projects &amp; Apps → Project 1 → &lt;最初に設定したアプリ名&gt;</strong>&#8220;のメニューへ移動して設定画面へ</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30-1024x555.png" alt="" class="wp-image-981" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h10_30.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">初の縦長メニュー</p>



<p class="wp-block-paragraph">最後の&#8221;<strong>App info</strong>&#8220;が曲者ですが各項目を選択＆入力してクライアントIDを生成する</p>



<p class="wp-block-paragraph">一応レベルですが各項目の説明は画像の下に用意しています</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14.png"><img decoding="async" width="588" height="1024" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14-588x1024.png" alt="" class="wp-image-978" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14-588x1024.png 588w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14-172x300.png 172w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14-86x150.png 86w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14-768x1337.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14-882x1536.png 882w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_19h55_14.png 1080w" sizes="(max-width: 588px) 100vw, 588px" /></a></figure>



<h4 class="wp-block-heading">App permissions</h4>



<p class="wp-block-paragraph">&#8220;<strong>Read</strong>&#8220;だとツイートできず私の目的は達成できないので&#8221;<strong>Read and write</strong>&#8220;を選択</p>



<p class="wp-block-paragraph">きっとAPI使ってDMまでしたい人は&#8221;<strong>Read and write and Direct message</strong>&#8220;が必要なのでしょう</p>



<p class="wp-block-paragraph">&#8220;<strong>Request email from users</strong>&#8220;はよくわからない＆使い道なさそうなのでOFFのまま</p>



<h4 class="wp-block-heading">Type of App</h4>



<p class="wp-block-paragraph">選択肢による動作の違いは正直わかってません・・・</p>



<p class="wp-block-paragraph">私の目的は自動ツイート用のbotかつパブリックにする意味もないので&#8221;<strong>Web App, Automated App or Bot</strong>&#8220;を選択</p>



<h4 class="wp-block-heading">App info</h4>



<p class="wp-block-paragraph">ここが一番よくわからず・・・</p>



<p class="wp-block-paragraph">結果論として私が登録したのは必須の&#8221;<strong>Callback URI / Redirect URL</strong>&#8220;と&#8221;<strong>Website URL</strong>&#8220;の2つだけ</p>



<p class="wp-block-paragraph">この項目は諸説ありまして、調べた限り</p>



<ul class="wp-block-list"><li>両項目に自分が運営しているサイトのURL</li><li>&#8220;<strong>Callback URI / Redirect URL</strong>&#8220;には&#8221;<strong>https://127.0.0.1:3000/cb</strong>&#8220;<br>&#8220;<strong>Website URL</strong>&#8220;には自分のTwitterURL（私なら &#8220;<strong>https://twitter.com/javeo2022</strong>&#8220;）</li></ul>



<p class="wp-block-paragraph">のどちらか</p>



<p class="wp-block-paragraph">私は両方のパターンで申請しましたがどちらでも問題ない実績があります</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">全て入力して&#8221;<strong>Save</strong>&#8220;押下すると&#8221;<span class="marker-under"><strong>Client ID</strong> / <strong>Client Secret</strong></span>&#8220;が生成されます</p>



<figure class="wp-block-image size-large is-resized"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1.jpg"><img decoding="async" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1-1024x555.jpg" alt="" class="wp-image-983" width="840" height="455" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1-1024x555.jpg 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1-300x163.jpg 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1-150x81.jpg 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1-768x416.jpg 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1-1536x832.jpg 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h46_46-1.jpg 1920w" sizes="(max-width: 840px) 100vw, 840px" /></a></figure>



<h2 class="wp-block-heading">Pythonで利用するならもう一歩！</h2>



<p class="wp-block-paragraph">私はPythonでAPIを利用するので&#8221;<strong>tweepy</strong>&#8220;を使うわけですがもう一つ対応することがあります</p>



<p class="wp-block-paragraph">ツイートするAPIの問題なのかtweepyの仕様なのかわかりませんが言われてことを</p>



<h3 class="wp-block-heading">まだまだ終わらない、アクセス権が不足している？</h3>



<p class="wp-block-paragraph">この段階でアイテムとしては準備できているので早速APIでツイートしてみるとエラーが（わかりやすいのでVSCodeでのエラーメッセージから引用）</p>



<figure class="wp-block-image size-full"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h57_43.png"><img decoding="async" width="911" height="196" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h57_43.png" alt="" class="wp-image-973" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h57_43.png 911w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h57_43-300x65.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h57_43-150x32.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_17h57_43-768x165.png 768w" sizes="(max-width: 911px) 100vw, 911px" /></a></figure>



<p class="has-watery-green-background-color has-background wp-block-paragraph">（原文）<br>403 Forbidden <br>453 &#8211; You currently have Essential access which includes access to Twitter API v2 endpoints only. If you need access to this endpoint, you’ll need to apply for Elevated access via the Developer Portal. You can learn more here: https://developer.twitter.com/en/docs/twitter-api/getting-started/about-twitter-api#v2-access-leve</p>



<p class="wp-block-paragraph">英語読めないので翻訳サイトさんに助けてもらうと&#8221;Elevatedアクセスに申請する必要があります&#8221;と言われたので再び開発者ポータルへ</p>



<p class="wp-block-paragraph">どうやら今のままでは&#8221;Essential&#8221;の状態なので&#8221;Elevated&#8221;へ申請する必要があるとのこと</p>



<p class="wp-block-paragraph">Essentialでは&#8221;Twitter API v2&#8243;が利用できるけどtweepyで利用しているのが&#8221;Twitter API v1.1&#8243;とのことでこの対応が必要らしい</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1-1024x555.png" alt="" class="wp-image-975" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_18h04_47-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">Elevatedへの申請をする</h3>



<p class="wp-block-paragraph">開発者ポータルの左部のメニューから&#8221;<strong>Products → Twitter API v2 → Elevatedタブ</strong>&#8220;の順で遷移して&#8221;<strong>Apply</strong>&#8220;を押下</p>



<div class="wp-block-jetpack-slideshow aligncenter" data-effect="slide"><div class="wp-block-jetpack-slideshow_container swiper-container"><ul class="wp-block-jetpack-slideshow_swiper-wrapper swiper-wrapper"><li class="wp-block-jetpack-slideshow_slide swiper-slide"><figure><img decoding="async" width="1024" height="555" alt="" class="wp-block-jetpack-slideshow_image wp-image-984" data-id="984" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25-1024x555.png" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_20h34_25.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure></li></ul><a class="wp-block-jetpack-slideshow_button-prev swiper-button-prev swiper-button-white" role="button"></a><a class="wp-block-jetpack-slideshow_button-next swiper-button-next swiper-button-white" role="button"></a><a aria-label="Pause Slideshow" class="wp-block-jetpack-slideshow_button-pause" role="button"></a><div class="wp-block-jetpack-slideshow_pagination swiper-pagination swiper-pagination-white"></div></div></div>



<p class="wp-block-paragraph">名前と国はプフィールから初期値として引用されている（と思う）ので&#8221;<strong>スキルレベル</strong>&#8220;を選択して&#8221;<strong>アップデート通知&#8221;</strong>は必要なら</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31-1024x555.png" alt="" class="wp-image-985" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h00_31.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><s>ここが一番だるい</s></p>



<p class="wp-block-paragraph">各設問に対して&#8221;<strong><span class="marker-red">英語</span></strong>&#8220;で入力する必要があります</p>



<p class="wp-block-paragraph">私は英語力皆無なので<a rel="noreferrer noopener" href="https://www.deepl.com/translator" data-type="URL" data-id="https://www.deepl.com/translator" target="_blank">DeeL翻訳</a>様の力をお借りしまして必要な各項目登録しました</p>



<p class="wp-block-paragraph">ちなみに各詳細項目でNoにした場合の影響はわかりません（正直）</p>



<p class="wp-block-paragraph">各コメントも適当に登録した時の影響がわからないので正直に回答します</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38.png"><img decoding="async" width="588" height="1024" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38-588x1024.png" alt="" class="wp-image-987" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38-588x1024.png 588w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38-172x300.png 172w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38-86x150.png 86w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38-768x1337.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38-882x1536.png 882w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h24_38.png 1080w" sizes="(max-width: 588px) 100vw, 588px" /></a></figure>



<h4 class="wp-block-heading">How will you use the Twitter API or Twitter Data?</h4>



<p class="wp-block-paragraph">この項目は必須</p>



<p class="wp-block-paragraph">利用目的を&#8221;英字200文字以上&#8221;で述べる必要があるのでそれらしい文章を入力します</p>



<p class="wp-block-paragraph">参考になるかわかりませんが日本語と実際に入力英語の文章を</p>



<p class="has-watery-yellow-background-color has-background wp-block-paragraph">今予定している利用目的は2つあります<br>毎日あるポイントサイトの変更点を探し、その差分をツイートするbotを作りたいです<br>自分をフォローしてくれた人を自動的にフォローバックしたいです<br>使い慣れればデータ分析など活用の幅を広げたいと思っています</p>



<p class="has-watery-blue-background-color has-background wp-block-paragraph">There are two purposes of use that I&#8217;m planning right now<br>I want to create a bot that looks for changes to a certain point site every day and tweets the differences!<br>I want to automatically follow back people who follow me!<br>Once I get used to using it, I would like to expand the scope of its use, such as data analysis.</p>



<h4 class="wp-block-heading">Are you planning to analyze Twitter data?</h4>



<p class="wp-block-paragraph">私は今のところデータ分析の予定はないのでNoに変更</p>



<p class="wp-block-paragraph">Yesなら&#8221;英字100文字以上&#8221;で入力</p>



<h4 class="wp-block-heading">Will your App use Tweet, Retweet, Like, Follow, or Direct Message functionality?</h4>



<p class="wp-block-paragraph">利用目的とほぼ同じこと言ってますがこれが利用目的なのでその通りに</p>



<p class="wp-block-paragraph">こちらも参考になるかわかりませんが日本語と実際に入力英語の文章を</p>



<p class="has-watery-yellow-background-color has-background wp-block-paragraph">とあるポイントサイトの変更点を探して、その差分をツイートするbotを作りたいです<br>フォローしてくれた人に自動でフォローバックしたいです<br>今はリツイート、いいね、DMの利用はありません</p>



<p class="has-watery-blue-background-color has-background wp-block-paragraph">I want to create a bot that looks for changes to a certain points site and tweet the differences!<br>I want to automatically follow back those who follow me!<br>No retweet, like, or DM use right now!</p>



<h4 class="wp-block-heading">Will your product, service, or analysis make Twitter content or derived information available to a government entity?</h4>



<p class="wp-block-paragraph">どこに情報提供する予定なんてないのでここもNoへ</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">レビュー画面を挟みますが問題なければ次へ</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14-1024x555.png" alt="" class="wp-image-989" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_21h25_14.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">最後に開発者契約とポリシーに同意して終了</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13.png"><img decoding="async" width="1024" height="555" src="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13-1024x555.png" alt="" class="wp-image-990" srcset="https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13-1024x555.png 1024w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13-300x163.png 300w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13-150x81.png 150w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13-768x416.png 768w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13-1536x832.png 1536w, https://javeo.jp/wp-content/uploads/2022/10/2022-10-22_22h04_13.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">実際に申請してもらうとわかるんですが最後のElevatedの申請はSubmitした瞬間から使えるようになるので利用目的とかちゃんと入力する意味あるのかなと思いつつも後から利用できなくなるとつまらないのでちゃんと入力しました</p>



<p class="wp-block-paragraph">実際に使用しているbotは↓なので気が向いたら見てみてください</p>



<figure class="wp-block-embed is-type-rich is-provider-twitter wp-block-embed-twitter"><div class="wp-block-embed__wrapper">
<a class="twitter-timeline" data-width="500" data-height="750" data-dnt="true" href="https://s.com/javeo2021">Posts by javeo2021</a><script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>
</div></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/ge-twitter-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>eBayのAPIを利用するために必要なIDとかを取得する</title>
		<link>https://javeo.jp/ebay-api-request/</link>
					<comments>https://javeo.jp/ebay-api-request/#respond</comments>
		
		<dc:creator><![CDATA[ジャベ雄]]></dc:creator>
		<pubDate>Sat, 30 Apr 2022 23:00:00 +0000</pubDate>
				<category><![CDATA[雑記・その他]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[eBay]]></category>
		<guid isPermaLink="false">https://javeo.jp/?p=557</guid>

					<description><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2022/04/eBay-Developers-Program.png" class="webfeedsFeaturedVisual" /></p>eBayのAPIキー取得は無料なのはいいけどサイト内が全て英語で日本語しかわからない私がGoogle先生に翻訳いただきながら取得したので、その手順とかを後世に残そうとメモを残すのである 最後に記述しますがWEBサイト持っ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://javeo.jp/wp-content/uploads/2022/04/eBay-Developers-Program.png" class="webfeedsFeaturedVisual" /></p><div class="codoc-evacuations" style="display:none;" data-shortcode=""></div>
<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">eBayのAPI関連のお仕事を受けたのでAPIキー取得の備忘録</p>
</div>



<p class="wp-block-paragraph">eBayのAPIキー取得は無料なのはいいけどサイト内が全て英語で日本語しかわからない私がGoogle先生に翻訳いただきながら取得したので、その手順とかを後世に残そうとメモを残すのである</p>



<p class="wp-block-paragraph">最後に記述しますがWEBサイト持ってないとトークンが取れないようなのでご注意を</p>



<h2 class="wp-block-heading">アカウント登録する</h2>



<p class="wp-block-paragraph">ログイン＆アカウント登録はコチラのURLから</p>



<p class="wp-block-paragraph"><a href="https://developer.ebay.com/signin">https://developer.ebay.com/signin</a></p>



<p class="wp-block-paragraph">新規登録なので「<strong>Register</strong>」タブをクリックして各項目を入力するだけ<br>パスワードは8文字以上64文字以下で英数字記号を全て使いなさいと書いてあるのでその通りに</p>



<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_14-1.png"><img decoding="async" width="184" height="300" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_14-1-184x300.png" alt="" class="wp-image-559" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_14-1-184x300.png 184w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_14-1-92x150.png 92w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_14-1.png 564w" sizes="(max-width: 184px) 100vw, 184px" /></a><figcaption>クリックすると拡大されます</figcaption></figure></div>



<p class="wp-block-paragraph">メールが届いて24時間以内にクリックせい！とおっしゃられるのでその通りに</p>



<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42.png"><img decoding="async" width="300" height="214" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42-300x214.png" alt="" class="wp-image-561" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42-300x214.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42-1024x732.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42-150x107.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42-768x549.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h34_42.png 1205w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption>クリックすると拡大されます</figcaption></figure></div>



<p class="wp-block-paragraph">審査に1営業日以上かかるらしいので終わるのを待ちましょう</p>



<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1.png"><img decoding="async" width="300" height="155" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1-300x155.png" alt="" class="wp-image-564" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1-300x155.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1-1024x529.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1-150x77.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1-768x397.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-26_00h10_48-1.png 1262w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption>クリックすると拡大されます</figcaption></figure></div>



<h2 class="wp-block-heading">アカウントができたのでAPIキーを取得</h2>



<div class="wp-block-cocoon-blocks-info-box block-box primary-box">
<p class="wp-block-paragraph">審査完了の連絡は来ないので1日以上空けてログインを試してみる</p>
</div>



<p class="wp-block-paragraph">改めてログインページ</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50-1024x538.png" alt="" class="wp-image-572" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50-300x158.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h10_50.png 1352w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">ログインしたらまだApplication Keysが無いので取得する<br>「<strong>Enter Application Title</strong>」に好きなAPIセット名を入力すると「<strong><strong><strong>Sandbox</strong></strong></strong>」と「<strong>Production</strong>」の枠が出現する<br>「<strong><strong>Sandbox</strong></strong>」は「<strong>Create a Keyset</strong>」をクリックするだけで生成できるけど正直使い道はない</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11-1024x538.png" alt="" class="wp-image-576" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11-300x158.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h25_11.png 1443w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55-1024x538.png" alt="" class="wp-image-575" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55-300x158.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h22_55.png 1443w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">「<strong>Production</strong>」側の「<strong>Create a keyset</strong>」をクリックして出現してきたダイアログの各項目を入力して「<strong>Continue to Create Keys</strong>」をクリック</p>



<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h34_28.png"><img decoding="async" width="268" height="300" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h34_28-268x300.png" alt="" class="wp-image-577" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h34_28-268x300.png 268w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h34_28-134x150.png 134w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h34_28.png 616w" sizes="(max-width: 268px) 100vw, 268px" /></a></figure></div>



<p class="wp-block-paragraph">これでAPIキー作成完了！と思いきや枠だけ出現して無効化されてる状態・・・<br>有効化するために「<strong>marketplace deletion/account closure notification</strong>」をクリックして次の手順へ</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13-1024x538.png" alt="" class="wp-image-578" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13-300x158.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_20h41_13.png 1443w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">まずは通知先のメアド登録<br>ここはメアド登録して「<strong>Save</strong>」をクリックするだけの簡単なお仕事</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2-1024x538.png" alt="" class="wp-image-635" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2-300x158.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h05_57-2.png 1523w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">左下に登録ができたメッセージが表示されて入力部分が非活性・ボタンがEditボタンに</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1-1024x538.png" alt="" class="wp-image-639" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1-300x158.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-29_21h03_49-1.png 1523w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">次にエンドポイントのURLと検証用のトークンを入力するのですが、この準備がちょっと長くなるので別ページにまとめました</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-excelとvba、時々python wp-block-embed-excelとvba、時々python"><div class="wp-block-embed__wrapper">
https://javeo.jp/ebay_api_endpoint/
</div></figure>



<p class="wp-block-paragraph">作成した<strong>エンドポイントURL</strong>と<strong>Verification token</strong>を入力して<strong>Save</strong>をクリック</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3-1024x537.png" alt="" class="wp-image-638" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h15_56-3.png 1555w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">左下に登録ができたメッセージが表示されて入力部分が非活性・ボタンがEditボタンに</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2-1024x537.png" alt="" class="wp-image-637" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_07-2.png 1555w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">画面を戻すと「<strong>App ID／Dev ID／Cert ID</strong>」がそれぞれ取得できている</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-1024x537.png" alt="" class="wp-image-618" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25.png 1547w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">最後にトークンを取得</h2>



<p class="wp-block-paragraph">各キーが取得できて終わりと思いきやeBayのAPIの中にはさらに認証トークンが必要なものもあるのでそれも取得しておく</p>



<p class="wp-block-paragraph">先ほどの画面から「<strong>User Tokens</strong>」をクリック</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2-1024x537.png" alt="" class="wp-image-620" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h16_25-2.png 1547w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">左下の「<strong>Sign in to Production</strong>」をクリック</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49.png"><img decoding="async" width="1024" height="538" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49-1024x538.png" alt="" class="wp-image-621" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49-1024x538.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h46_49.png 1524w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<div class="wp-block-cocoon-blocks-sticky-box blank-box block-box sticky">
<p class="wp-block-paragraph">ココから先は手順があいまいなので了承を・・・（いつか確認して修正したい）</p>
</div>



<p class="wp-block-paragraph">アカウント情報に不足があると登録を求められるので登録する</p>



<div class="wp-block-image"><figure class="aligncenter size-medium"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18.png"><img decoding="async" width="185" height="300" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18-185x300.png" alt="" class="wp-image-622" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18-185x300.png 185w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18-631x1024.png 631w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18-92x150.png 92w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18-768x1246.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18-947x1536.png 947w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_00h18_18.png 1080w" sizes="(max-width: 185px) 100vw, 185px" /></a></figure></div>



<p class="wp-block-paragraph">続いてeBayのアカウント（Developers ProgramじゃなくてECサイトのeBayの方っぽい）でサインイン</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19-1024x537.png" alt="" class="wp-image-623" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h58_19.png 1547w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">私は持ってなかったので新規登録</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05-1024x537.png" alt="" class="wp-image-624" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_16h34_05.png 1547w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">同意を求められるので同意</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10.png"><img decoding="async" width="1024" height="537" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10-1024x537.png" alt="" class="wp-image-625" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10-1024x537.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10-300x157.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10-150x79.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10-768x403.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10-1536x806.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_15h59_10.png 1547w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">画面が戻ってきて完了メッセージとともに有効期限と認証トークンが表示されている</p>



<figure class="wp-block-image size-large"><a href="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1.png"><img decoding="async" width="1024" height="517" src="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1-1024x517.png" alt="" class="wp-image-627" srcset="https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1-1024x517.png 1024w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1-300x151.png 300w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1-150x76.png 150w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1-768x388.png 768w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1-1536x775.png 1536w, https://javeo.jp/wp-content/uploads/2022/04/2022-04-30_06h46_36-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">あとがき</h2>



<p class="wp-block-paragraph">長い！そして全部英語のページは学のない私には正直辛かった・・・</p>



<p class="wp-block-paragraph">取得は無料なんだけどサーバー準備しないといけないので実質有料だったり、最初の承認に1営業日以上必要だったりとなかなかスムーズにいかない部分があるのはマイナスポイント</p>
]]></content:encoded>
					
					<wfw:commentRss>https://javeo.jp/ebay-api-request/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
