<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>その他 | みんたく</title>
	<atom:link href="https://mintaku-blog.net/category/develop/others/feed/" rel="self" type="application/rss+xml" />
	<link>https://mintaku-blog.net</link>
	<description>みんたくの技術ブログ</description>
	<lastBuildDate>Tue, 20 May 2025 09:19:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.11</generator>

<image>
	<url>https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2018/06/cropped-ipad-820272_640.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>その他 | みんたく</title>
	<link>https://mintaku-blog.net</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">144480658</site>	<item>
		<title>Model Context Protocol (MCP) を理解してみる</title>
		<link>https://mintaku-blog.net/about-mcp/</link>
					<comments>https://mintaku-blog.net/about-mcp/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Tue, 20 May 2025 09:18:23 +0000</pubDate>
				<category><![CDATA[まとめ系]]></category>
		<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=2610</guid>

					<description><![CDATA[<p>最近よく聞くMCPについてよくわかっていないので、どんなものなのか理解するために整理してみました。 MCPって何？ Model Context Protoc …</p>
The post <a href="https://mintaku-blog.net/about-mcp/">Model Context Protocol (MCP) を理解してみる</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>最近よく聞くMCPについてよくわかっていないので、どんなものなのか理解するために整理してみました。</p>
<h2>MCPって何？</h2>
<p>Model Context Protocol（MCP）は、簡単に言うとAIモデルと外部ツールが連携するときの標準的なルールを定めたものです。</p>
<p>今まで、GPTやClaude等のAIモデルにWebスクレイピングやデータベース操作などの機能を追加しようとすると、それぞれ独自の方法で実装する必要がありましたが、MCPはこの問題を解決します。</p>
<p>要するにAIと外部ツールが話し合うための「共通言語」のようなものだと思います。</p>
<p>今まで、AIに「Webで検索して」とか「データベースから情報を取得して」とお願いするとき、それぞれ別々の方法で実装する必要がありましたが、MCPであれば一度覚えた方法でいろんなツールとAIを連携させることができるようになります。</p>
<h2>技術的にはどういう仕組みなのか</h2>
<p>MCPは、WebSocketやgRPCなどの通信プロトコルの上で動く、メッセージベースのシステムのようです。JSON形式でメッセージをやり取りして、AIとツールが情報を交換します。</p>
<p>特に重要だと思うのは「コンテキスト」の管理です。普通のAPIだと、一回一回のリクエストは独立していますが、MCPでは会話の流れやこれまでの処理結果を適切に管理してくれるようです。</p>
<p>これにより、AIが複数のツールを連続して使ったり、前回の結果を踏まえて次の行動を決めたりすることができるのではないでしょうか。</p>
<h2>実際の開発現場でどう使えそうか</h2>
<p>現在のAI開発で困っていることを考えると、MCPの恩恵は大きそうです。</p>
<h3>チャットボット開発での活用</h3>
<p>例えば、顧客サポートのチャットボットを作る場合</p>
<ul>
<li>CRMシステムから顧客情報を取得</li>
<li>注文履歴をデータベースから検索</li>
<li>在庫確認システムで商品状況をチェック</li>
<li>メール送信システムで返答を送信</li>
</ul>
<p>これらを全て統一的な方法で連携できれば、開発がかなり楽になります。</p>
<h3>開発者向けAIアシスタント</h3>
<p>コーディング支援AIの場合</p>
<ul>
<li>GitHubから最新のコードを取得</li>
<li>静的解析ツールでコード品質をチェック</li>
<li>テスト実行環境でコードを実行</li>
<li>ドキュメントを自動生成</li>
</ul>
<p>これらのツールを組み合わせたワークフローが、MCPで簡潔に記述できるかもしれません。</p>
<h2>実装の難しさと課題</h2>
<p>MCPを実際に使う際の課題もあるかと思います。</p>
<h3>学習コスト</h3>
<p>新しいプロトコルを覚える必要があります。特に、コンテキスト管理やメッセージ形式など、従来のAPI開発とは異なる概念を理解する必要があります。</p>
<h3>デバッグの困難さ</h3>
<p>AIとツールの連携が複雑になると、どこで問題が発生しているかを特定するのが難しくなりそうです。適切なログ機能やデバッグツールが重要になるでしょう。</p>
<h3>パフォーマンスの懸念</h3>
<p>抽象化レイヤーが増えることで、多少のオーバーヘッドは必要になりそうです。高負荷なシステムでは、この影響を考慮する必要がありそうです。</p>
<h2>まとめ</h2>
<p>Model Context Protocolは、AI開発における「配管工事」の部分を大幅に簡略化してくれそうです。標準化により、AI開発者はより創造的で付加価値の高い部分に時間を使えるようになるでしょう。</p>
<p>まだ新しい技術なので、全てが確定しているわけではありませんが、AI開発に携わる者として注目していくべき技術だと思います。</p>
<p>実際のプロジェクトで使えるレベルになるまでには、もう少し時間がかかるかもしれませんが、早めにキャッチアップしておけば、将来的に大きなアドバンテージを得られるかもしれないです。</p>The post <a href="https://mintaku-blog.net/about-mcp/">Model Context Protocol (MCP) を理解してみる</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/about-mcp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2610</post-id>	</item>
		<item>
		<title>ウォーターフォールプロジェクトにアジャイルを導入する</title>
		<link>https://mintaku-blog.net/agile-introduction/</link>
					<comments>https://mintaku-blog.net/agile-introduction/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Tue, 08 Apr 2025 05:52:12 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=2603</guid>

					<description><![CDATA[<p>最近、名目上はアジャイル開発を採用しているものの、実態はウォーターフォールに近い進め方をしている新規プロジェクトに参加することになりました。 チームの一員と …</p>
The post <a href="https://mintaku-blog.net/agile-introduction/">ウォーターフォールプロジェクトにアジャイルを導入する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>最近、名目上はアジャイル開発を採用しているものの、実態はウォーターフォールに近い進め方をしている新規プロジェクトに参加することになりました。</p>
<p>チームの一員として関わる中で、このギャップが将来的な問題につながる可能性を感じ、アジャイル開発手法への段階的な移行を内部で提案してみた内容をまとめました。</p>
<h2>課題感</h2>
<p>新しいプロジェクトに参加してすぐに感じたのは、以下のような課題でした。</p>
<p>1. 曖昧なタスク定義: 作業内容がざっくりと定義されているため、正確な工数見積もりができない<br />
2. 頻繁な要件変更: 週次ミーティングでクライアントから次々と新しい要望が出てくる<br />
3. 優先順位の不明確さ: 何を先に実装すべきかの基準がない<br />
4. プロジェクト全体の見通しの不透明さ: 「いつまでに何ができるのか」がわからない</p>
<p>これらは「ウォーターフォール的アジャイル」とも呼べる状況の典型的な特徴です。</p>
<p>名目上はアジャイルを採用しているものの、実態はウォーターフォールに近い進め方をしており、アジャイルの利点を十分に活かせていない状態でした。</p>
<h2>予想されるリスク</h2>
<p>このまま進めた場合、以下のようなリスクが予想されました。</p>
<p>1. スケジュール管理の難しさ</p>
<p>タスクが明確に定義されていないため、今後の工数見積もりが困難になり、納期に間に合わない恐れがあります。</p>
<p>2. 要件変更への対応の限界</p>
<p>週次定例でクライアントから新たな要望や改善点が出され続け、それらを既存の計画にどう組み込むかの仕組みがないため、混乱が生じる可能性があります。</p>
<p>3. チームの疲弊</p>
<p>優先度が明確でないまま、次々と要件が追加されると、チームは常に「潜在的な納期遅れ」のプレッシャーにさらされ、疲弊してしまいます。</p>
<p>4. プロジェクトの失敗リスク</p>
<p>このままあいまいな状態で進めると、納期や品質に影響が出る可能性が高くなります。</p>
<h2>アジャイル開発手法の導入プラン</h2>
<p>これらの課題を解決するため、以下のようなアジャイル開発導入計画を立てました。</p>
<p>1. カンバンボードの実装</p>
<ul>
<li>タスクの可視化を進め、「今何が進行中で、何が待機中か」を明確にする</li>
<li>ボトルネックを早期に発見できるようにする</li>
</ul>
<p>2. ユーザーストーリーの整備</p>
<ul>
<li>曖昧な要件を明確なユーザーストーリーとして再定義する</li>
<li>各ストーリーにポイント（難易度・工数の指標）を付与し、定量的な管理を可能にする</li>
</ul>
<p>3. スプリント計画の導入</p>
<ul>
<li>チームの消化可能なポイント数（ベロシティ）を把握し、現実的な計画を立てる</li>
<li>2週間単位のスプリントを設定し、その期間内で達成可能な目標を設定する</li>
</ul>
<h2>期待される効果</h2>
<p>アジャイル開発を正しく導入することで、以下のような効果が期待できます。</p>
<p>1. クライアントとのコミュニケーション改善</p>
<ul>
<li>「今週は○○ポイントまで消化可能であり、これらの機能を実装できます」と具体的に説明できるようになる</li>
<li>追加要望があった場合、「この要望を優先すると、他のこの機能は次スプリントに持ち越しになります」と明確に提示できる</li>
<li>プロジェクトの状況が「見える化」されることで、より焦点を絞った建設的な対話が可能になる</li>
</ul>
<p>2. プロジェクト管理の透明性向上</p>
<ul>
<li>進捗状況が可視化され、問題の早期発見が可能になる</li>
<li>変更による影響範囲を定量的に評価できるようになる</li>
</ul>
<p>3. チームの持続可能な開発ペース確立</p>
<ul>
<li>達成可能な目標設定により、チームは無理なく効率的に開発を進められる</li>
<li>過剰な負荷を防止し、品質を維持できる</li>
</ul>
<p>4. リスクの低減と早期対応</p>
<ul>
<li>技術的な課題や実現可能性の問題を早期に発見できるため、プロジェクト後半での大きな問題発生を防止できる</li>
<li>問題が発生しても影響範囲が限定的で、素早い対応が可能になる</li>
</ul>
<h2>クライアントとの共有ポイント</h2>
<p>アジャイル開発への移行を成功させるためには、クライアントの理解と協力が不可欠です。以下の点をクライアントと早期に共有することにしました。</p>
<p>1. 優先度の明確化</p>
<ul>
<li>機能の優先順位を一緒に決定することの重要性を説明する</li>
<li>「すべてが最優先」は不可能であり、限られたリソースで最大の価値を生み出すための選択が必要であることを理解してもらう</li>
</ul>
<p>2. 変更管理プロセスの確立</p>
<ul>
<li>新たな要望はプロダクトバックログに追加し、優先度に応じて取り込むプロセスを確立する</li>
<li>変更が及ぼす影響を可視化し、適切な意思決定を促す</li>
</ul>
<p>3. 定例会議の活用方法</p>
<ul>
<li>スプリントレビューでは、完成した機能のデモを行い、フィードバックを得る</li>
<li>スプリント計画では、次のスプリントで取り組む内容を明確にする</li>
</ul>
<p>4. 追加要望と工数の関係</p>
<ul>
<li>追加要望には追加の工数が必要であり、既存タスクとの優先度調整が必要なことを理解してもらう</li>
<li>「スコープ・時間・品質」のトレードオフ関係を明確に伝える</li>
</ul>
<h2>実施に向けた具体的なステップ</h2>
<p>アジャイル移行の第一歩として、以下のようなステップで進める計画を立てました。</p>
<p>1. 現状のプロジェクト要件をユーザーストーリーとして整理</p>
<ul>
<li>既存の要件をユーザーストーリー形式に書き換える</li>
<li>各ストーリーにポイントを割り当てる</li>
</ul>
<p>2. プロダクトバックログの作成</p>
<ul>
<li>すべてのユーザーストーリーを優先順位順に並べたバックログを作成する</li>
<li>クライアントと一緒にレビューし、優先順位を合意する</li>
</ul>
<p>3. 初回スプリント計画</p>
<ul>
<li>2週間のスプリントで取り組むストーリーを選定する</li>
<li>チームのベロシティを保守的に見積もり、無理のない計画を立てる</li>
</ul>
<p>4. カンバンボードの運用開始</p>
<ul>
<li>Notion等のツールを活用し、タスクの進捗を可視化する</li>
<li>日次のスタンドアップミーティングを短時間で実施し、進捗を共有する</li>
</ul>
<p>5. 定例での振り返りと改善</p>
<ul>
<li>スプリントごとに振り返りを行い、プロセスの改善点を見つける</li>
<li>実績ベロシティを計測し、次回スプリントの計画に反映する</li>
</ul>
<h2>まとめ</h2>
<p>アジャイル開発への移行は一朝一夕にはいきません。特に「アジャイルと言いながらウォーターフォール」の状態からの脱却は、チームだけでなくクライアントの考え方の変化も必要とします。</p>
<p>重要なのは、すべてを一度に変えようとするのではなく、小さな成功体験を積み重ねていくことです。</p>
<p>今回のケースでは、まずはユーザーストーリーの整備とカンバンボードの導入から始め、チームとクライアントの双方に「見える化」のメリットを実感してもらうことから始めました。</p>
<p>アジャイル開発の本質は、不確実性を前提とした上で、効率的にプロジェクトを進めていく柔軟性にあると思います。プロジェクトの成功確率を高め、クライアントとの良好な関係構築にもつながると考えています。</p>The post <a href="https://mintaku-blog.net/agile-introduction/">ウォーターフォールプロジェクトにアジャイルを導入する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/agile-introduction/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2603</post-id>	</item>
		<item>
		<title>AWS ECS Execを使用したコンテナへの直接アクセス方法</title>
		<link>https://mintaku-blog.net/aws-ecs-exec/</link>
					<comments>https://mintaku-blog.net/aws-ecs-exec/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Thu, 26 Dec 2024 00:12:53 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=2557</guid>

					<description><![CDATA[<p>AWS ECS（Elastic Container Service）でコンテナを運用している場合、デバッグやトラブルシューティングのためにコンテナ内部にアク …</p>
The post <a href="https://mintaku-blog.net/aws-ecs-exec/">AWS ECS Execを使用したコンテナへの直接アクセス方法</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>AWS ECS（Elastic Container Service）でコンテナを運用している場合、デバッグやトラブルシューティングのためにコンテナ内部にアクセスする必要が出てきます。</p>
<p>ECS Execを使用してコンテナに直接アクセスする方法を解説します。</p>
<h2>ECS Execとは</h2>
<p>ECS Execは、AWS ECSの実行中のコンテナに直接SSHのような形でアクセスできる機能です。この機能により、以下のようなことが可能になります。</p>
<ul>
<li>コンテナ内でのコマンド実行</li>
<li>ログファイルの直接確認</li>
<li>プロセスの状態確認</li>
<li>ファイルシステムの調査</li>
</ul>
<h2>前提条件</h2>
<ul>
<li>AWS CLIがインストールされていること</li>
<li>AWSプロファイルが設定されていること</li>
<li>対象のECSタスクでECS Execが有効になっていること</li>
<li>適切なIAM権限が付与されていること</li>
</ul>
<p>&nbsp;</p>
<h2>手順</h2>
<h3>1. AWS認証情報の設定</h3>
<p>開発環境用のプロファイルを設定します：</p><pre class="crayon-plain-tag">$ export AWS_PROFILE=${profile}</pre><p></p>
<h3>2. 必要な情報の確認</h3>
<p>ECS Execを使用するために必要な情報は以下の3つです：</p>
<ol>
<li>クラスター名</li>
<li>タスクID</li>
<li>コンテナ名</li>
</ol>
<p>これらの情報は、AWS Management ConsoleのECSダッシュボードから確認できます。</p><pre class="crayon-plain-tag">https://ap-northeast-1.console.aws.amazon.com/ecs/v2/clusters/[クラスター名]/services</pre><p>&nbsp;</p>
<h3>3. ECS Execの実行</h3>
<p>以下のコマンドを使用してコンテナにアクセスします：</p><pre class="crayon-plain-tag">aws ecs execute-command \
--region ap-northeast-1 \
--cluster [クラスター名] \
--task [タスクID] \
--container [コンテナ名] \
--interactive \
--command "/bin/sh"</pre><p>&nbsp;</p>
<h3>4. シェルの変更</h3>
<p>コンテナに接続後、より使いやすいbashシェルに切り替えます。</p><pre class="crayon-plain-tag">bash</pre><p>&nbsp;</p>
<h2>接続エラーが発生する場合</h2>
<p></p><pre class="crayon-plain-tag">An error occurred (InvalidParameterException) when calling the ExecuteCommand operation:
The execute command failed because execute command was not enabled on the task.</pre><p></p>
<ul>
<li>タスク定義でECS Execが有効になっているか確認</li>
<li>IAM権限が適切に設定されているか確認</li>
</ul>The post <a href="https://mintaku-blog.net/aws-ecs-exec/">AWS ECS Execを使用したコンテナへの直接アクセス方法</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/aws-ecs-exec/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2557</post-id>	</item>
		<item>
		<title>ストレージの容量や使用率が圧迫してきたら対応すること</title>
		<link>https://mintaku-blog.net/enough-freee-space/</link>
					<comments>https://mintaku-blog.net/enough-freee-space/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Mon, 25 Nov 2024 08:00:00 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=2553</guid>

					<description><![CDATA[<p>パーティションの不要なデータを削除して空き容量を確保する必要がある場合の対応策をまとめました。 容量を消費している主な原因 システムログの肥大化 システムや …</p>
The post <a href="https://mintaku-blog.net/enough-freee-space/">ストレージの容量や使用率が圧迫してきたら対応すること</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>パーティションの不要なデータを削除して空き容量を確保する必要がある場合の対応策をまとめました。</p>
<h2>容量を消費している主な原因</h2>
<h3>システムログの肥大化</h3>
<p>システムやアプリケーションのログが /var/log に蓄積されている可能性があります。</p>
<h3>一時ファイルの増加</h3>
<p>• /tmpや/var/tmp に古い一時ファイルが溜まっている<br />
• パッケージ管理ツール（例: apt）のキャッシュが大きくなっている</p>
<h3>不要なソフトウェアや古いカーネル</h3>
<p>• 古いカーネルや未使用のソフトウェアが残っている</p>
<h3>ユーザーファイル</h3>
<p>• ホームディレクトリ (/home) にある大きなファイル（動画、ISOイメージなど）が原因の可能性</p>
<h2>不要なファイルの確認を確認する</h2>
<h3>大きなファイルを特定する</h3>
<p>以下のコマンドで、大きなファイルやディレクトリを特定できます：</p><pre class="crayon-plain-tag">du -ahx / | sort -rh | head -n 20</pre><p>• -a: ファイルとディレクトリ両方を表示<br />
• -h: サイズを人間が読みやすい形式で表示<br />
• -x: 他のマウントポイントを除外<br />
• sort -rh: サイズ順に降順でソート</p>
<h3>ログファイルをチェック</h3>
<p>ログファイルが増大している可能性があります。以下を実行して確認：</p><pre class="crayon-plain-tag">du -sh /var/log/*</pre><p>大きなログファイルがあれば、内容を確認してから削除または圧縮します：</p><pre class="crayon-plain-tag">sudo truncate -s 0 /var/log/large-log-file.log</pre><p></p>
<h2>パッケージキャッシュのクリア</h2>
<h3>不要なパッケージを削除</h3>
<p>以下のコマンドで古いパッケージを削除します：</p><pre class="crayon-plain-tag">sudo apt autoremove</pre><p></p>
<h3>キャッシュのクリア</h3>
<p>パッケージ管理ツールのキャッシュを削除：</p><pre class="crayon-plain-tag">sudo apt clean</pre><p></p>
<h3>一時ファイルの削除</h3>
<p>以下で一時ファイルを削除します：</p><pre class="crayon-plain-tag">sudo rm -rf /tmp/*</pre><p>また、/var/tmp もチェックしてください。</p>
<h3>不要なカーネルの削除</h3>
<p>古いカーネルが残っている場合、それを削除できます：</p><pre class="crayon-plain-tag">sudo dpkg --list | grep linux-image
sudo apt remove --purge linux-image-&lt;古いバージョン&gt;
</pre><p></p>
<h2>容量不足を根本的に解決するには？</h2>
<ul>
<li>パーティションの拡張：ディスク容量を追加するか、他のパーティションをマウントして負荷を分散します。</li>
<li>外部ストレージの利用：外付けドライブやクラウドストレージを利用してデータを移動。</li>
<li>定期的な監視：ディスク容量を監視し、定期的に不要なファイルを削除するスクリプトを作成すると便利です。</li>
</ul>The post <a href="https://mintaku-blog.net/enough-freee-space/">ストレージの容量や使用率が圧迫してきたら対応すること</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/enough-freee-space/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2553</post-id>	</item>
		<item>
		<title>個人開発で導入するのにおすすめの監視ツール</title>
		<link>https://mintaku-blog.net/monitoring-tools/</link>
					<comments>https://mintaku-blog.net/monitoring-tools/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Sun, 20 Oct 2024 23:34:51 +0000</pubDate>
				<category><![CDATA[個人開発]]></category>
		<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=2537</guid>

					<description><![CDATA[<p>個人開発プロジェクトにおいて、監視ツールの導入はサービスの信頼性とユーザーエクスペリエンスを向上させるためにも導入しておくに越したことはないかと思います。  …</p>
The post <a href="https://mintaku-blog.net/monitoring-tools/">個人開発で導入するのにおすすめの監視ツール</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>個人開発プロジェクトにおいて、監視ツールの導入はサービスの信頼性とユーザーエクスペリエンスを向上させるためにも導入しておくに越したことはないかと思います。</p>
<p>適切な監視ツールを選ぶことで、システムの稼働状況をリアルタイムで把握し、問題が発生した際に迅速に対応することが可能になります。</p>
<p>本記事では、個人開発者にとって導入が簡単で、無料で利用できる監視ツールを3つ紹介し、その選び方や実際の使用感について紹介します。</p>
<h2>個人開発で導入する監視ツールの選び方</h2>
<p>個人開発で導入する監視ツールを選ぶ際のポイントは、まず簡単に導入できることがポイントかなと思います。</p>
<p>開発リソースを効率的に活用するため、設定が直感的で短時間で完了するツールが理想的です。</p>
<p>また、無料プランが利用可能なツールを選ぶことで、コストを抑えつつ必要な監視機能を確保できます。</p>
<p>具体的な監視ニーズに応じて、稼働状況やエラーをリアルタイムで監視できるツールや、ウェブサイトのパフォーマンスを監視できるツールを選ぶのもありだと思います。</p>
<p>&nbsp;</p>
<h2>個人開発で導入するのにおすすめの監視ツール3選</h2>
<h3>1. UptimeRobot</h3>
<p><img data-attachment-id="2543" data-permalink="https://mintaku-blog.net/monitoring-tools/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2024-10-21-8-27-06/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?fit=2560%2C1327&amp;ssl=1" data-orig-size="2560,1327" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2024-10-21 8.27.06" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?fit=300%2C156&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?fit=800%2C415&amp;ssl=1" loading="lazy" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304.jpg?resize=300%2C156&#038;ssl=1" alt="" width="300" height="156" class="alignnone size-medium wp-image-2543" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?resize=300%2C156&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?resize=1024%2C531&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?resize=768%2C398&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?resize=1536%2C796&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?resize=2048%2C1062&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/daeb48c658d3690e7e3deb8f2ea7d304-scaled.jpg?w=2400&amp;ssl=1 2400w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p>
<h4>特徴</h4>
<p>ウェブサイトやサービスの稼働状況を監視し、ダウンタイムが発生するとアラートを送信します。</p>
<p>UptimeRobotは、HTTP(S)、Ping、ポート、キーワードのモニタリングをサポートしており、幅広い監視ニーズに対応しています。</p>
<h4>利点</h4>
<p>設定が非常に簡単で、初心者でも短時間で監視を開始できます。アラートはメール、SMS、Slackなどで受け取ることができ、即座に問題を把握できます。</p>
<p>さらに、ダッシュボードが直感的で見やすいため、監視結果を迅速に確認できます。</p>
<h4>無料プラン</h4>
<p>無料プランでは、50のモニタリング対象を5分間隔で監視可能です。</p>
<p>個人開発プロジェクトには十分な範囲で利用でき、基本的な監視機能をカバーしています。</p>
<p>公式サイト:</p>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/uptimerobot.com/assets/images/ogimage.png?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://uptimerobot.com/">UptimeRobot: Free Website Monitoring Service</a>
			</p>
							<div class="ys-blog-card__dscr">
					Start monitoring in 30 seconds. Use adva&hellip;				</div>
										<div class="ys-blog-card__domain">uptimerobot.com</div>
					</div>
	</div>
</div>

<p>&nbsp;</p>
<h3>2. Sentry</h3>
<p><img data-attachment-id="2544" data-permalink="https://mintaku-blog.net/monitoring-tools/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2024-10-21-8-26-49/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?fit=2560%2C1029&amp;ssl=1" data-orig-size="2560,1029" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2024-10-21 8.26.49" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?fit=300%2C121&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?fit=800%2C321&amp;ssl=1" loading="lazy" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18.jpg?resize=300%2C121&#038;ssl=1" alt="" width="300" height="121" class="alignnone size-medium wp-image-2544" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?resize=300%2C121&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?resize=1024%2C411&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?resize=768%2C309&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?resize=1536%2C617&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?resize=2048%2C823&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ce42469337cd2ed5b9ece6c810517c18-scaled.jpg?w=2400&amp;ssl=1 2400w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p>
<h4>特徴</h4>
<p>アプリケーションのエラートラッキングとパフォーマンスモニタリングを提供します。</p>
<p>エラーの発生場所、頻度、影響範囲をリアルタイムで把握でき、パフォーマンスの問題を素早く特定します。</p>
<p>多くのプログラミング言語やフレームワークに対応しており、幅広い開発環境で利用可能です。</p>
<h4>利点</h4>
<p>エラーをリアルタイムで検出し、詳細なスタックトレースとコンテキスト情報を提供するため、問題の原因を迅速に特定できます。</p>
<p>開発者フレンドリーなインターフェースを持ち、エラーの管理が簡単です。また、Sentryはパフォーマンスモニタリング機能も備えており、アプリケーションの応答時間やトランザクションの速度を詳細に分析できます。</p>
<h4>無料プラン</h4>
<p>一定のエラー数まで無料で利用可能で、小規模なプロジェクトや個人開発に最適です。</p>
<p>公式サイト:</p>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/images.ctfassets.net/em6l9zw4tzag/2QpkRfXBKS60Cq50REtPDL/95208c9546303aed0e6630fd63227a0a/home-hero-meta.webp?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://sentry.io/welcome/">Application Performance Monitoring &amp; Error Tracking Software</a>
			</p>
							<div class="ys-blog-card__dscr">
					Application performance monitoring for d&hellip;				</div>
										<div class="ys-blog-card__domain">sentry.io</div>
					</div>
	</div>
</div>

<p>&nbsp;</p>
<h3>3. StatusCake</h3>
<p><img data-attachment-id="2545" data-permalink="https://mintaku-blog.net/monitoring-tools/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2024-10-21-8-26-33/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?fit=2560%2C1318&amp;ssl=1" data-orig-size="2560,1318" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2024-10-21 8.26.33" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?fit=300%2C154&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?fit=800%2C412&amp;ssl=1" loading="lazy" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01.jpg?resize=300%2C154&#038;ssl=1" alt="" width="300" height="154" class="alignnone size-medium wp-image-2545" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?resize=300%2C154&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?resize=1024%2C527&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?resize=768%2C395&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?resize=1536%2C791&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?resize=2048%2C1055&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/ddc19b0f9d3b7b9cada80659515acd01-scaled.jpg?w=2400&amp;ssl=1 2400w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p>
<h4>特徴</h4>
<p>ウェブサイトの稼働監視、SSL監視、ページ速度監視などを提供します。</p>
<p>監視対象はHTTP(S)やPing、TCPポートの他に、特定のキーワードの存在やレスポンスタイムもチェック可能です。</p>
<h4>利点</h4>
<p>設定が非常に簡単で、数分で監視を開始できます。アラート機能が豊富で、メール、SMS、電話、Slackなど様々な方法で通知を受け取ることができます。</p>
<p>世界中のロケーションからの監視が可能で、ユーザーの実際の使用感を反映した監視が行えます。また、詳細なレポート機能があり、稼働状況やパフォーマンスの変化を分析しやすくなっています。</p>
<h4>無料プラン</h4>
<p>基本的な監視機能を提供し、個人プロジェクトや小規模なサイトに十分対応できます。</p>
<p>無料プランでも主要な監視機能を利用でき、初期コストを抑えつつ監視を行うことができます。</p>
<p>公式サイト:</p>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/www.statuscake.com/wp-content/uploads/2024/07/cs-og-img.png?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://www.statuscake.com/">StatusCake - Uptime monitoring, Page speed monitoring, and more</a>
			</p>
							<div class="ys-blog-card__dscr">
					Website Monitoring solution that drives &hellip;				</div>
										<div class="ys-blog-card__domain">www.statuscake.com</div>
					</div>
	</div>
</div>

<h2>実際にStatusCakeを導入してみた</h2>
<p>今回、いくつかの監視ツールを触ってみて、StatusCakeが一番サクッと設定ができたのでこちらを導入しました。</p>
<p>複雑な設定や知識が不要で、数分で監視を開始できました。</p>
<p>ウェブサイトの稼働監視では世界中のサーバからのチェックが可能で、サービスのグローバルな可用性を確認できます。</p>
<p>メール、SMS、Slackなど多様な方法でアラートを受け取ることができ、問題発生時に迅速に対応できそうです。</p>
<p>また、無料プランの提供もあり、個人開発者にとってコストは重要な要素であり、StatusCakeは無料で基本的な監視機能を利用できるため、予算を気にすることなく導入できます。</p>
<p>無料プランでも10のモニタリング対象を5分間隔で監視できるため、一般的な個人開発のプロジェクトでは十分に対応できそうです。</p>
<p>通知を設定し、実際に監視対象のページが落ちると以下のようなメールが届きます。</p>
<p><img data-attachment-id="2546" data-permalink="https://mintaku-blog.net/monitoring-tools/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2024-10-21-8-26-05/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?fit=1838%2C1590&amp;ssl=1" data-orig-size="1838,1590" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2024-10-21 8.26.05" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?fit=300%2C260&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?fit=800%2C692&amp;ssl=1" loading="lazy" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?resize=300%2C260&#038;ssl=1" alt="" width="300" height="260" class="alignnone size-medium wp-image-2546" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?resize=300%2C260&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?resize=1024%2C886&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?resize=768%2C664&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?resize=1536%2C1329&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?w=1838&amp;ssl=1 1838w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2024/10/e1eff1a27c1c0b798ea85e681fb6595a.jpg?w=1600&amp;ssl=1 1600w" sizes="(max-width: 300px) 100vw, 300px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<h2>おわりに</h2>
<p>今回紹介した3つの監視ツールは、いずれも設定が簡単で、個人開発者にとって扱いやすいものかと思います。</p>
<p>特にStatusCakeは、簡単なセットアップと多機能な監視オプションで優れたパフォーマンスを発揮します。</p>
<p>無料プランを利用することで、初期コストを抑えつつ、効果的な監視を行うことができますので、ぜひこれらのツールを活用してみてください！</p>The post <a href="https://mintaku-blog.net/monitoring-tools/">個人開発で導入するのにおすすめの監視ツール</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/monitoring-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2537</post-id>	</item>
		<item>
		<title>Flutterの開発環境をMacOSで構築する</title>
		<link>https://mintaku-blog.net/flutter-mac/</link>
					<comments>https://mintaku-blog.net/flutter-mac/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Fri, 05 Mar 2021 00:28:10 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=1860</guid>

					<description><![CDATA[<p>MacでFlutterの開発環境を構築する方法をメモしておきます。 Flutterをインストール 公式サイトからmacOS用のFlutter(flutter …</p>
The post <a href="https://mintaku-blog.net/flutter-mac/">Flutterの開発環境をMacOSで構築する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>MacでFlutterの開発環境を構築する方法をメモしておきます。</p>
<h2>Flutterをインストール</h2>
<p>公式サイトからmacOS用のFlutter(flutter_macos_x.xx.x-stable.zip)をダウンロードします。</p>
<p>ダウンロードしたzipファイルを解凍して、任意のディレクトリに配置します。</p>
<div class="ys-blog-card__text-link"><a href="https://flutter.dev/docs/get-started/install/macos" >https://flutter.dev/docs/get-started/install/macos</a></div>
<p>&nbsp;</p>
<h2>パスを通す</h2>
<p>解凍したフォルダを配置したらパスを通していきます。bashの場合は以下のコマンドでパスを通し反映させます。</p><pre class="crayon-plain-tag">$ echo 'export PATH="$PATH:[解凍したフォルダを配置したパス]/flutter/bin"' &gt;&gt; ~/.bash_profile</pre><p></p><pre class="crayon-plain-tag">$ source ~/.bash_profile</pre><p>&nbsp;</p>
<h2>flutter doctorで必要なものを確認する</h2>
<p>以下のコマンドを実行することで、Flutterの実行環境で必要なものがわかります。</p><pre class="crayon-plain-tag">$ flutter doctor</pre><p>&nbsp;</p>
<p>現時点ではFlutterのみインストールしているため、他に必要なものはまだインストールされていないことがわかります。</p><pre class="crayon-plain-tag">[✓] Flutter (Channel stable, 1.22.6, on Mac OS X 10.15.2 19C57 darwin-x64, locale ja-JP)
[✗] Android toolchain - develop for Android devices
✗ Unable to locate Android SDK.
Install Android Studio from: https://developer.android.com/studio/index.html
On first launch it will assist you in installing the Android SDK components.
(or visit https://flutter.dev/docs/get-started/install/macos#android-setup for detailed instructions).
If the Android SDK has been installed to a custom location, set ANDROID_SDK_ROOT to that location.
You may also want to add it to your PATH environment variable.

[✗] Xcode - develop for iOS and macOS
✗ Xcode installation is incomplete; a full installation is necessary for iOS development.
Download at: https://developer.apple.com/xcode/download/
Or install Xcode via the App Store.
Once installed, run:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
✗ CocoaPods not installed.
CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
Without CocoaPods, plugins will not work on iOS or macOS.
For more info, see https://flutter.dev/platform-plugins
To install:
sudo gem install cocoapods
[!] Android Studio (not installed)
[!] Connected device
! No devices available

! Doctor found issues in 4 categories.</pre><p>&nbsp;</p>
<h2>Android Studioをインストールする</h2>
<p>公式サイトよりmacOS用のAndroid Studioをダウンロードして、インストールします。</p>
<p>Welcome to Android Studioの画面が出れば完了です。</p>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/developer.android.com/static/images/social/android-developers.png?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://developer.android.com/studio/index.html">Download Android Studio &amp; App Tools - Android Developers</a>
			</p>
							<div class="ys-blog-card__dscr">
					Android Studio provides app builders wit&hellip;				</div>
										<div class="ys-blog-card__domain">developer.android.com</div>
					</div>
	</div>
</div>

<p>&nbsp;</p>
<h2>Android StudioにFlutter、Dartのプラグインをインストール</h2>
<p>Android Studioの起動画面からConfigure→Pluginsを選択します。すると以下のPluginsの画面が表示されるので、検索ボックスから「Flutter」と入力し、インストールします。</p>
<p>Flutterをインストールすることで同時にDartもインストールできます。</p>
<p><img data-attachment-id="1865" data-permalink="https://mintaku-blog.net/flutter-mac/image4-3/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?fit=1594%2C1404&amp;ssl=1" data-orig-size="1594,1404" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image4" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?fit=300%2C264&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?fit=800%2C705&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1865" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?resize=800%2C705&#038;ssl=1" alt="" width="800" height="705" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?resize=1024%2C902&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?resize=300%2C264&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?resize=768%2C676&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?resize=1536%2C1353&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image4.png?w=1594&amp;ssl=1 1594w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<h2>デバイスのエミュレーターをダウンロードする</h2>
<p>エミュレーターをダウンロードしていきます。</p>
<p>まず起動画面から「Create New Flutter Project」を選択します。</p>
<p><img data-attachment-id="1873" data-permalink="https://mintaku-blog.net/flutter-mac/image12/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?fit=1546%2C970&amp;ssl=1" data-orig-size="1546,970" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image12" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?fit=300%2C188&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?fit=800%2C502&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1873" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?resize=800%2C502&#038;ssl=1" alt="" width="800" height="502" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?resize=1024%2C642&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?resize=300%2C188&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?resize=768%2C482&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?resize=1536%2C964&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image12.png?w=1546&amp;ssl=1 1546w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>「Flutter Application」を選択して次にいきます。</p>
<p><img data-attachment-id="1869" data-permalink="https://mintaku-blog.net/flutter-mac/image8/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?fit=1790%2C1342&amp;ssl=1" data-orig-size="1790,1342" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image8" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?fit=300%2C225&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?fit=800%2C600&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1869" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?resize=800%2C600&#038;ssl=1" alt="" width="800" height="600" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?resize=1024%2C768&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?resize=300%2C225&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?resize=768%2C576&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?resize=1536%2C1152&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?w=1790&amp;ssl=1 1790w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image8.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>Project Nameを入力し、SDKとプロジェクトのパスを指定して次にいきます。</p>
<p><img data-attachment-id="1868" data-permalink="https://mintaku-blog.net/flutter-mac/image7/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?fit=1794%2C1350&amp;ssl=1" data-orig-size="1794,1350" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image7" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?fit=300%2C226&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?fit=800%2C602&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1868" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?resize=800%2C602&#038;ssl=1" alt="" width="800" height="602" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?resize=1024%2C771&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?resize=300%2C226&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?resize=768%2C578&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?resize=1536%2C1156&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?w=1794&amp;ssl=1 1794w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image7.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>Finishをクリックします。</p>
<p><img data-attachment-id="1864" data-permalink="https://mintaku-blog.net/flutter-mac/image3-4/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?fit=1790%2C1348&amp;ssl=1" data-orig-size="1790,1348" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image3" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?fit=300%2C226&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?fit=800%2C602&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1864" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?resize=800%2C602&#038;ssl=1" alt="" width="800" height="602" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?resize=1024%2C771&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?resize=300%2C226&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?resize=768%2C578&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?resize=1536%2C1157&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?w=1790&amp;ssl=1 1790w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image3.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>完了して編集画面が表示されたらTools→AVD Managerを選択します。</p>
<p><img data-attachment-id="1871" data-permalink="https://mintaku-blog.net/flutter-mac/image10/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?fit=1999%2C1192&amp;ssl=1" data-orig-size="1999,1192" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image10" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?fit=300%2C179&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?fit=800%2C477&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1871" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?resize=800%2C477&#038;ssl=1" alt="" width="800" height="477" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?resize=1024%2C611&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?resize=300%2C179&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?resize=768%2C458&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?resize=1536%2C916&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?w=1999&amp;ssl=1 1999w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image10.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>「Create Virtual Device」を選択します。</p>
<p><img data-attachment-id="1870" data-permalink="https://mintaku-blog.net/flutter-mac/image9/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?fit=1999%2C1055&amp;ssl=1" data-orig-size="1999,1055" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image9" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?fit=300%2C158&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?fit=800%2C422&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1870" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?resize=800%2C422&#038;ssl=1" alt="" width="800" height="422" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?resize=1024%2C540&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?resize=300%2C158&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?resize=768%2C405&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?resize=1536%2C811&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?w=1999&amp;ssl=1 1999w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image9.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>エミュレーターに使うデバイスを選択します。</p>
<p><img data-attachment-id="1866" data-permalink="https://mintaku-blog.net/flutter-mac/image5-2/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?fit=1988%2C1342&amp;ssl=1" data-orig-size="1988,1342" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image5" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?fit=300%2C203&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?fit=800%2C540&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1866" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?resize=800%2C540&#038;ssl=1" alt="" width="800" height="540" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?resize=1024%2C691&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?resize=300%2C203&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?resize=768%2C518&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?resize=1536%2C1037&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?w=1988&amp;ssl=1 1988w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image5.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>System Imageを選択し、次にいきます。</p>
<p><img data-attachment-id="1875" data-permalink="https://mintaku-blog.net/flutter-mac/image14/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?fit=1992%2C1344&amp;ssl=1" data-orig-size="1992,1344" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image14" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?fit=300%2C202&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?fit=800%2C540&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1875" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?resize=800%2C540&#038;ssl=1" alt="" width="800" height="540" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?resize=1024%2C691&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?resize=300%2C202&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?resize=768%2C518&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?resize=1536%2C1036&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?w=1992&amp;ssl=1 1992w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image14.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>最後にFinishをクリックして完了です。</p>
<p><img data-attachment-id="1862" data-permalink="https://mintaku-blog.net/flutter-mac/image1-8/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?fit=1994%2C1344&amp;ssl=1" data-orig-size="1994,1344" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?fit=300%2C202&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?fit=800%2C539&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1862" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?resize=800%2C539&#038;ssl=1" alt="" width="800" height="539" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?resize=1024%2C690&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?resize=300%2C202&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?resize=768%2C518&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?resize=1536%2C1035&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?w=1994&amp;ssl=1 1994w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image1.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<h2>Androidのライセンスを許可する</h2>
<p>以下のコマンドでAndroidのライセンスを許可します。ライセンスの許可について聞かれるので「y」で承諾します。</p><pre class="crayon-plain-tag">$ flutter doctor --android-licenses</pre><p>&nbsp;</p>
<h2>Xcodeをインストールする</h2>
<p>App StoreからXcodeをインストールします。</p>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/is1-ssl.mzstatic.com/image/thumb/Purple221/v4/14/38/db/1438db05-3e0c-1827-21fc-81e6c1e0e78d/Xcode-0-85-220-0-6-0-0-2x-sRGB-0-0.png/1200x630wa.jpg?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://apps.apple.com/us/app/xcode/id497799835">‎Xcode App - App Store</a>
			</p>
							<div class="ys-blog-card__dscr">
					Download Xcode by Apple on the App Store&hellip;				</div>
										<div class="ys-blog-card__domain">apps.apple.com</div>
					</div>
	</div>
</div>

<p>「Xcodeは“Macintosh HD”にはインストールできません。macOSバージョンxx.xx.x以降が必要です」とでたら、macOSのバージョンを上げるか、過去のバージョンをインストールできる方法があるようなのでどちらかで対応しましょう。</p>
<p>&nbsp;</p>
<h2>CocoaPodsをインストールする</h2>
<p>以下のコマンドでCocoaPodsをインストールします。</p><pre class="crayon-plain-tag">$ sudo gem install cocoapods</pre><p>&nbsp;</p>
<h2>flutter doctorで実行環境が整ったか確認する</h2>
<p>最後にflutter doctorで実行環境が整ったか確認します。以下のようにNo issues found!となったら開発環境は完了です。</p><pre class="crayon-plain-tag">Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2 20D64 darwin-x64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
[✓] Android Studio (version 4.1)
[!] Connected device
! No devices available

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.22.6, on macOS 11.2 20D64 darwin-x64, locale ja-JP)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
[✓] Android Studio (version 4.1)
[✓] Connected device (1 available)

• No issues found!</pre><p>&nbsp;</p>
<h2>flutter doctorでFlutter plugin not installedと言われたら</h2>
<p>Flutterのプラグインを正常にインストールできたのにnot installedと言われた場合は、以下の方法で解決しました。シンボリックリンクを作成することで認識できるようになったようです。</p><pre class="crayon-plain-tag">$ ln -s ~/Library/Application\ Support/Google/AndroidStudio4.1/plugins ~/Library/Application\ Support/AndroidStudio4.1</pre><p>参考：https://github.com/flutter/flutter/issues/68429</p>
<p>&nbsp;</p>
<h2>VSCodeでFlutterが使える環境を整える</h2>
<p>VSCodeを使っているので、Flutterが使えるようにします。</p>
<h3>VSCodeにFlutterの拡張機能をインストールする</h3>
<p>まず、拡張機能からFlutterをインストールします。</p>
<p><img data-attachment-id="1867" data-permalink="https://mintaku-blog.net/flutter-mac/image6/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image6.png?fit=672%2C720&amp;ssl=1" data-orig-size="672,720" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image6" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image6.png?fit=280%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image6.png?fit=672%2C720&amp;ssl=1" loading="lazy" class="aligncenter size-full wp-image-1867" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image6.png?resize=672%2C720&#038;ssl=1" alt="" width="672" height="720" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image6.png?w=672&amp;ssl=1 672w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2021/02/image6.png?resize=280%2C300&amp;ssl=1 280w" sizes="(max-width: 672px) 100vw, 672px" data-recalc-dims="1" /></p>
<h3>VSCodeでFlutter新規プロジェクトを作成する</h3>
<p>コマンドパレットから「Flutter」と入力して、「Flutter: New Project」を選択します。プロジェクト名を入力し、ディレクトリを指定することでプロジェクトを作成できます。</p>
<p>エミュレーターを起動する場合は右下のNo Device選択することで、iOSとAndroidのエミュレーターを起動することができます。</p>
<h3>ホットリロードできるようにする</h3>
<p>コマンドパレットから「Debug: Attach to Flutter on Device」を選択することで、ホットリロードができるようになります。</p>The post <a href="https://mintaku-blog.net/flutter-mac/">Flutterの開発環境をMacOSで構築する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/flutter-mac/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1860</post-id>	</item>
		<item>
		<title>TCP/IPについて整理する</title>
		<link>https://mintaku-blog.net/tcp-ip/</link>
					<comments>https://mintaku-blog.net/tcp-ip/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Fri, 12 Feb 2021 09:04:34 +0000</pubDate>
				<category><![CDATA[まとめ系]]></category>
		<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=1848</guid>

					<description><![CDATA[<p>普段何気なく使っている技術や言葉について、表面的な知識にせず、しっかりとイメージできるまで自分なりに調べて整理し、理解するシリーズ。 TCP/IP TCP/ …</p>
The post <a href="https://mintaku-blog.net/tcp-ip/">TCP/IPについて整理する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>普段何気なく使っている技術や言葉について、表面的な知識にせず、しっかりとイメージできるまで自分なりに調べて整理し、理解するシリーズ。</p>
<h2>TCP/IP</h2>
<p>TCP/IP（Transmission Control Protocol/Internet Protocol）は、現在のインターネット通信において最も利用されている通信プロトコルです。</p>
<p>TCP/IPは複数のプロトコルからなりますが、中心的な役割を果たすのがTCPとIPであることから TCP/IPと呼ばれるようになりました。</p>
<p>&nbsp;</p>
<h2>OSI参照モデルとTCP/IP階層モデル</h2>
<h3>OSI参照モデル</h3>
<p>OSI参照モデルとはISO(国際標準化機構)が定めた異なるベンダー間で相互通信するためのネットワーク・モデルと言われる統一規格のことです。</p>
<h3>TCP/IP階層モデル</h3>
<p>OSI参照モデルは7階層あるのに対し、TCP/IPは4階層しかありません。</p>
<p>OSI参照モデルよりも実装面で効率的 かつ 現実的な仕様となっているのがTCP/IPの階層モデルです。</p>
<p>TCP/IPの階層モデルの各層の主な役割は次の通りです。</p>
<ul>
<li>アプリケーション層：利用者が使うアプリケーションが通信するためのルールを定義</li>
<li>トランスポート層：データ(セグメント)を届けるための信頼性についてのルールを定義</li>
<li>インターネット層：宛先のコンピュータまでデータ(パケット)をどう届けるのかについてのルールを定義</li>
<li>リンク層：LANケーブルや光ケーブル、無線などにデータを流すため、ビット列を電気信号、光信号、無線などに変える</li>
</ul>
<p>&nbsp;</p>
<p>OSI参照モデルでの層名</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 25%;">OSI参照モデルでの層名</td>
<td style="width: 25%;">主なプロトコル</td>
<td style="width: 25%;">機器</td>
<td style="width: 25%;">TCP/IPでの階層名</td>
</tr>
<tr>
<td style="width: 25%;">アプリケーション層</td>
<td style="width: 25%;">HTTP、FTP、POP、SMTP、Telnet、DNS</td>
<td style="width: 25%;" rowspan="3">ゲートウェイ</td>
<td style="width: 25%;" rowspan="3">アプリケーション層</td>
</tr>
<tr>
<td style="width: 25%;">プレゼンテーション層</td>
<td style="width: 25%;">mp3、lzh、zip</td>
</tr>
<tr>
<td style="width: 25%;">セッション層</td>
<td style="width: 25%;">NetBIOS、PAP</td>
</tr>
<tr>
<td style="width: 25%;">トランスポート層</td>
<td style="width: 25%;">TCP、UDP</td>
<td style="width: 25%;"></td>
<td style="width: 25%;">トランスポート層</td>
</tr>
<tr>
<td style="width: 25%;">ネットワーク層</td>
<td style="width: 25%;">IP、ICMP、ARP、RARP</td>
<td style="width: 25%;">ルータ</td>
<td style="width: 25%;">インターネット層</td>
</tr>
<tr>
<td style="width: 25%;">データリンク層</td>
<td style="width: 25%;">Ethernet</td>
<td style="width: 25%;">スイッチ、ブリッジ</td>
<td style="width: 25%;" rowspan="2">リンク層</td>
</tr>
<tr>
<td style="width: 25%;">物理層</td>
<td style="width: 25%;">ケーブルの規格、形状</td>
<td style="width: 25%;">各種ケーブル　コネクタ</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>アプリケーション層</h2>
<p>アプリケーション層は、ソフトウェアによる便利なサービスなどを付加するための機能を持っています。</p>
<p>具体的な機能としては、ファイルの転送、HTMLの閲覧、メールの送受信などがあります。</p>
<h2>トランスポート層</h2>
<h3>ポート番号</h3>
<p>アプリケーションが通信を行う際、アプリケーション毎に通信するデータの送受信を行うための出入り口が用意されています。</p>
<p>この出入り口を ポートといい、各ポートには ポート番号 が割り振られています。通信を行う際は、このポート番号を使って情報をやり取りします。</p>
<p>ポート番号には、0~65535番 まであり、この内0~1023番 までは通信サービス毎にあらかじめ予約されており、ウェルノウンポートといいます。</p>
<h3>TCPとは</h3>
<p>TCP (Transmission Control Protocol) は、IPの上位プロトコルのトランスポート層で動作するプロトコルです。</p>
<h3>TCPの特徴</h3>
<h4>コネクション型プロトコル</h4>
<p>TPCで通信を行う場合、まずは通信相手とのコネクションを確立させることで相手に通信が届いていることを確認させます。TCPにおいて使用されるコネクションの確立のことを3ウェイハンドシェイクと呼びます。</p>
<h4>信頼性がある</h4>
<p>TCPでデータ通信を行う場合は前述のとおり事前にコネクションを確立し、双方で送受信ができていることをその都度確認するため、データ転送プロトコルとしては非常に信頼性の高いと言えます。</p>
<h4>重複を排除する仕組みがある</h4>
<p>TCPでは重複を排除することで、データが1つであることを保障しています。例えば何らかの理由でデータが複数伝送された場合でも、TCPでは複数送信されたデータを除去する仕組みを持っています。</p>
<h3>UDPとは</h3>
<p>UDP(User Datagram Protocol)とは、IPやTCPなどと同様にインターネットにて標準的に利用されているプロトコルです。</p>
<h3>UDPの特徴</h3>
<h4>コネクションレス型プロトコル</h4>
<p>TCPはデータを伝送するために毎回コネクションを確立するコネクション型プロトコルですが、UDPはスピードを重視するため、TCPのように確認作業を行うことはありません。</p>
<p>このように、確認機能などを排除してデータ伝送のみを目的としたプロトコルはコネクションレス型プロトコルと呼ばれています。</p>
<h4>処理が速い</h4>
<p>UDPでは遅延を少なくするために、処理をできるだけ簡単にしています。</p>
<p>TCPのように送受信の確認を行わずデータを送信しても相手に届いたかどうかをチェックしないため、遅延するということがほとんどありません。</p>
<h3>TCPとUDPとの比較</h3>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 33.3333%;">プロトコル</td>
<td style="width: 33.3333%;">TCP</td>
<td style="width: 33.3333%;">UDP</td>
</tr>
<tr>
<td style="width: 33.3333%;">通信方式</td>
<td style="width: 33.3333%;">コネクション型</td>
<td style="width: 33.3333%;">コネクションレス型</td>
</tr>
<tr>
<td style="width: 33.3333%;">信頼性</td>
<td style="width: 33.3333%;">高い</td>
<td style="width: 33.3333%;">低い</td>
</tr>
<tr>
<td style="width: 33.3333%;">転送速度</td>
<td style="width: 33.3333%;">低速</td>
<td style="width: 33.3333%;">高速</td>
</tr>
<tr>
<td style="width: 33.3333%;">上位プロトコル</td>
<td style="width: 33.3333%;">HTTP、Telnet、FTP、POPなど</td>
<td style="width: 33.3333%;">DNS、NTP、DHCP，SNMPなど</td>
</tr>
<tr>
<td style="width: 33.3333%;">主な用途</td>
<td style="width: 33.3333%;">Webの閲覧、メールの送受信、ファイル転送など</td>
<td style="width: 33.3333%;">音声通話、Videoストリーミング、マルチキャスト通信など</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>インターネット層</h2>
<h3>役割</h3>
<p>インターネット層での役割は通信相手と宛先までの経路の特定です。通信における誰が誰に届けるかという重要な情報を扱っています。</p>
<p>また、ネットワークはコンピュータが相互に接続されているため、あるコンピュータからあるコンピュータまでの経路が複数パターン存在する場合があります。宛先までの経路が複数ある場合に、適切なルートを決定するして届けるのもネットワーク層の役割です。</p>
<h3>IP</h3>
<p>IPはインターネット層で中心的なやきう割を担うプロトコルでネットワーク世界における住所のようなものです。IPアドレスによってEnd to Endの通信を可能にします。</p>
<h3>IPの特徴</h3>
<h4>パケット通信</h4>
<p>パケット通信とは、 データをある特定の大きさに区切って伝える方法です。  宛先と発信者、何番目のデータかなどの情報(ヘッダ)を一緒につけて送ります。</p>
<h4>コネクションレス型</h4>
<p>コネクションレス型プロトコルでは事前にコネクションを確立しません。送信元からデータを転送しても、そのデータを通信相手が受信できるかどうかは感知しないのが特徴です。</p>
<h4>ベストエフォート型</h4>
<p>パケットが行き先に送られるように努力はするが、必ず到達するという保証はありません。これを補うために、IPの上でTCPというプロトコルを使い信頼性を上げています。</p>
<h3>IPアドレス</h3>
<p>IPアドレスにはバージョンがあり、普及しているのがIPv4です。<br />
IPアドレス(IPv4)の構成：172.1(←ネットワーク部) .2.3(←ホスト部)</p>
<p>ただIPアドレス枯渇問題でIPv4(43億)では割り当てることができるIPアドレスに限界がきており、現在はIPv6(340澗)の普及が進んでいます。</p>
<p>&nbsp;</p>
<h3>ARP</h3>
<p>ARPはIPアドレスに紐づくMACアドレスを調べるためのプロトコルです。このIPアドレスからMACアドレスを調査する一連の処理をアドレス解決と呼びます。</p>
<p>APRに対して知りたいMACアドレスをIPアドレスを元に依頼し、ブロードキャストを通してMACアドレスを調べてもらうイメージです。</p>
<p>また、何度もブロードキャストされることを防ぐために、ARPテーブルが使われます。</p>
<p>&nbsp;</p>
<h2>リンク層(ネットワークインタフェース層)</h2>
<p>リンク層はOSI参照モデルのデータリンク層と物理層とを組み合わせたものです。</p>
<h3>データリンク層</h3>
<p>直結した端末同士での、電気信号の伝送制御、誤り検出、再送要求などの機能を持っています。トランスポート層と類似した役割ですが、こちらはより物理的な部分でデータというよりも電気信号そのものを扱います。</p>
<h3>物理層</h3>
<p>直接接続された機器や端末において、電気信号を届けるための各種機能を扱っています。</p>
<p>プロトコルとしては、接続するケーブルの形状やコネクタの種類などにあたります。広義の意味では、電柱を伝っている電線や光ファイバーなどもここに位置します。</p>
<h3>イーサネット</h3>
<p>イーサネットは データリンク層と物理層で使用されているプロトコルです。</p>
<p>イーサネットではインターネット層から受け取ったパケットに以下の情報を付加することによってフレームを作成します。</p>
<ul>
<li>プリアンブル : 受信側にフレームを 受け取る準備 をさせ、フレームが 始まることを示す値</li>
<li>イーサネットヘッダー : 宛先と送信元の MACアドレスなどが記載される</li>
<li>FCS : フレームが破損していないかをチェックするための値</li>
</ul>
<h3>MACアドレス</h3>
<p>MACアドレスは物理アドレスとも呼ばれ、ネットワーク機器それぞれに、製造段階で割り当てられる装置固有の12桁の識別番号です。</p>
<p>インターネットなどのネットワークにおいて、コンピューター同士が通信を行う際、通信相手を特定するためにMACアドレスを利用します。</p>
<p>&nbsp;</p>
<h2>参考</h2>
<p><iframe loading="lazy" class="youtube-player" width="800" height="450" src="https://www.youtube.com/embed/Pp6-YXxL06Y?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=ja&#038;autohide=2&#038;wmode=transparent" allowfullscreen="true" style="border:0;" sandbox="allow-scripts allow-same-origin allow-popups allow-presentation"></iframe></p>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/res.cloudinary.com/zenn/image/upload/s--3Svrs07Q--/g_center%2Ch_280%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYm9va19jb3Zlci82ZWZmZmFhMGU2LmpwZw==%2Cw_200/v1627283836/default/og-base-book_yz4z02.jpg?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://zenn.dev/kubo_programmer/books/fa1e01071e7aaa90672d/viewer/d8dbcb018e88bb941cd5">クライアントとサーバー｜ヒヨコでもわかる TCP/IP 入門</a>
			</p>
										<div class="ys-blog-card__domain">zenn.dev</div>
					</div>
	</div>
</div>


<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/www.fenet.jp/infla/column/wp-content/uploads/2022/06/TCPとUDPの特徴.jpg?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://www.fenet.jp/infla/column/network/tcp%E3%81%A8udp%E3%81%AE%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B46%E3%81%A4%EF%BD%9C%E4%BB%A3%E8%A1%A8%E7%9A%84%E3%81%AA%E3%83%9D%E3%83%BC%E3%83%88%E7%95%AA%E5%8F%B7%E3%82%84%E4%BD%BF%E3%81%84%E5%88%86/">TCPとUDPの主な特徴6つ｜代表的なポート番号や使い分ける方法も紹介 | テックマガジン from FEnetインフラ</a>
			</p>
							<div class="ys-blog-card__dscr">
					TCPとUDPにはどのような違いがあるのでしょうか。この記事ではTCPやUDPの&hellip;				</div>
										<div class="ys-blog-card__domain">www.fenet.jp</div>
					</div>
	</div>
</div>


<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/thinkit.co.jp/sites/default/files/styles/1200x630/public/main_images/5800_main_8.png?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://thinkit.co.jp/story/2015/04/30/5800">TCP/IP 4階層モデルとは？ | 新人エンジニアが知っておきたいネットワーク基礎知識 | Think IT（シンクイット）</a>
			</p>
							<div class="ys-blog-card__dscr">
					【Think IT】TCP/IP 4階層モデルインターネットで使われているTCP&hellip;				</div>
										<div class="ys-blog-card__domain">thinkit.co.jp</div>
					</div>
	</div>
</div>


<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/www.n-study.com/wp-content/uploads/2019/10/tcpip05.png?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://www.n-study.com/network-architecture/tcp-ip-layer/">TCP/IPの概要 | ネットワークアーキテクチャ | ネットワークのおべんきょしませんか？</a>
			</p>
							<div class="ys-blog-card__dscr">
					TCP/IPの階層 TCP/IPは、幅広く利用されていて現在では事実上の標準とし&hellip;				</div>
										<div class="ys-blog-card__domain">www.n-study.com</div>
					</div>
	</div>
</div>

<p><iframe loading="lazy" title="Linuxで動かしながら学ぶTCP/IPネットワーク入門" type="text/html" width="800" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=kpd&#038;ref_=k4w_oembed_FCWRnkXR93cM6e&#038;asin=B085BG8CH5&#038;tag=kpembed-20"></iframe></p>The post <a href="https://mintaku-blog.net/tcp-ip/">TCP/IPについて整理する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/tcp-ip/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1848</post-id>	</item>
		<item>
		<title>Cookie・SessionとWeb Storageについて整理する</title>
		<link>https://mintaku-blog.net/cookie-session/</link>
					<comments>https://mintaku-blog.net/cookie-session/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Thu, 14 Jan 2021 03:22:34 +0000</pubDate>
				<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=1831</guid>

					<description><![CDATA[<p>普段何気なく使っている技術や言葉について、表面的な知識にせず、しっかりとイメージできるまで自分なりに調べて整理し、理解するシリーズ。 Cookieとは 正式 …</p>
The post <a href="https://mintaku-blog.net/cookie-session/">Cookie・SessionとWeb Storageについて整理する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>普段何気なく使っている技術や言葉について、表面的な知識にせず、しっかりとイメージできるまで自分なりに調べて整理し、理解するシリーズ。</p>
<h2>Cookieとは</h2>
<p>正式には HTTP Cookie という名称で、一般的には略してCookieと呼びます。</p>
<p>Cookieは、クライアント側に保存される情報のことで、Webサイトの訪問者の情報を一時的に保存します。</p>
<p>例えばECサイトに訪問した時に既にログイン状態になっている、以前カートに入れた商品が残っているなどは、Cookieによって実現されています。</p>
<h3>Cookieの構成</h3>
<p>Cookieの構成は、サーバー側で設定することができます。nameとvalueは必ず設定しなければならず、それ以外の値に任意設定です。</p>
<ul>
<li>name: Cookie名</li>
<li>value: Cookieがもつ値</li>
<li>expires: Cookieの有効期限を設定</li>
<li>domain: Cookieが発行されるドメインを設定</li>
<li>path: Cookieが発行されるパスを設定</li>
<li>secure: アクセス先がSSLを実装しているような安全なサイトの場合のみ、Cookieを発行するように設定</li>
</ul>
<h3>1st party Cookieと3rd party Cookie</h3>
<p>ユーザーが訪れたサイトである発行元のCookieが1st party Cookieと呼ばれ、ログイン情報などが保存されます。一方、広告などのサーバーから発行されたユーザーが訪れているサイトではない発行元のCookieが3rd party Cookieになります。</p>
<p>まとめると以下のような違いがあります。</p>
<ul>
<li>1st Party Cookieは、ユーザーが訪れたサイト(自社サイト)での用途に使う</li>
<li>3rd Party Cookieは、ユーザーが訪れたサイトでないサイト(他社サイト)での用途に使う</li>
</ul>
<p>広告はターゲティングや効果測定のためにサイトをまたがってユーザーを識別する必要があります。これを実現するために3rd Party Cookieを使用しています。</p>
<p>3rd Party Cookieにより、ユーザーがどんなサイトを見ているかなどの情報を収集できてしまいます。</p>
<p>そのため、個人情報保護の観点からAppleはITP (Intelligent Tracking Prevention) という仕組みを自社ブラウザであるSafariに導入し、広告目的のクッキー(Cookie)の使用が制限され始めています。</p>
<p>&nbsp;</p>
<h2>Session</h2>
<p>Sessionは通信における開始から終了までの一連の処理のことで、ここではCookieを使用した一連の操作・仕組みのことを指します。</p>
<p>Sessionはログイン情報など、ユーザーと紐づく情報をサーバー側に一定期間保存しておくことができます。</p>
<h2>CookieとSession</h2>
<p>SessionにIDを割り振って管理し、保持されたSessionが欲しいときはIDを指定して取り出します。</p>
<p>クライアント側でこのSessionIDをCookieに格納し、CookieはHTTPリクエスト時に自動的にCookie情報を送受信するため、サーバー側は送信されたSessionIDを元にユーザーの識別が可能となります。</p>
<p>クライアント側はSessionのIDは改ざんできても関連している中身はサーバーにあるからデータの改ざんすることはできません。</p>
<p>このようにCookieを利用することで、Session管理をすることができます。</p>
<p>&nbsp;</p>
<h2>Web Storageとは</h2>
<p>Web Storageはクライアント側にデータをローカル環境に記録するための仕組みです。</p>
<p>同じような仕組みとしてCookieが使われていますが、Web Storageはより高機能で扱いやすくなっています。ほとんどのモダンブラウザがWeb Storageに対応しており、InternetExplorerもバージョン8以上から対応しています。</p>
<h3>Web Storageの使いどころ</h3>
<p>Web Storageはクライアント側からアクセスできるデータベースのような役割をしています。</p>
<p>そのため、クライアント側であるJavascriptからアクセスしてメリットがあるような使い方をすると良いかと思います。</p>
<p>例えば以下のような場合に効果を発揮します。</p>
<ul>
<li>お知らせや通知など表示に関する各種設定情報</li>
<li>お気に入りや商品のカート追加などのユーザーによる操作やアクションによる情報</li>
</ul>
<h3>Web Storageの種類とCookieとの比較</h3>
<p>Web StorageはさらにlocalStorageとsessionStorageの2種類に分かれ、保持するデータの有効期限に違いがあります。</p>
<table style="border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<td style="width: 25%;"></td>
<td style="width: 25%;">有効期限</td>
<td style="width: 25%;">データ量</td>
<td style="width: 25%;">サーバへのデータ送信</td>
</tr>
<tr>
<td style="width: 25%;">Local Storage</td>
<td style="width: 25%;">永続的に有効</td>
<td style="width: 25%;">ドメインに対して5MB</td>
<td style="width: 25%;">データ利用時のみ</td>
</tr>
<tr>
<td style="width: 25%;">Session Storage</td>
<td style="width: 25%;">ウィンドウ・タブを閉じるまで</td>
<td style="width: 25%;">ドメインに対して5MB</td>
<td style="width: 25%;">データ利用時のみ</td>
</tr>
<tr>
<td style="width: 25%;">Cookie</td>
<td style="width: 25%;">ウィンドウ・タブを閉じるまで、または指定期限まで</td>
<td style="width: 25%;">4KB</td>
<td style="width: 25%;">リクエスト毎に自動送信</td>
</tr>
</tbody>
</table>
<h3>CookieとWeb Storageの共通点と違い</h3>
<p>共通点</p>
<ul>
<li>クライアントから参照をすることができる</li>
<li>保存するデータをKey-Valueで保存する</li>
</ul>
<p>異なる点</p>
<ul>
<li>Web Storageは大きなデータ量を簡単に取り扱える</li>
<li>Cookieは通信ごとに毎回自動で送信される</li>
</ul>
<p>また大きな用途の違いとして、Cookieの情報はサーバーサイドが使用するのに対し、Web Storageはクライアントサイドからしか参照することができません。</p>
<p>基本的にはCookieにはJavascriptからアクセスできず、Web StorageはJavascriptによってアクセスできるため、サーバーで参照する必要がないデータはWeb Storageで格納すると良いでしょう。</p>
<p>Web StorageとCookieを比較した場合、通信量やセキュリティなどほとんどの面でWeb Storageに軍配があがりますが、CookieはHTTPリクエスト時に自動的にCookie情報を送受信するため、単純にサーバー側プログラムとの連携を考えると、Cookieの方が扱いやすいといえます。</p>
<p>&nbsp;</p>
<h2>参考</h2>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/rfs.jp/wp-content/themes/smart/ogpimage.png?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://rfs.jp/sb/javascript/03js/web-storage.html">Web Storageでローカルに情報を記録する - 第3章 応用・JavaScript関連技術 - [SMART]</a>
			</p>
							<div class="ys-blog-card__dscr">
					Web Storageの概要 Web Storageはクライアント側にデータをロ&hellip;				</div>
										<div class="ys-blog-card__domain">rfs.jp</div>
					</div>
	</div>
</div>


<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNjIyNjQlMkZwcm9maWxlLWltYWdlcyUyRjE1MzgzNjczMDc_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPTYwM2NkM2ZhN2EyZjhhZDFiZDYzYWM1ZTkzMWFiZTAx%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3Dd1f3a65a4848600edf67d0545b7d4b9d?ixlib=rb-4.0.0&amp;w=1200&amp;fm=jpg&amp;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9Q29va2llJUUzJTgxJUE4JUUzJTgyJUJCJUUzJTgzJTgzJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgyJTkyJUUzJTgxJUExJUUzJTgyJTgzJUUzJTgyJTkzJUUzJTgxJUE4JUU3JTkwJTg2JUU4JUE3JUEzJUUzJTgxJTk5JUUzJTgyJThCJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9YWExN2MwODZiMmM5MzU1MTlkMDVlOWIwNjNjOTM1ZDY&amp;mark-x=120&amp;mark-y=112&amp;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBodGh0aHQmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtcGFkPTAmcz04MmFiOWNhOWNkZDNjZWJmZTE4NTk4MDY2NWQ4MmYwNA&amp;blend-x=242&amp;blend-y=480&amp;blend-w=838&amp;blend-h=46&amp;blend-fit=crop&amp;blend-crop=left%2Cbottom&amp;blend-mode=normal&amp;s=bda75d02dd7b631eccf372da8729bba3" alt="">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://qiita.com/hththt/items/07136ad74127999df271">Cookieとセッションをちゃんと理解する #PHP - Qiita</a>
			</p>
							<div class="ys-blog-card__dscr">
					引用/参考書籍 「よくわかるPHPの教科書」 「初めてのPHP5」 「パーフェク&hellip;				</div>
										<div class="ys-blog-card__domain">qiita.com</div>
					</div>
	</div>
</div>

<div class="ys-blog-card__text-link"><a href="https://www.1915keke.com/entry/2019/02/18/153826" >https://www.1915keke.com/entry/2019/02/18/153826</a></div>

<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFtYXpvbmF3cy5jb20lMkYwJTJGNzI5ODUlMkZwcm9maWxlLWltYWdlcyUyRjE1MTEyMzEwNDE_aXhsaWI9cmItNC4wLjAmYXI9MSUzQTEmZml0PWNyb3AmbWFzaz1lbGxpcHNlJmJnPUZGRkZGRiZmbT1wbmczMiZzPWU3OGFhN2UxNzdjOWM5YzBhZWMxZmZhODIxNjBjZDgw%26blend-x%3D120%26blend-y%3D467%26blend-w%3D82%26blend-h%3D82%26blend-mode%3Dnormal%26s%3Dfddbf7c23353dd2d918051e24aad6519?ixlib=rb-4.0.0&amp;w=1200&amp;fm=jpg&amp;mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgwJTkwUEhQJUU4JUI2JTg1JUU1JTg1JUE1JUU5JTk2JTgwJUUzJTgwJTkxQ29va2llJUUzJTgxJUE4JUUzJTgyJUJCJUUzJTgzJTgzJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJUUzJTgxJUFCJUUzJTgxJUE0JUUzJTgxJTg0JUUzJTgxJUE2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9NTVhZDQzN2E4MDRiYWY4M2QwOTVlMjAwYTU4NDEwMjM&amp;mark-x=120&amp;mark-y=112&amp;blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDA3OTY4JnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9MDE2M2I0MDhjMTBjMDM2YmFkMTM3OTFmZmIxOGYxMDU&amp;blend-x=242&amp;blend-y=480&amp;blend-w=838&amp;blend-h=46&amp;blend-fit=crop&amp;blend-crop=left%2Cbottom&amp;blend-mode=normal&amp;s=bb367d1371b3507ed5e3be35b512452c" alt="">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://qiita.com/7968/items/ce03feb17c8eaa6e4672#%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A3%E3%81%A6%E4%BD%95">【PHP超入門】Cookieとセッションについて #HTTP - Qiita</a>
			</p>
							<div class="ys-blog-card__dscr">
					Udemy で講座の販売を開始しました！ Udemy で「プログラミング学習の心&hellip;				</div>
										<div class="ys-blog-card__domain">qiita.com</div>
					</div>
	</div>
</div>


<div class="ys-blog-card">
	<div class="ys-blog-card__container">
					<figure class="ys-blog-card__image">
				<img src="https://i0.wp.com/assets.st-note.com/production/uploads/images/18834783/rectangle_large_type_2_842566510d53d1526f28d9a9bcb5802b.jpeg?w=800&#038;ssl=1" alt="" data-recalc-dims="1">			</figure>
				<div class="ys-blog-card__text">
			<p class="ys-blog-card__title">
				<a class="ys-blog-card__link" href="https://media.kaizenplatform.com/n/n13f0904db164">【解説】「サードパーティークッキーとマーケティングの 現在とこれから」クッキーの基本を理解して、未来を読み解く｜Kaizen Platform 公式note</a>
			</p>
							<div class="ys-blog-card__dscr">
					最近起きていること Kaizen Platform CTOのwatabeです。 &hellip;				</div>
										<div class="ys-blog-card__domain">media.kaizenplatform.com</div>
					</div>
	</div>
</div>

<p>&nbsp;</p>The post <a href="https://mintaku-blog.net/cookie-session/">Cookie・SessionとWeb Storageについて整理する</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/cookie-session/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1831</post-id>	</item>
		<item>
		<title>【Rails】Google Analytics Reporting APIでレポートデータ取得する方法</title>
		<link>https://mintaku-blog.net/rails-ga/</link>
					<comments>https://mintaku-blog.net/rails-ga/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Sat, 05 Sep 2020 03:03:43 +0000</pubDate>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[GCP]]></category>
		<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=1558</guid>

					<description><![CDATA[<p>RailsでGoogle Analytics Reporting APIでレポートデータ取得する方法をまとめました。レポートデータ取得処理を独自クラス化し、 …</p>
The post <a href="https://mintaku-blog.net/rails-ga/">【Rails】Google Analytics Reporting APIでレポートデータ取得する方法</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>RailsでGoogle Analytics Reporting APIでレポートデータ取得する方法をまとめました。レポートデータ取得処理を独自クラス化し、JSON形式のレスポンスで返すところまでを紹介しています。</p>
<h2>Google Analytics Reporting APIの設定準備</h2>
<p>Google Analytics Reporting APIの設定は以下の記事を参考にしました。</p>
<ul>
<li>プロジェクトの作成</li>
<li>サービスアカウントの作成</li>
<li>秘密鍵のJSONファイルを生成 ← あとで使います</li>
<li>Googleアナリティクスにユーザ追加</li>
<li>ビューIDの確認 ← あとで使います</li>
</ul>
<p>参考：<a href="https://qiita.com/ryota-sasabe/items/a5efd2aac244cfcce5c7" target="_blank" rel="noopener noreferrer">Google Analytics API を叩いてデータを取得するまでの流れ（Ruby）</a></p>
<p>&nbsp;</p>
<h2>RailsでGoogleアナリティクスレポートデータ取得処理をクラス化</h2>
<p>Googleアナリティクスレポートデータ取得処理を独自クラス化し、コントローラで使えるようにします。</p>
<p>先程生成した秘密鍵のJSONファイルは「analytics_auth.json」として配置し、authメソッドでGoogleアナリティクスAPIに認証を行ってからレポートデータを取得しにいきます。</p>
<p>report_pv_count_by_dateメソッドで、取得開始日と取得終了日を引数(デフォルトは当日)で指定してその期間のレポートデータを取得できるようにします。</p>
<p>・lib/analytics.rb</p><pre class="crayon-plain-tag">require 'google/apis/analyticsreporting_v4'

class Analytics

  # レポート対象を指定してオブジェクトを生成
  # @param [String] base_url レポート対象サイトのURL
  # @param [String] view_id ビューID
  def initialize(base_url, view_id)
    @base_url = base_url
    @view_id = view_id
    @analytics = Google::Apis::AnalyticsreportingV4
    auth
  end

  # 指定した期間のページごとのPVを集計
  # @param [String] date 日付を表す文字列
  # @return [Hash] 累計PV及びページごとのPV
  def report_pv_count_by_date(start_date = 'today', end_date = 'today')
    date_range = @analytics::DateRange.new(start_date: start_date, end_date: end_date)
    metric = @analytics::Metric.new(expression: 'ga:users', alias: 'users')
    dimension = @analytics::Dimension.new(name: 'ga:pagePath')
    order_by = @analytics::OrderBy.new(field_name: 'ga:users', sort_order: 'DESCENDING')
    request = @analytics::GetReportsRequest.new(
      report_requests: [@analytics::ReportRequest.new(
        view_id: @view_id,
        metrics: [metric],
        date_ranges: [date_range],
        dimensions: [dimension],
        order_bys: [order_by],
      )]
    )
    response = @client.batch_get_reports(request)
    data = response.reports.first.data
    return {
      total: data.totals.first.values.first,
      pages: data.rows.map do |row|
        {
          url: @base_url + row.dimensions.first,
          dir: row.dimensions.first,
          views: row.metrics.first.values.first
        }
      end
    }
  end

  private

  # GoogleアナリティクスAPIに認証
  # 同ディレクトリにanalytics_auth.jsonを配置
  def auth
    scope = ['https://www.googleapis.com/auth/analytics.readonly']
    @client = @analytics::AnalyticsReportingService.new
    @client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
      json_key_io: File.open('analytics_auth.json'),
      scope: scope
    )
  end

end</pre><p>&nbsp;</p>
<p>独自クラスを作成したら、呼び出せるようにapplication.rbに以下を追記します。</p>
<p>・config/application.rb</p><pre class="crayon-plain-tag">require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module AppName
  class Application &lt; Rails::Application

    ...

    # 独自クラスパス指定
    config.autoload_paths += %W(#{config.root}/lib) ←追加

    ...

  end
end</pre><p>&nbsp;</p>
<p>uninitialized constantエラーで定義したクラスを読むことができない場合は、config/initializersディレクトリ配下にrequirements.rbファイルを作成し、以下を追記してください。</p>
<p>・config/initializers/requirements.rb</p><pre class="crayon-plain-tag">require Rails.root.join('lib/analytics.rb')</pre><p>&nbsp;</p>
<h2>クラス化したGoogleアナリティクスレポートデータ取得メソッド呼び出し</h2>
<p>実際にコントローラで呼び出してみます。初期化のBASE_URLとVIEW_IDは環境変数として.envに設定し呼び出して使うようにします。</p>
<p>フロントからパラメータ(取得開始日・取得終了日)をPOSTし、それらを引数にして実行しています。レスポンスはJSON形式で返すようにしています。</p>
<p>あとはroutes.rbにルーティングを設定して完了です。</p>
<p>・app/controllers/api/analytics_controller.rb</p><pre class="crayon-plain-tag">class Api::AnalyticsController &lt; Api::ApplicationController

  def report
    analytics = ::Analytics.new(ENV['BASE_URL'], ENV['VIEW_ID'])

    render json: analytics.report_pv_count_by_date(params[:start_date], params[:end_date])
  end

end</pre><p>以上、RailsでGoogle Analytics Reporting APIでレポートデータ取得する方法でした。</p>The post <a href="https://mintaku-blog.net/rails-ga/">【Rails】Google Analytics Reporting APIでレポートデータ取得する方法</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/rails-ga/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1558</post-id>	</item>
		<item>
		<title>【LINE謎】LINEで遊べる謎解きの作り方と開発方法まとめ</title>
		<link>https://mintaku-blog.net/line-mystery/</link>
					<comments>https://mintaku-blog.net/line-mystery/#respond</comments>
		
		<dc:creator><![CDATA[みんたく]]></dc:creator>
		<pubDate>Fri, 08 May 2020 05:42:04 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[個人開発]]></category>
		<category><![CDATA[その他]]></category>
		<guid isPermaLink="false">https://mintaku-blog.net/?p=1457</guid>

					<description><![CDATA[<p>LINE謎のBotを作成する上で、以下の記事や本を参考にしました。 参考：LINE謎の開発についてまとめ 参考：プログラミング初心者でも無料で簡単にLINE …</p>
The post <a href="https://mintaku-blog.net/line-mystery/">【LINE謎】LINEで遊べる謎解きの作り方と開発方法まとめ</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></description>
										<content:encoded><![CDATA[<p>LINE謎のBotを作成する上で、以下の記事や本を参考にしました。</p>
<p>参考：<a href="https://qiita.com/acerolaproduction/items/d89b51a7ae7b3f18370e" target="_blank" rel="noopener noreferrer">LINE謎の開発についてまとめ</a></p>
<p>参考：<a href="https://note.com/tatsuaki_w/n/nfed622429f4a" target="_blank" rel="noopener noreferrer">プログラミング初心者でも無料で簡単にLINE BOTが作れるチュートリアル｜渡なべ<img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f372.png" alt="🍲" class="wp-smiley" style="height: 1em; max-height: 1em;" />達明｜note</a></p>
<p>参考：<a href="https://qiita.com/mick_k1218/items/0ceb411f63a298decad2" target="_blank" rel="noopener noreferrer">【入門】Google Apps ScriptでLINE botを作成する</a></p>
<p>特にこちらのKindle本ではとてもわかりやすく解説されています。こちらの本では実際に作られている謎解きやマーケティング戦略まで紹介されているので、ご一読することをおすすめします。</p>
<p><iframe loading="lazy" title="ゼロから始めて1万人に遊ばれた謎解きゲームの作り方からマーケティングまで: ~LINE bot編~" type="text/html" width="800" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=kpd&#038;ref_=k4w_oembed_05NwxO9luBkiId&#038;asin=B07YK39CY9&#038;tag=kpembed-20"></iframe></p>
<h2>LINE謎とは</h2>
<p>LINEの公式アカウントを用いて、主にBot形式で謎を出題する謎解き形式をLINE謎と呼ばれています。</p>
<p>LINEのアカウントさえあれば、手軽に謎解きに挑戦することができます。LINEのMessaging APIが開放されてからLINE謎が出現し、少しずつ広まってきているようです。</p>
<h2>LINE謎開発の事前準備</h2>
<p>事前準備として以下が必要となります。今回は参考記事通りにGAS(Google App Script)を使用してコーディングを行っています。Googleアカウントは登録された前提とします。</p>
<ul>
<li>Googleアカウント登録</li>
<li>LINE Developers登録</li>
<li>LINE Bot Designer(必須ではない)</li>
</ul>
<h3>LINE Developersの登録</h3>
<p><img data-attachment-id="1458" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-18-25-43/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?fit=2786%2C1500&amp;ssl=1" data-orig-size="2786,1500" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 18.25.43" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?fit=300%2C162&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?fit=800%2C430&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1458" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?resize=800%2C430&#038;ssl=1" alt="" width="800" height="430" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?resize=1024%2C551&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?resize=300%2C162&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?resize=768%2C413&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?resize=1536%2C827&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?resize=2048%2C1103&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/cc9ee2ab3f1006ca700e7e4e39e79772.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>まず、以下のリンクからLINE開発者登録を行います。既にLINEアカウントを持っている場合は、そのアカウントで登録することができます。QRコードログインで簡単に認証することができます。</p>
<p><a href="https://developers.line.me/ja/" target="_blank" rel="noopener noreferrer">LINE Developers</a></p>
<p><img data-attachment-id="1459" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-18-30-20/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?fit=1104%2C1198&amp;ssl=1" data-orig-size="1104,1198" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 18.30.20" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?fit=276%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?fit=800%2C868&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1459" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?resize=800%2C868&#038;ssl=1" alt="" width="800" height="868" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?resize=944%2C1024&amp;ssl=1 944w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?resize=276%2C300&amp;ssl=1 276w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?resize=768%2C833&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/88cf9f06458d1fc3e26ace49a91920a4.png?w=1104&amp;ssl=1 1104w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<h3>LINE Bot Designerのダウンロード</h3>
<p>LINE Bot Designerを使用することで、簡単かつ短時間でLINE Botのプロトタイプを作成することができます。GUIで感覚的にチャットボットを設計できます。</p>
<p>以下のリンクからLINE Bot Designerをダウンロードします。後ほど使用しますので、その後インストールまでやっておきましょう。</p>
<p><a href="https://developers.line.biz/ja/services/bot-designer/" target="_blank" rel="noopener noreferrer">LINE Bot Designer</a></p>
<h2>Messaging APIで新規チャンネルを作成</h2>
<p><img data-attachment-id="1464" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-20-53-19/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?fit=2568%2C974&amp;ssl=1" data-orig-size="2568,974" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 20.53.19" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?fit=300%2C114&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?fit=800%2C303&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1464" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?resize=800%2C303&#038;ssl=1" alt="" width="800" height="303" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?resize=1024%2C388&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?resize=300%2C114&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?resize=768%2C291&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?resize=1536%2C583&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?resize=2048%2C777&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/058a48c08bd98f266eb318748037874d.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>先ほど登録したLINE Developersにログインし、「新規チャンネル作成」を押します。新規チャンネル作成に必要な項目を入力します。</p>
<p>ここで作成するLINE謎のチャンネル名やアイコンなどを登録します。なおチャンネル名は7日間は変更できないため、注意が必要です。</p>
<p><img data-attachment-id="1465" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-20-53-44/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?fit=2606%2C1434&amp;ssl=1" data-orig-size="2606,1434" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 20.53.44" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?fit=300%2C165&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?fit=800%2C440&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1465" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?resize=800%2C440&#038;ssl=1" alt="" width="800" height="440" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?resize=1024%2C563&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?resize=768%2C423&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?resize=1536%2C845&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?resize=2048%2C1127&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/af938c8996b9fda0f27756efdb4df9b3.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>LINE Messaging API：<a href="https://developers.line.biz/ja/services/messaging-api/" target="_blank" rel="noopener noreferrer">Messaging APIの特徴 Messaging APIは</a></p>
<h2>GASからWebhook URLを取得する</h2>
<p>まず、自身のGoogleアカウントからGoogleドライブを開き、Googleスプレッドシートを新規作成します。</p>
<p>スプレッドシートを開いたら、「ツール」→「スクリプトエディタ」を選択します。</p>
<p><img data-attachment-id="1466" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-08-9-38-19/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?fit=2768%2C1526&amp;ssl=1" data-orig-size="2768,1526" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-08 9.38.19" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?fit=300%2C165&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?fit=800%2C441&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1466" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?resize=800%2C441&#038;ssl=1" alt="" width="800" height="441" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?resize=768%2C423&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?resize=2048%2C1129&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/c051166aa032a1025cb3921cfcc04e31.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>選択すると、以下のようなスクリプトエディタが表示されます。左上にあるプロジェクト名を入力し、「公開」→「ウェブアプリケーションとして導入」を選択してください。</p>
<p><img data-attachment-id="1467" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-08-9-38-36/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?fit=1242%2C632&amp;ssl=1" data-orig-size="1242,632" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-08 9.38.36" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?fit=300%2C153&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?fit=800%2C407&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1467" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?resize=800%2C407&#038;ssl=1" alt="" width="800" height="407" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?resize=1024%2C521&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?resize=300%2C153&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?resize=768%2C391&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/824959a761429044914e86620f4b8beb.png?w=1242&amp;ssl=1 1242w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>それぞれ、以下のように設定し「Deploy」を押下します。</p>
<p><img data-attachment-id="2144" data-permalink="https://mintaku-blog.net/line-mystery/line-deploy/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?fit=892%2C798&amp;ssl=1" data-orig-size="892,798" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="line-deploy" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?fit=300%2C268&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?fit=800%2C716&amp;ssl=1" loading="lazy" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?resize=800%2C716&#038;ssl=1" alt="" width="800" height="716" class="aligncenter size-full wp-image-2144" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?w=892&amp;ssl=1 892w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?resize=300%2C268&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/line-deploy.png?resize=768%2C687&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>表示された「Current web app URL」をコピーします。これがWebhook URLとなります。</p>
<p><img data-attachment-id="1469" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-08-9-45-47/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?fit=886%2C526&amp;ssl=1" data-orig-size="886,526" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-08 9.45.47" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?fit=300%2C178&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?fit=800%2C475&amp;ssl=1" loading="lazy" class="aligncenter size-full wp-image-1469" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?resize=800%2C475&#038;ssl=1" alt="" width="800" height="475" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?w=886&amp;ssl=1 886w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?resize=300%2C178&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/657511a77d377aee9c19daa20d6f1ab8.png?resize=768%2C456&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<h2>LINE DevelopersのWebhook設定でGASと連携する</h2>
<p>作成したチャンネルからMessaging API設定を選択します。下にあるWebhook設定のWebhook URLに先ほどコピーしたURLをペーストします。また、Webhookの利用をONにします。</p>
<p><img data-attachment-id="1470" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-08-9-51-42/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?fit=2116%2C788&amp;ssl=1" data-orig-size="2116,788" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-08 9.51.42" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?fit=300%2C112&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?fit=800%2C298&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1470" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?resize=800%2C298&#038;ssl=1" alt="" width="800" height="298" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?resize=1024%2C381&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?resize=300%2C112&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?resize=768%2C286&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?resize=1536%2C572&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?resize=2048%2C763&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/61d6c3c8d15c2511791f9eb4f159a699.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>次にさらに下にあるチャンネルアクセストークンの発行を行います。このチャンネルアクセストークンは後で使います。</p>
<p><img data-attachment-id="1471" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-08-9-57-05/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?fit=1832%2C234&amp;ssl=1" data-orig-size="1832,234" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-08 9.57.05" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?fit=300%2C38&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?fit=800%2C102&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1471" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?resize=800%2C102&#038;ssl=1" alt="" width="800" height="102" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?resize=1024%2C131&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?resize=300%2C38&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?resize=768%2C98&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?resize=1536%2C196&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?w=1832&amp;ssl=1 1832w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/1a9f273adb20a35baaabeed408a496b3.png?w=1600&amp;ssl=1 1600w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<h2>GAS(Google App Script)を使って、ユーザとの応答形式LINE Botのスクリプトを実装する</h2>
<p>GASの画面に戻り、ユーザとの応答形式のスクリプトを実装していきます。JavaScriptで書くことができます。</p>
<h3>チャンネルアクセストークンの設定とリクエスト判定</h3>
<p>まずはじめにチャンネルアクセストークンを設定します。先ほど発行したチャンネルアクセストークンを変数に代入しましょう。</p>
<p>次にユーザから送られてくるリクエスト判定を行います。event.typeによって友達追加かメッセージかを判定します。</p><pre class="crayon-plain-tag">// チャンネルアクセストークンを設定
var channel_access_token = "先ほど発行したチャンネルアクセストークン";

// ユーザからのリクエスト判定(友達追加またはメッセージ)
function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;
  events.forEach(function(event) {
    if (event.type == "message") {
      sendMessage(event);
    }
    if (event.type == "follow") {
      sendFollowMessage(event);
    }
  });
}</pre><p></p>
<h3>友達追加時の挙動</h3>
<p>ユーザから友達追加された際に返すメッセージを設定します。setFollowMessageで友達追加時のメッセージ用意し、ユーザに返します。</p><pre class="crayon-plain-tag">function sendFollowMessage(e) {
  var followMessage = setFollowMessage(e);
  var postData = {
    "replyToken": e.replyToken,
    "messages": followMessage
  };
  var options = {
    "method": "post",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer " + channel_access_token
    },
    "payload": JSON.stringify(postData)
  };
  UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}

// 友達追加された際に返すメッセージ
function setFollowMessage(e) {
  var message = [{
    "type": "text",
    "text": "友達追加ありがとうございます！"
  }];
  return (message)
}</pre><p></p>
<h3>メッセージが送られてきた際の挙動</h3>
<p>友達追加時と同様にsetMessageに送られてきたメッセージに対応する返信を用意します。</p>
<p>switch文でそれぞれのメッセージに対応する返信を書いていきます。これがユーザとの応答形式Botの中身になります。LINE謎の場合は答えやヒントなどに対応する返信を書いていくことになります。</p>
<p>defaultは想定していないメッセージが送られてきた場合の返信を書きます。</p><pre class="crayon-plain-tag">function sendMessage(e) {
  var message = setMessage(e);
  var postData = {
    "replyToken": e.replyToken,
    "messages": message
  };
  var options = {
    "method": "post",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer " + channel_access_token
    },
    "payload": JSON.stringify(postData)
  };
  UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}

// メッセージが送られてきた際に返す返信の条件分岐
function setMessage(e) {
  switch (e.message.text) {
    case "答え":
      var message = [
        {
          "type": "text",
          "text": "正解です。"
        }
      ];
      return(message)
      break;

  case "ヒント":
    var message = [
      {
        "type": "text",
        "text": "ヒントは〇〇です。"
      }
    ];
    return(message)
    break;

  default:
    var message = [
      {
        "type": "text",
        "text": "ヒントが欲しい場合は「ヒント」と入力してください。"
      }
    ];
    return(message)
    break;
  }
}</pre><p>以上で応答形式Botの完成です。完成後は、「公開」→「ウェブアプリケーションとして導入」を選択し、バージョンを「new」にして再度デプロイしましょう。すると反映されていることが確認できると思います。</p>
<h2>返信メッセージをリッチにしたい</h2>
<p>返信メッセージをもっとリッチにしたい場合は、先ほどインストールしたLINE Bot Designerを使ってみましょう。</p>
<p>インストールが完了後、プロジェクトを作成を選択します。</p>
<p><img data-attachment-id="1463" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-18-51-56/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?fit=912%2C992&amp;ssl=1" data-orig-size="912,992" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 18.51.56" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?fit=276%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?fit=800%2C870&amp;ssl=1" loading="lazy" class="aligncenter size-full wp-image-1463" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?resize=800%2C870&#038;ssl=1" alt="" width="800" height="870" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?w=912&amp;ssl=1 912w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?resize=276%2C300&amp;ssl=1 276w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/3c0249882968b20b5e95da4e7c6bd385.png?resize=768%2C835&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>プロジェクトの設定を行います。</p>
<p><img data-attachment-id="1461" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-18-51-01/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?fit=2692%2C1748&amp;ssl=1" data-orig-size="2692,1748" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 18.51.01" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?fit=300%2C195&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?fit=800%2C520&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1461" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?resize=800%2C520&#038;ssl=1" alt="" width="800" height="520" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?resize=1024%2C665&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?resize=768%2C499&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?resize=1536%2C997&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?resize=2048%2C1330&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/6b487b7d8cd9331428a53cebba1d025e.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>設定完了後、プロトタイプをGUIで作成することができます。プロトタイプ完成後、右下のJSONをコピーすることで、そのまま使用することができます。</p>
<p><img data-attachment-id="1462" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-07-18-51-35/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?fit=2672%2C1722&amp;ssl=1" data-orig-size="2672,1722" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-07 18.51.35" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?fit=300%2C193&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?fit=800%2C516&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1462" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?resize=800%2C516&#038;ssl=1" alt="" width="800" height="516" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?resize=1024%2C660&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?resize=300%2C193&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?resize=768%2C495&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?resize=1536%2C990&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?resize=2048%2C1320&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/dbbc6d9a4b9aed8697156d8840e8b0ad.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>&nbsp;</p>
<p>ここで画像・動画、テンプレートメッセージなどを設計し、JSONコードをそのままGASにコピペで使うことができます。LINE謎を作成する場合は画像などを使うと思いますので、こちらを積極的に活用してみましょう。</p>
<p><img data-attachment-id="1472" data-permalink="https://mintaku-blog.net/line-mystery/%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2020-05-08-11-37-52/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?fit=2686%2C1736&amp;ssl=1" data-orig-size="2686,1736" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="スクリーンショット 2020-05-08 11.37.52" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?fit=300%2C194&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?fit=800%2C517&amp;ssl=1" loading="lazy" class="aligncenter size-large wp-image-1472" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?resize=800%2C517&#038;ssl=1" alt="" width="800" height="517" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?resize=1024%2C662&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?resize=300%2C194&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?resize=768%2C496&amp;ssl=1 768w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?resize=1536%2C993&amp;ssl=1 1536w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?resize=2048%2C1324&amp;ssl=1 2048w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?w=1600&amp;ssl=1 1600w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/73b9131f2040382e3d5339634098fc2f.png?w=2400&amp;ssl=1 2400w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<h2>実際にLINE謎を作ってみた</h2>
<p><img data-attachment-id="1486" data-permalink="https://mintaku-blog.net/line-mystery/m-1/" data-orig-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?fit=1024%2C512&amp;ssl=1" data-orig-size="1024,512" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="M (1)" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?fit=300%2C150&amp;ssl=1" data-large-file="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?fit=800%2C400&amp;ssl=1" loading="lazy" class="aligncenter size-full wp-image-1486" src="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?resize=800%2C400&#038;ssl=1" alt="" width="800" height="400" srcset="https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?w=1024&amp;ssl=1 1024w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?resize=300%2C150&amp;ssl=1 300w, https://i0.wp.com/mintaku-blog.net/mintaku/wp-content/uploads/2020/05/M-1.png?resize=768%2C384&amp;ssl=1 768w" sizes="(max-width: 800px) 100vw, 800px" data-recalc-dims="1" /></p>
<p>実際にLINE謎を作ってみました。ざっくりストーリーから考え、次にストーリーにあわせた謎を作り、開発という流れで行いました。こういう謎解きを作るのは初めてでしたが、丸一日かけて公開まで漕ぎ着けることができました。</p>
<p>初心者向けのLINE謎で10分くらいで解けるので、もし時間があればやっていただけると嬉しいです。</p>
<p>地球最後の日に残された謎：<a href="https://lin.ee/tV2tCPuy" target="_blank" rel="noopener noreferrer">https://lin.ee/tV2tCPuy</a></p>The post <a href="https://mintaku-blog.net/line-mystery/">【LINE謎】LINEで遊べる謎解きの作り方と開発方法まとめ</a> first appeared on <a href="https://mintaku-blog.net">みんたく</a>.]]></content:encoded>
					
					<wfw:commentRss>https://mintaku-blog.net/line-mystery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1457</post-id>	</item>
	</channel>
</rss>
