<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>クー太パパの部屋</title>
<link>https://ameblo.jp/j2kanjo/</link>
<atom:link href="https://rssblog.ameba.jp/j2kanjo/rss20.xml" rel="self" type="application/rss+xml" />
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
<description>ブログの説明を入力します。</description>
<language>ja</language>
<item>
<title>Strava APIを使ったアンドロイドスマホアプリを作る Vol.2</title>
<description>
<![CDATA[ <p>&nbsp;</p><nav aria-labelledby="toc-5zmx" contenteditable="false" data-toc="1.0.0"><style type="text/css">[data-toc]{background:#ffffffd9;border:1px solid var(--color-border-medium-emphasis,#08121a4d);border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:12px 16px}[data-toc] h2,[data-toc] ol,[data-toc] p{margin:0}[data-toc] .toc-header{align-items:center;display:flex;font-weight:700;gap:12px}:is([data-toc] .toc-header) h2{color:var(--color-text-medium-emphasis,#08121abd);font-size:.875em}[data-toc] .toc-empty-message{color:var(--color-text-low-emphasis,#08121a9c);font-weight:400}:is([data-toc] .toc-empty-message) p{font-size:.75em}[data-toc] ol{list-style:none;padding:0}:is([data-toc] ol) .last.collapse a{border:none}:is([data-toc] ol) a{border-bottom:1px solid var(--color-surface-tertiary,#08121a14);display:block;font-size:.75em;padding:6px 0;-webkit-text-decoration:none;text-decoration:none}[data-toc] .h4,[data-toc] a{color:var(--color-text-medium-emphasis,#08121abd)}[data-toc] .h2{font-weight:700}[data-toc] .h3{font-weight:400;margin-left:8px}[data-toc] .h4{font-weight:400;margin-left:16px}[data-toc] [role=button][aria-expanded]{align-items:center;display:flex;font-size:.75em;font-weight:700;gap:4px;justify-content:center;padding:4px 0;text-align:center;-webkit-text-decoration:none;text-decoration:none}[data-toc] [role=button][aria-expanded=true]:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M20.97 14.55c0 .26-.1.51-.29.71a.996.996 0 0 1-1.41 0l-7.29-7.29-7.29 7.29a.996.996 0 1 1-1.41-1.41l7.29-7.29c.78-.78 2.05-.78 2.83 0l7.29 7.29c.19.19.28.44.28.7'/%3E%3C/svg%3E")}[data-toc] [role=button][aria-expanded=false]:after,[data-toc] [role=button][aria-expanded=true]:after{background:var(--object-low-emphasis,#08121a9c);content:"";display:block;height:1rem;mask-size:contain;width:1rem}[data-toc] [role=button][aria-expanded=false]:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M3.05 9.45c0-.26.1-.51.29-.71a.996.996 0 0 1 1.41 0l7.29 7.29 7.29-7.29a.996.996 0 1 1 1.41 1.41l-7.29 7.29c-.78.78-2.05.78-2.83 0l-7.29-7.29c-.18-.19-.28-.44-.28-.7'/%3E%3C/svg%3E")}[data-toc]:has([role=button][aria-expanded=false]) .last:not(.collapse) a{border:none}[data-toc]:has([role=button][aria-expanded=false]) .collapse{display:none}[data-toc]:not(:has([role=button][aria-expanded])):not(:has(.collapse)) .last a{border:none}:is([contenteditable=true],.no-js,#no-js) [data-toc] .collapse{display:revert!important}</style><div class="toc-header"><h2 id="toc-5zmx">目次</h2></div><ol id="toc-list-1ya7"><li class="h3"><a href="#3jp6"><span>スプラッシュスクリーンを作成する</span></a></li><li class="h3"><a href="#r7gg"><span>ユーザー設定を管理する</span></a></li><li class="h3"><a href="#93in"><span>サイドメニューを実装する</span></a></li><li class="h3 last"><a href="#nrkg"><span>下部メニューを実装する</span></a></li><li class="h3 last collapse"><a href="#y35i"><span>データベースを管理する</span></a></li></ol><a aria-controls="toc-list-1ya7" aria-expanded="false" href="#" role="button">目次を開く</a></nav><p>&nbsp;</p><h3 id="3jp6">スプラッシュスクリーンを作成する</h3><p>本アプリを起動する時に表示される次のスプラッシュスクリーンの作成方法を解説します。</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20251217/08/j2kanjo/bd/a1/p/o0720152015730922340.png"><img alt="" height="887" src="https://stat.ameba.jp/user_images/20251217/08/j2kanjo/bd/a1/p/o0720152015730922340.png" width="420"></a></p><p>&nbsp;</p><p>まず、build.gradleファイルで、依存関係にSplashScreen互換性ライブラリを追加します。</p><pre>dependencies {&nbsp;&nbsp; &nbsp;・・・&nbsp;&nbsp; &nbsp;implementation(libs.androidx.core.splashscreen)}</pre><p>themes.xmlにTheme.SplashScreenを親とするstyleエレメントを設定します。</p><pre>&lt;style name="Theme.ImaBiker.SplashOpening" parent="Theme.SplashScreen"&gt;    &lt;item name="windowSplashScreenBackground"&gt;@color/teal_200&lt;/item&gt;    &lt;item name="windowSplashScreenAnimatedIcon"&gt;@drawable/baseline_directions_bike_24_xy&lt;/item&gt;    &lt;item name="postSplashScreenTheme"&gt;@style/Theme.ImaBiker.NoActionBar&lt;/item&gt;&lt;/style&gt;</pre><p>スプラッシュスクリーンの色は、Backgroundで@color/teal_200を設定しています。センターに表示される画像は、Drawableで作成した画像を設定しています。</p><p>MainActivityでは、super.onCreate()の前にinstallSplashScreen()を呼びます。</p><pre>override fun onCreate(savedInstanceState: Bundle?) {    installSplashScreen()    super.onCreate(savedInstanceState)</pre><p>&nbsp;&nbsp; &nbsp;・・・</p><h3 id="r7gg">ユーザー設定を管理する</h3><p>本アプリで使用するユーザープロファイルやオプション設定などのユーザー設定を管理する方法を解説します。ユーザー設定のデータは、ArrayListとしてsharedPreferencesを使用し、リスト情報をJSONArrayに変換し、それを文字列として保存します。</p><p>例えば、バイクリストの各バイク毎のデータは、次のようにして呼び出します。</p><pre>const val IMABIKER_FILE_NAME = "imabiker"const val BIKE_DATA_LIST = "bike_data_list"</pre><pre>val sharedPreferences = activity?.getSharedPreferences(IMABIKER_FILE_NAME, MODE_PRIVATE)val jsonArray = JSONArray(sharedPreferences!!.getString(BIKE_DATA_LIST, "[]"))</pre><pre>for (i in 0 until jsonArray.length()) {    val jsonData = jsonArray.getString(i)    var profile = Gson().fromJson(jsonData, BikeProfile::class.java)</pre><pre>    ・・・ profileの要素に関する処理を追加}</pre><p>&nbsp;</p><h3 id="93in">サイドメニューを実装する</h3><p>&nbsp;</p><h3 id="nrkg">下部メニューを実装する</h3><p>&nbsp;</p><h3 id="y35i">データベースを管理する</h3><p>&nbsp;</p><p>&nbsp;</p><p><br>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12950231372.html</link>
<pubDate>Tue, 16 Dec 2025 08:20:04 +0900</pubDate>
</item>
<item>
<title>Strava APIを使ったアンドロイドスマホアプリを作る Vol.1</title>
<description>
<![CDATA[ <p>&nbsp;</p><nav aria-labelledby="toc-97x6" contenteditable="false" data-toc="1.0.0"><style type="text/css">[data-toc]{background:#ffffffd9;border:1px solid var(--color-border-medium-emphasis,#08121a4d);border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:12px 16px}[data-toc] h2,[data-toc] ol,[data-toc] p{margin:0}[data-toc] .toc-header{align-items:center;display:flex;font-weight:700;gap:12px}:is([data-toc] .toc-header) h2{color:var(--color-text-medium-emphasis,#08121abd);font-size:.875em}[data-toc] .toc-empty-message{color:var(--color-text-low-emphasis,#08121a9c);font-weight:400}:is([data-toc] .toc-empty-message) p{font-size:.75em}[data-toc] ol{list-style:none;padding:0}:is([data-toc] ol) .last.collapse a{border:none}:is([data-toc] ol) a{border-bottom:1px solid var(--color-surface-tertiary,#08121a14);display:block;font-size:.75em;padding:6px 0;-webkit-text-decoration:none;text-decoration:none}[data-toc] .h4,[data-toc] a{color:var(--color-text-medium-emphasis,#08121abd)}[data-toc] .h2{font-weight:700}[data-toc] .h3{font-weight:400;margin-left:8px}[data-toc] .h4{font-weight:400;margin-left:16px}[data-toc] [role=button][aria-expanded]{align-items:center;display:flex;font-size:.75em;font-weight:700;gap:4px;justify-content:center;padding:4px 0;text-align:center;-webkit-text-decoration:none;text-decoration:none}[data-toc] [role=button][aria-expanded=true]:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M20.97 14.55c0 .26-.1.51-.29.71a.996.996 0 0 1-1.41 0l-7.29-7.29-7.29 7.29a.996.996 0 1 1-1.41-1.41l7.29-7.29c.78-.78 2.05-.78 2.83 0l7.29 7.29c.19.19.28.44.28.7'/%3E%3C/svg%3E")}[data-toc] [role=button][aria-expanded=false]:after,[data-toc] [role=button][aria-expanded=true]:after{background:var(--object-low-emphasis,#08121a9c);content:"";display:block;height:1rem;mask-size:contain;width:1rem}[data-toc] [role=button][aria-expanded=false]:after{mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' fill='currentColor' viewBox='0 0 24 24'%3E%3Cpath d='M3.05 9.45c0-.26.1-.51.29-.71a.996.996 0 0 1 1.41 0l7.29 7.29 7.29-7.29a.996.996 0 1 1 1.41 1.41l-7.29 7.29c-.78.78-2.05.78-2.83 0l-7.29-7.29c-.18-.19-.28-.44-.28-.7'/%3E%3C/svg%3E")}[data-toc]:has([role=button][aria-expanded=false]) .last:not(.collapse) a{border:none}[data-toc]:has([role=button][aria-expanded=false]) .collapse{display:none}[data-toc]:not(:has([role=button][aria-expanded])):not(:has(.collapse)) .last a{border:none}:is([contenteditable=true],.no-js,#no-js) [data-toc] .collapse{display:revert!important}</style><div class="toc-header"><h2 id="toc-97x6">目次</h2></div><ol id="toc-list-tg1f"><li class="h3"><a href="#5rhg"><span>はじめに</span></a></li><li class="h3"><a href="#r0rl"><span>I'm a bikerとは</span></a></li><li class="h3"><a href="#rok8"><span>Android Studio</span></a></li><li class="h3 last"><a href="#e4hu"><span>実機でアプリを動かす</span></a></li><li class="h3 collapse"><a href="#sj0g"><span>認証コードを取得する</span></a></li><li class="h3 collapse"><a href="#7cte"><span>アクセストークンを取得する</span></a></li><li class="h3 collapse"><a href="#b81x"><span>アクティビティデータを取得する</span></a></li><li class="h3 last collapse"><a href="#lxzu"><span>Vol.2へ</span></a></li></ol><a aria-controls="toc-list-tg1f" aria-expanded="false" href="#" id="toc-list-tg1f" role="button">目次を開く</a></nav><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><h3 id="5rhg">はじめに</h3><p>アンドロイドスマホアプリI'm a bikerについての開発ドキュメントを公開します。</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20251024/11/j2kanjo/21/b1/p/o1080234015702314042.png"><img alt="" height="910" src="https://stat.ameba.jp/user_images/20251024/11/j2kanjo/21/b1/p/o1080234015702314042.png" width="420"></a></p><h3 id="r0rl">I'm a bikerとは</h3><article><p>I'm a biker(これ以降本アプリ)は、<a href="https://www.strava.com/">Strava</a>に記録されている自分が乗っているロードバイクの走行データを使って簡易的なサービスを提供するためのアンドロイドスマホアプリです。</p><p>Stravaは世界有数のフィットネスプラットフォームで、30種類以上のスポーツタイプを記録でき、新しいトレーニング場所の発見や、コミュニティとの繋がり、進捗管理をサポートするウェッブサービスです。</p><p>本アプリは、Stravaの数あるスポーツタイプの中でロードバイクにのみに特化し、記録されているアクティビティのデータをダウンロードし、以下の簡易的なサービスを提供します。</p><ul><li>ユーザーが使用したロードバイクの情報を保存し管理します。</li><li><a href="https://developers.strava.com/">Strava API</a>を使用してアクティビティのデータを取得し管理します。</li><li>取得したアクティビティデータは、スマホのデータベースとして保存し、スクロールビュー上に表示します。</li><li>アクティビティデータ内のマップの<b>ポリラインデータ</b>からGoogle Map上に走行ルートを描画し、そのスクリーンショットを画像としてスマホに保存し、データベースとリンクすることでスクロールビュー上に表示します。</li><li>ロードバイクの<b>メンテナンス情報</b>を保存し管理します。</li></ul><dl><dt>Strava API</dt><dd><p>Stravaが提供するAPI（Application Programming Interface）で、アプリケーションの開発者が様々なStravaデータセットに対するアクセスを可能にするインターフェースが公開されています。</p></dd><dd><p>&nbsp;</p></dd><dt>ポリラインデータ</dt><dd><p>Strava APIで取得することが出来るデータセットには、アスリートがロードバイクで走行したルートに関するマップ情報があります。 このうち走行ルートのポリラインデータを使うことで、Google Map上に走行ルートの軌跡を描画することが出来ます。 本アプリケーションは、このポリラインデータを使ったGoogle Map上の走行ルートをスクリーンショットで画像として保存し、データベースのスクロールビュー上に表示することで、どの辺を走行したのかを一目で分かるようにしています。</p></dd><dd><p>&nbsp;</p></dd><dt>メンテナンス情報</dt><dd><p>ユーザーは、使用するロードーバイクを登録することが出来ます。登録したロードバイク情報には、タイヤやチェーンなどの消耗品に対する交換時期を設定することが出来ます。 本アプリケーションは、走行距離に基づいて消耗品の交換時期をチェックし、ユーザーに通知することでロードバイクのメンテナンス時期を知らせることが出来ます。</p></dd></dl><p>&nbsp;</p><h3 id="rok8">Android Studio</h3><p>本アプリは、Android用のスマホアプリです。その開発には、Android Studioを使用しました。 Android Studioは Androidアプリ開発用の公式の統合開発環境（IDE）です。 詳細は、<a href="https://developer.android.com/studio?hl=ja">Android Studio</a>を参照してください。</p><p>開発環境は、Windows 11のパソコンです。この時アカウントに日本語を使っていると、Android Studio実行時に正しく機能しないことがあるため、英語名でのアカウントを作成する必要があります。 日本語のアカウントでAndroid Studioをインストールすると、この最初の段階で相当トラブルことになります。</p><p>また、Android Studioには、Android Emulatorが附属しています。これを使うと、様々なAndroidスマホやタブレットのデバイスを画面上で仮想的に実現し、アプリを評価することが出来ます。 ただし、これらをエミュレートするには、デバイス一つに対して相当ディスク容量を使います。簡単に10GBを超えてしまい、初期設定はCドライブであるため、あっという間にディスクフルになってしまいます。</p><p>Android Studioには、実機（スマホ）でアプリを実行することも出来ます。私の場合、普段使いのスマホ以外にSIMなしの古いスマホがあったので、それを評価用に使っています。 Emulatorを使うより、起動も速いし問題なく評価が出来ます。</p><p>&nbsp;</p><h3 id="e4hu">実機でアプリを動かす</h3><p>次の手順で行います。</p>&nbsp;<p><a href="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/0d/b7/p/o1080234015702677629.png"><img alt="" height="910" src="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/0d/b7/p/o1080234015702677629.png" width="420"></a></p>&nbsp;<p><a href="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/8f/d9/p/o1080234015702677731.png"><img alt="" height="910" src="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/8f/d9/p/o1080234015702677731.png" width="420"></a></p>&nbsp;<p><a href="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/a4/ca/p/o0453025015702677897.png"><img alt="" height="232" src="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/a4/ca/p/o0453025015702677897.png" width="420"></a></p>&nbsp;<p><a href="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/2e/82/p/o0626069915702678027.png"><img alt="" height="469" src="https://stat.ameba.jp/user_images/20251025/08/j2kanjo/2e/82/p/o0626069915702678027.png" width="420"></a></p><p>&nbsp;</p><p>Android Studioでアプリを実行すると、プログラムがスマホにアップロードされて、スマホ上でアプリが実行され、デバッグも行うことが出来ます。 また、Android Studio上での実行を停止した後であっても、スマホ単体でアプリを実行することも出来ます。</p><ul><li>スマホで<b>設定</b>の<b>デバイス情報</b>を開きます。</li><li><b>ビルド番号</b>を7回タップします。</li><li><b>設定</b>に戻って、<b>システム</b>を開きます。</li><li><b>開発者向けオプション</b>が追加されているので、これを開きます。</li><li><b>ワイヤレスデバッグ</b>を開いて、<b>ワイヤレスデバッグの使用</b>をオンにします。</li><li>パソコンでAndroid Studioを起動し、<b>Device Manager</b>も<b>Pair Devices Using Wi-Fi</b>をクリックすると、QRコード画面が表示されます。</li><li>スマホに戻って、<b>ワイヤレスデバッグ</b>の<b>QRコードによるデバイスのペア設定</b>をクリックして、下記のQRコードを読み込みます。</li><li>接続に成功すると、Android Studioの<b>Device Manager</b>にスマホ名が追加されます。</li></ul><div><h3 id="sj0g">認証コードを取得する</h3><p>Stravaから認証コードを取得するには、Strava APIを利用してStravaのホームページから情報を取得する必要があります。 ここでは、その技術的方法を説明します。 Strava APIに関しては、<a href="https://developers.strava.com/docs/getting-started/">Getting Started</a>のドキュメントを参照ください。<br>それでは、Stravaから認証コードを取得する方法を説明します。</p><ul><li>Getting StartedのD. How to AuthenticateからURLは次に定義されている。<pre>URL:http://www.strava.com/oauth/authorize?client_id=[REPLACE_WITH_YOUR_CLIENT_ID]&amp;response_type=code&amp;redirect_uri=http://localhost/exchange_token&amp;approval_prompt=force&amp;scope=read&gt;&nbsp;</pre><br>実際のアドレスは、https://www.strava.com/oauth/mobile/authorizeに置き換えます。</li><li>パラメータの詳細は、<a href="https://developers.strava.com/docs/authentication/#detailsaboutrequestingaccess">Details About Requesting Access</a>を参照ください。</li><li>[REPLACE_WITH_YOUR_CLIENT_ID]は、本アプリの<b>使い方</b>の<b>はじめに</b>で取得した<b>クライアントID</b>を設定します。</li><li>response_typeは、"code"を設定することで、認証コードを要求します。</li><li>redirect_uriは、認証コードを返送先を指定するもので、"http://localhost"を設定します。</li><li>approval_promptは、"force"か"auto"ですが、"auto"を設定します。</li><li>scopeは、"activity:read_all"を設定して問題ありません。</li></ul><p>このURLを元に、startActivityを起動します。</p><p>&nbsp;</p><pre>&nbsp; &nbsp; val intentUri = "https://www.strava.com/oauth/mobile/authorize".toUri()&nbsp; &nbsp; &nbsp; &nbsp; .buildUpon()&nbsp; &nbsp; &nbsp; &nbsp; .appendQueryParameter("client_id", &nbsp; &nbsp; &nbsp; gbv_clientId)&nbsp; &nbsp; &nbsp; &nbsp; .appendQueryParameter("redirect_uri", &nbsp; &nbsp;REDIRECT_URI)&nbsp; &nbsp; &nbsp; &nbsp; .appendQueryParameter("response_type", &nbsp; RESPONSE_TYPE)&nbsp; &nbsp; &nbsp; &nbsp; .appendQueryParameter("approval_prompt", APPROVAL_PROMPT)&nbsp; &nbsp; &nbsp; &nbsp; .appendQueryParameter("scope", &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SCOPE)&nbsp; &nbsp; &nbsp; &nbsp; .build()&nbsp; &nbsp; val intent = Intent(Intent.ACTION_VIEW, intentUri)&nbsp; &nbsp; startActivity(intent)</pre><p>&nbsp;</p><p>Webブラウザで次の画面が表示されます。</p><p><a href="https://stat.ameba.jp/user_images/20251025/09/j2kanjo/b6/e8/p/o0720152015702680769.png"><img alt="" height="887" src="https://stat.ameba.jp/user_images/20251025/09/j2kanjo/b6/e8/p/o0720152015702680769.png" width="420"></a></p><p>&nbsp;</p><p>このStravaの画面に従って、認証コードを取得します。 詳しくは、本アプリの<b>使い方</b>の<b>認証コードの取得</b>を参照してください。</p><p>次にStravaからアクセストークンを取得する方法を説明します。</p><p>&nbsp;</p><h3 id="7cte">アクセストークンを取得する</h3><p>Stravaからアクティビティのデータを取得するには、Strava APIを利用してStravaのホームページから情報を取得する必要があります。<br>本アプリでは、Retrofitを使ったHTTP通信を行い、そのレスポンスでデータを取得しています。 Retrofitは、HTTPクライアント通信ができるライブラリで、使用できるHTTPメソッドには、GET、POST、PUT、PATCH、DELETE、OPTIONS、HEADがあります。 Retrofitでは、使用するAPIをインターフェースとアノテーションにて定義します。 Retrofitの実態は、OkHttpのラッパーであり、OkHttpClientを使用して機能を拡張することができます。</p><ul><li>アプリをインターネットに接続する許可を与えるため、AndroidManifest.xmlに以下のタグを追加します。<pre>&lt;uses-permission android:name="android.permission.INTERNET"/&gt;</pre></li><li>build.gradle.ktdにOkHttpモジュールへの参照を追記します。<pre>implementation(libs.okhttp)</pre></li><li>Tokenの取得には、非同期通信（enqueue）を使います。<pre>val client = OkHttpClient()val request = Request.Builder()&nbsp; &nbsp; .url("https://www.strava.com/api/v3/oauth/token")&nbsp; &nbsp; .post(formBody)&nbsp; &nbsp; .header("Content-Type", "application/x-www-form-urlencoded")&nbsp; &nbsp; .build()try {&nbsp; &nbsp; val call = client.newCall(request)&nbsp; &nbsp; call.enqueue(object : Callback {&nbsp; &nbsp; &nbsp; &nbsp; override fun onFailure(call: Call, ex: IOException) {}&nbsp; &nbsp; &nbsp; &nbsp; @RequiresApi(Build.VERSION_CODES.O)&nbsp; &nbsp; &nbsp; &nbsp; override fun onResponse(call: Call, response: Response) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; val jsonData = response.body!!.string()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (!response.isSuccessful) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 受信エラー処理&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // JSONによるデータ抽出処理&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; })} catch (ex: Exception) {&nbsp; &nbsp; // 例外処理}</pre>&nbsp;</li><li>取得したデータは、JSONによって処理し抽出します。<br>例えば、Tokenを処理する場合は、次のようにプロファイルを定義します。<pre>data class TokenProfile(&nbsp; &nbsp; @SerializedName("token_type") &nbsp; &nbsp;var tokenType: String,&nbsp; &nbsp; @SerializedName("expires_at") &nbsp; &nbsp;var expiresAt: Int,&nbsp; &nbsp; @SerializedName("expires_in") &nbsp; &nbsp;var expiresIn: Int,&nbsp; &nbsp; @SerializedName("refresh_token") var refreshToken: String,&nbsp; &nbsp; @SerializedName("access_token") &nbsp;var accessToken: String,&nbsp; &nbsp; @SerializedName("athlete") &nbsp; &nbsp; &nbsp; var athlete: TokenAthlete?)   </pre>これを使って、次のコードでデータを抽出します。<pre>var profile = Gson().fromJson(jsonData, TokenProfile::class.java)</pre>例えば、アクセストークンは、profile.accessTokenを使ってデータを取得できます。</li></ul><h3 id="b81x">アクティビティデータを取得する</h3><ul><li>走行データ等のアクティビティのデータの取得には、同期通信（execute）を使います。<br>これは、これは大量のデータを分割受信し、データを加工する処理を繰り返し行うようにするためです。<br>例えば、Strava APIの<a href="https://developers.strava.com/docs/reference/#api-Activities-getLoggedInAthleteActivities" rel="noopener noreferrer" target="_blank">List Athlete Activities</a>を使ってデータを取得する場合は<pre>val stravaUri = "https://www.strava.com/api/v3/athlete/activities".toUri()&nbsp; &nbsp; .buildUpon()&nbsp; &nbsp; .appendQueryParameter("page", pageNo)&nbsp; &nbsp; .appendQueryParameter("per_page", noOfPage)&nbsp; &nbsp; .build()val request = Request.Builder()&nbsp; &nbsp; .url(stravaUri.toString())&nbsp; &nbsp; .header("Authorization", "Bearer $gbv_accessToken")&nbsp; &nbsp; .build()responseData = ""try {&nbsp; &nbsp; runBlocking {&nbsp; &nbsp; &nbsp; &nbsp; val response = httpGET(request).await()&nbsp; &nbsp; &nbsp; &nbsp; if (response!!.isSuccessful) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; responseData = response.body!!.string()&nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 受信エラー処理&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }} catch (ex: Exception) {&nbsp; &nbsp; // 例外処理}</pre></li><li>responseDataにpageNoに該当するページのnoOfPageに相当するデータが格納されます。<br>これを全ページ分繰り返して、全データを取得します。取得したデータは、JSONを使ってデータを抽出します。</li></ul><h3 id="lxzu">Vol.2へ</h3></div><p><a href="https://ameblo.jp/j2kanjo/entry-12950231372.html" rel="noopener noreferrer" target="_blank">Strava APIを使ったアンドロイドスマホアプリを作る Vol.2</a></p></article>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12940108652.html</link>
<pubDate>Wed, 22 Oct 2025 16:57:31 +0900</pubDate>
</item>
<item>
<title>Fitbitスマートウォッチの文字盤を自作するーシナリオ2</title>
<description>
<![CDATA[ <p>作成中</p>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12696015348.html</link>
<pubDate>Sat, 04 Sep 2021 14:19:18 +0900</pubDate>
</item>
<item>
<title>Fitbitスマートウォッチの文字盤を自作するーシナリオ1</title>
<description>
<![CDATA[ <p>Fitbitのスマートウォッチは、様々な時計の文字盤が提供されていますよね。</p><p>無料の文字盤も沢山あり、どれを選んで良いか結構迷います。</p><p>&nbsp;</p><p>でも中々これを使い続けようと思うようなものが無くて、ひょっとしたら自分でも作れるのかなと思って調べてみました。</p><p>&nbsp;</p><p>Fitbitのサイト（<a href="https://www.fitbit.com/global/jp/home">Fitbit オフィシャルサイト</a>）を覗いてみると、あったあった、開発者向け（<a href="https://dev.fitbit.com/">developer</a>）というリンクがありました。</p><p><a href="https://stat.ameba.jp/user_images/20210902/14/j2kanjo/d7/b4/j/o0634045114995310742.jpg"><img alt="" height="299" src="https://stat.ameba.jp/user_images/20210902/14/j2kanjo/d7/b4/j/o0634045114995310742.jpg" width="420"></a></p><p>&nbsp;</p><p>全文英語ですが、ここで文字盤はおろかアプリも自作できるようです。</p><p><a href="https://stat.ameba.jp/user_images/20210902/14/j2kanjo/db/4d/j/o0927041614995311959.jpg"><img alt="" height="188" src="https://stat.ameba.jp/user_images/20210902/14/j2kanjo/db/4d/j/o0927041614995311959.jpg" width="420"></a></p><p>&nbsp;</p><p>早速やってみましょう。</p><p>&nbsp;</p><p>私が持っているFitbitスマートウォッチはVersa 2です。これ以降の説明はVersa 2になります。</p><p>&nbsp;</p><p>事前準備として、Fitbitスマートウォッチの設定で使用したスマフォでのアカウントが必要です。</p><p>私は、Googleのアカウントを利用しました。</p><p>&nbsp;</p><p>開発者向けのサイト（<a href="https://dev.fitbit.com/">developer</a>）の<a href="https://studio.fitbit.com/">Studio</a>をクリックし、<a href="https://studio.fitbit.com/">Fitbit Studio</a>に移動。</p><p><a href="https://stat.ameba.jp/user_images/20210902/14/j2kanjo/99/70/j/o0515042014995313480.jpg"><img alt="" contenteditable="inherit" height="343" src="https://stat.ameba.jp/user_images/20210902/14/j2kanjo/99/70/j/o0515042014995313480.jpg" width="420"></a></p><p>&nbsp;</p><p><a href="https://accounts.fitbit.com/login?targetUrl=https%3A%2F%2Fstudio.fitbit.com%2Fprojects">Start</a>をクリックして、Continue with Googleで自分のGoogleアカウントでログイン。</p><p>&nbsp;</p><p>New Projectをクリックする。</p><p><a href="https://stat.ameba.jp/user_images/20210902/16/j2kanjo/b9/a0/j/o0817078114995351381.jpg"><img alt="" height="401" src="https://stat.ameba.jp/user_images/20210902/16/j2kanjo/b9/a0/j/o0817078114995351381.jpg" width="420"></a></p><p>&nbsp;</p><p>Nameに適当な名前を入力し、Digital Clockを選択し、Createボタンをクリックする。</p><div><a href="https://stat.ameba.jp/user_images/20210902/15/j2kanjo/16/f6/j/o0961069714995348323.jpg"><img alt="" contenteditable="inherit" height="305" src="https://stat.ameba.jp/user_images/20210902/15/j2kanjo/16/f6/j/o0961069714995348323.jpg" width="420"></a></div><p>&nbsp;</p><p>左のファイルリストからpackage.jsonをクリックし、SDK VersionでVersion 4.3を選択し、次いでBuild TargetsでVersa 2を選択する。</p><p><a href="https://stat.ameba.jp/user_images/20210909/11/j2kanjo/48/0a/j/o0964060914998420657.jpg"><img alt="" height="265" src="https://stat.ameba.jp/user_images/20210909/11/j2kanjo/48/0a/j/o0964060914998420657.jpg" width="420"></a></p><p>&nbsp;</p><p>次に左のファイルリストのresourcesフォルダ下のindex.viewをindex.guiに、widget.defsをwidgets.guiにファイル名を変更します。</p><p><a href="https://stat.ameba.jp/user_images/20210909/11/j2kanjo/3e/32/j/o1003063614998423713.jpg"><img alt="" height="266" src="https://stat.ameba.jp/user_images/20210909/11/j2kanjo/3e/32/j/o1003063614998423713.jpg" width="420"></a></p><p>&nbsp;</p><p>更に左のファイルリスト上で右クリックのメニューからCreate directoryでcompanionとsettingsの二つのディレクトリを作成します。更にその下にそれぞれindex.jsとindex.jsxというファイルを作成します。</p><p><a href="https://stat.ameba.jp/user_images/20210904/12/j2kanjo/b0/43/j/o0990062914996125337.jpg"><img alt="" height="267" src="https://stat.ameba.jp/user_images/20210904/12/j2kanjo/b0/43/j/o0990062914996125337.jpg" width="420"></a></p><p>&nbsp;</p><p>companion/inde.jsの例</p><blockquote><h4><span style="font-size:0.83em;">import { me as companion } from "companion";<br><br>if (!companion.permissions.granted("run_background")) {<br>&nbsp; console.warn("We're not allowed to access to run in the background!");<br>}<br><br>const MILLISECONDS_PER_MINUTE = 1000 * 60;<br><br>// Tell the Companion to wake after 30 minutes<br>companion.wakeInterval = 30 * MILLISECONDS_PER_MINUTE;<br><br>// Listen for the event<br>companion.addEventListener("wakeinterval", doThis);<br><br>// Event happens if the companion is launched and has been asleep<br>if (companion.launchReasons.wokenUp) {<br>&nbsp; doThis();<br>}<br><br>function doThis() {<br>&nbsp; console.log("Wake interval happened!");<br>}</span></h4></blockquote><p>settings/index.jsxの例</p><blockquote><h4><span style="font-size:0.83em;"><code>function HelloWorld(props) {<br>&nbsp; return (<br>&nbsp;&nbsp;&nbsp; &lt;Page&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Section<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title={&lt;Text bold align="center"&gt;Demo Settings&lt;/Text&gt;}&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Toggle<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; settingsKey="toggle"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; label="Toggle Switch"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ColorSelect<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; settingsKey="color"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colors={[<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {color: 'tomato'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {color: 'sandybrown'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {color: 'gold'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {color: 'aquamarine'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {color: 'deepskyblue'},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {color: 'plum'}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Section&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/Page&gt;<br>&nbsp; );<br>}</code></span></h4><h4>registerSettingsPage(HelloWorld);</h4></blockquote><p>&nbsp;</p><p>次にSimulatorの設定を行います。</p><p>MenuのSelect Phone/Select Deviceをクリックします。</p><p><a href="https://stat.ameba.jp/user_images/20210902/16/j2kanjo/31/83/j/o0881052214995358272.jpg"><img alt="" height="249" src="https://stat.ameba.jp/user_images/20210902/16/j2kanjo/31/83/j/o0881052214995358272.jpg" width="420"></a></p><p>&nbsp;</p><p>Download Fitbit OS Simulatorをクリックする。</p><p>Simulatorのアプリがダウンロードされるので、これをインストールする。</p><p><a href="https://stat.ameba.jp/user_images/20210903/09/j2kanjo/0e/fc/p/o0073008814995648986.png"><img alt="" height="88" src="https://stat.ameba.jp/user_images/20210903/09/j2kanjo/0e/fc/p/o0073008814995648986.png" width="73"></a></p><p>&nbsp;</p><p>Fitbit OS Simulatorを起動します。</p><p><a href="https://stat.ameba.jp/user_images/20210903/10/j2kanjo/4a/fe/p/o1021064914995653996.png"><img alt="" height="267" src="https://stat.ameba.jp/user_images/20210903/10/j2kanjo/4a/fe/p/o1021064914995653996.png" width="420"></a></p><p>&nbsp;</p><p>SimulatorのMenuのSettingsを選択し、Device TypeをVersa 2 miraに設定します。</p><p><a href="https://stat.ameba.jp/user_images/20210904/13/j2kanjo/f8/7f/p/o1022064914996165852.png"><img alt="" height="267" src="https://stat.ameba.jp/user_images/20210904/13/j2kanjo/f8/7f/p/o1022064914996165852.png" width="420"></a></p><p>&nbsp;</p><p>Fitbit OS Simulatorを起動すると、Fitbit StudioのMenunoのPhonesにSimulator、DevicesにVersa 2 Simulatorが現れます。<a href="https://stat.ameba.jp/user_images/20210903/10/j2kanjo/6e/60/j/o0964061114995652051.jpg"><img alt="" height="266" src="https://stat.ameba.jp/user_images/20210903/10/j2kanjo/6e/60/j/o0964061114995652051.jpg" width="420"></a></p><p>&nbsp;</p><p>それぞれを選択すると、ステータスがConnectedになります。</p><p><a href="https://stat.ameba.jp/user_images/20210903/10/j2kanjo/15/0f/j/o0964061314995655096.jpg"><img alt="" height="267" src="https://stat.ameba.jp/user_images/20210903/10/j2kanjo/15/0f/j/o0964061314995655096.jpg" width="420"></a></p><p>&nbsp;</p><p>次にMenuのRunボタンをクリックすると、Buildに続いてSimulatorへのインストールを行い、文字盤をシミュレーションすることが出来ます。</p><p><a href="https://stat.ameba.jp/user_images/20210904/14/j2kanjo/7c/3a/p/o1020064614996167938.png"><img alt="" height="266" src="https://stat.ameba.jp/user_images/20210904/14/j2kanjo/7c/3a/p/o1020064614996167938.png" width="420"></a></p><p>&nbsp;</p><p>同時にsettings/index.jsxで指定したオプション用の設定画面が表示されます。</p><p><a href="https://stat.ameba.jp/user_images/20210904/14/j2kanjo/5c/69/p/o0392072214996167964.png"><img alt="" height="722" src="https://stat.ameba.jp/user_images/20210904/14/j2kanjo/5c/69/p/o0392072214996167964.png" width="392"></a></p><p>&nbsp;</p><p>以上で、<a href="https://studio.fitbit.com/">Fitbit Studio</a>のDigital ClockのTemprateを使った基本動作の確認をすることが出来ました。</p><p>次は、これを元にオリジナルの文字盤を組み込んでいきたいと思います。</p><p>&nbsp;</p><p><a href="https://ameblo.jp/j2kanjo/entry-12696015348.html" rel="noopener noreferrer" target="_blank">Fitbitスマートウォッチの文字盤を自作するーシナリオ2</a></p><p>&nbsp;</p><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12695616148.html</link>
<pubDate>Thu, 02 Sep 2021 16:38:39 +0900</pubDate>
</item>
<item>
<title>水海道天満宮</title>
<description>
<![CDATA[ <h2><b>水海道天満宮（みつかいどうてんまんぐう）</b></h2><p>&nbsp;</p><p>所在地　　：<a href="https://www.google.com/maps/d/u/0/viewer?mid=1L7LDKLYQ3A3LJXXspPKzGNsAvD0&amp;ll=36.01618669999999%2C139.98326440000005&amp;z=10" target="_blank">茨城県常総市水海道天満町2487</a></p><p>公式サイト：</p><p>&nbsp;</p><p>&nbsp;</p><p>今回は、自宅から茨城県常総市にある水海道天満宮を目指しました。</p><p>&nbsp;</p><p>北総線沿いの北千葉道路を千葉ニュータウン中央駅近辺で横切って北上し、成田線布佐駅の辺りで利根川沿いのサイクリングロードに乗りました。利根川沿いを西進し常総線の高架下を潜って農道を走り、新利根大橋を渡って利根川を超えました。</p><p>そこから常総ふれあい道路に乗り、ひたすら北上。国道294号に合流して歩道をチョット走って、県道357号に分かれて北上して目的地に到着しました。</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/3b/35/j/o1537086514680273669.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/3b/35/j/o1537086514680273669.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/22/a9/j/o1520085514680274051.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/22/a9/j/o1520085514680274051.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/4a/e3/j/o1520085514680274120.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/4a/e3/j/o1520085514680274120.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/90/9a/j/o1520085514680274183.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/90/9a/j/o1520085514680274183.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/dd/94/j/o1520085514680274237.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/dd/94/j/o1520085514680274237.jpg" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>本殿横に社務所らしき窓口があり、呼び鈴を押すとお孫さんを連れて女性の方が応対してくれました。</p><p>&nbsp;</p><p>お孫さんに邪魔されながら御朱印を書いていただきました。ありがとうございました。</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/3b/52/j/o1332190414680276095.jpg"><img alt="" contenteditable="inherit" height="886" src="https://stat.ameba.jp/user_images/20191217/11/j2kanjo/3b/52/j/o1332190414680276095.jpg" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>本日の社寺巡りはこれでお終いです。</p><p>&nbsp;</p><p>帰りの途中に利根川の河川敷で休憩をしたのですが、そこにボトルを忘れてしまい、いざ水分補給しようと思ったら、ボトルが無いことに気がつきました。</p><p>ボトルは新調したばかりなのですが、今更戻るわけにもいかず、いったん帰宅した後に車で取りに戻りました。結構飛ばして50分くらいかかってしまいました。</p><p>&nbsp;</p><p>&nbsp;</p><p>走行距離は、約108Km。</p><p>&nbsp;</p><p>&nbsp;</p><table><tbody><tr><td><hr><p><a data-rapid_p="3" href="https://collection.blogmura.com/goshuin/ranking.html" rel="nofollow" target="_blank"><img height="31" src="https://collection.blogmura.com/goshuin/img/goshuin88_31.gif" title="https://collection.blogmura.com/goshuin/ranking.html へ" width="88"></a></p><p><font size="2">にほんブログ村</font></p></td></tr></tbody></table><p>&nbsp;</p>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12560307078.html</link>
<pubDate>Sat, 14 Dec 2019 12:00:00 +0900</pubDate>
</item>
<item>
<title>下総国二之宮 玉前神社</title>
<description>
<![CDATA[ <h2><b>下総国二之宮 玉前神社（しもふさのくににのみや たまさきじんじゃ）</b></h2><p>&nbsp;</p><p>所在地　　：<a data-rapid_p="1" href="https://www.google.com/maps/d/u/0/viewer?mid=1L7LDKLYQ3A3LJXXspPKzGNsAvD0&amp;ll=35.7216753338486%2C140.31210050000004&amp;z=10" rel="nofollow" target="_blank">千葉県旭市飯岡2126-1</a></p><p>公式サイト：<a data-rapid_p="2" href="http://www.tamasaki.org/home.htm" rel="nofollow" target="_blank">https://www.tamasakijinja.com/</a></p><p>&nbsp;</p><p>&nbsp;</p><p>今回は、自宅から旭市にある玉前神社を目指しました。</p><p>&nbsp;</p><p>以前伺ったときは不在で御朱印を頂けなかったところで、本日は気候も大分涼しきなってきたので、思い切って再チャレンジしてみました。</p><p>&nbsp;</p><p>多古町まで抜けた後、東総広域農道に乗ってひたすら東進し、国道126号に乗って飯岡を目指しました。</p><p>&nbsp;</p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/c0/26/j/o1536086414631151075.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/c0/26/j/o1536086414631151075.jpg" width="620"></a></p><p>&nbsp;</p><p>本殿は工事中のため．．．</p><p><a href="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/93/1e/j/o1520085514631151400.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/93/1e/j/o1520085514631151400.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/e3/9d/j/o1520085514631151467.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/e3/9d/j/o1520085514631151467.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/fb/77/j/o1520085514631151482.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/fb/77/j/o1520085514631151482.jpg" width="620"></a></p><p>&nbsp;</p><p><a href="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/6e/09/j/o1520085514631151499.jpg"><img alt="" contenteditable="inherit" height="349" src="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/6e/09/j/o1520085514631151499.jpg" width="620"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>久し振りに伺ったのですが、本殿は工事中のため、全体がほとんど見ることは出来ませんでした。</p><p>社務所らしき建物はあるのですが、どうも不在のようで、また空振りかなと思いましたが、工事中の本殿の賽銭箱の前に書き置きの御朱印があることに気がつきました。</p><p><a href="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/e0/09/j/o1332190414631154574.jpg"><img alt="" contenteditable="inherit" height="800" src="https://stat.ameba.jp/user_images/20191104/10/j2kanjo/e0/09/j/o1332190414631154574.jpg" width="560"></a></p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>本日の社寺巡りはこれでお終いです。</p><p>&nbsp;</p><p>御朱印の入手は実に一年ぶりです。</p><p>何度かチャレンジしているのですがすべて空振りで、もう自宅を中心としたロードバイクで行ける範囲での御朱印入手は厳しい状況です。</p><p>&nbsp;</p><p>走行距離は、約111Km。</p><p>&nbsp;</p><p>&nbsp;</p><table><tbody><tr><td><hr><p><a data-rapid_p="3" href="https://collection.blogmura.com/goshuin/ranking.html" rel="nofollow" target="_blank"><img height="31" src="https://collection.blogmura.com/goshuin/img/goshuin88_31.gif" title="https://collection.blogmura.com/goshuin/ranking.html へ" width="88"></a></p><p><font size="2">にほんブログ村</font></p></td></tr></tbody></table>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12542115495.html</link>
<pubDate>Sat, 02 Nov 2019 12:00:00 +0900</pubDate>
</item>
<item>
<title>クー太と紅葉絨毯</title>
<description>
<![CDATA[ <div>近くの公園を散歩中、紅葉絨毯の上で一息入れるクー太。</div><div><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/e5/be/j/o1486083614456517275.jpg" alt="イメージ 1" class="popup_img_1486_836" width="560" height="315"></div><div><br></div><div><br></div><div><table style="font-size:14.544px;width:570px;table-layout:fixed;color:rgb(51, 51, 51);"><tbody><tr><td class="entryTd userDefText" style="margin:0px;padding:0px;border:0px;"><div class="rte cf" style="font-size:13.235px;"><div style="font-size:14.56px;"><hr></div><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><a href="https://dog.blogmura.com/shihtzu/ranking.html" target="_blank" rel="nofollow" class="userDefTextLink" style="font-size:14.56px;"><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/4d/71/g/o0088003114456512027.gif" alt="イメージ 2" class="alignLeft popup_img_88_31" width="88" height="31" title="https://dog.blogmura.com/shihtzu/ranking.html へ"></a></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><font size="2"><span class="Apple-tab-span" style="white-space:pre;">にほん</span><span style="white-space:pre;">ブログ村</span></font></div></div></div></div></div></td></tr></tbody></table></div>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12477399657.html</link>
<pubDate>Wed, 05 Dec 2018 17:19:04 +0900</pubDate>
</item>
<item>
<title>クー太と紅葉</title>
<description>
<![CDATA[ <div>近くの公園の紅葉の美しさにウットリ（？）しているクー太。</div><div><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/8e/3a/j/o1486083614456517260.jpg" alt="イメージ 1" class="popup_img_1486_836" width="560" height="315"></div><div><br></div><div><br></div><div><table style="font-size:14.544px;width:570px;table-layout:fixed;color:rgb(51, 51, 51);"><tbody><tr><td class="entryTd userDefText" style="margin:0px;padding:0px;border:0px;"><div class="rte cf" style="font-size:13.235px;"><div style="font-size:14.56px;"><hr></div><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><a href="https://dog.blogmura.com/shihtzu/ranking.html" target="_blank" rel="nofollow" class="userDefTextLink" style="font-size:14.56px;"><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/4d/71/g/o0088003114456512027.gif" alt="イメージ 2" class="alignLeft popup_img_88_31" width="88" height="31" title="https://dog.blogmura.com/shihtzu/ranking.html へ"></a></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><font size="2"><span class="Apple-tab-span" style="white-space:pre;">にほん</span><span style="white-space:pre;">ブログ村</span></font></div></div></div></div></div></td></tr></tbody></table></div>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12477399650.html</link>
<pubDate>Mon, 03 Dec 2018 15:25:28 +0900</pubDate>
</item>
<item>
<title>クー太が3歳に！</title>
<description>
<![CDATA[ <div>先日クー太が3歳の誕生日を迎えました。<br style=""><br style="">クー太が我が家にやって来てから、もう3年が経つんですね。ホント早いね。<br style=""><br style="">記念写真を撮ったんだけと、どうも本人ヤル気ないみたいで。。。</div><div><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/95/03/j/o1171087814456517243.jpg" alt="イメージ 1" class="popup_img_1171_878" width="560" height="420"></div><div><br></div><div><br></div><div><table style="font-size:14.544px;width:570px;table-layout:fixed;color:rgb(51, 51, 51);"><tbody><tr><td class="entryTd userDefText" style="margin:0px;padding:0px;border:0px;"><div class="rte cf" style="font-size:13.235px;"><div style="font-size:14.56px;"><hr></div><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><a href="https://dog.blogmura.com/shihtzu/ranking.html" target="_blank" rel="nofollow" class="userDefTextLink" style="font-size:14.56px;"><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/4d/71/g/o0088003114456512027.gif" alt="イメージ 2" class="alignLeft popup_img_88_31" width="88" height="31" title="https://dog.blogmura.com/shihtzu/ranking.html へ"></a></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><font size="2"><span class="Apple-tab-span" style="white-space:pre;">にほん</span><span style="white-space:pre;">ブログ村</span></font></div></div></div></div></div></td></tr></tbody></table></div>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12477399645.html</link>
<pubDate>Mon, 03 Dec 2018 15:24:06 +0900</pubDate>
</item>
<item>
<title>クー太のウエアサイズ</title>
<description>
<![CDATA[ <div>一昨年買ったウエアが小さくなったので、クー太用にウエアを新調することに。<br style=""><br style="">さてサイズを測ってみると、背丈34cm、首周り36cm、胴回りは何と50cm超え。<br style="">通常シーズーはMサイズなんですが、サイズ表を見ると、えっ、LLサイズだって！？<br style=""><br style="">体重8.5k超え。<br style="">巨漢シーズーのクー太でした。</div><div><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/bd/45/j/o4032226814456517226.jpg" alt="イメージ 1" class="popup_img_4032_2268" width="560" height="315"></div><div><br></div><div><br></div><div><table style="font-size:14.544px;width:570px;table-layout:fixed;color:rgb(51, 51, 51);"><tbody><tr><td class="entryTd userDefText" style="border:0px;margin:0px;padding:0px;"><div class="rte cf" style="font-size:13.235px;"><div style="font-size:14.56px;"><hr></div><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><div style="font-size:14.56px;"><a href="https://dog.blogmura.com/shihtzu/ranking.html" target="_blank" rel="nofollow" class="userDefTextLink" style="font-size:14.56px;"><img src="https://stat.ameba.jp/user_images/20190610/13/j2kanjo/4d/71/g/o0088003114456512027.gif" alt="イメージ 2" class="alignLeft popup_img_88_31" width="88" height="31" title="https://dog.blogmura.com/shihtzu/ranking.html へ"></a></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><br></div><div style="font-size:14.56px;"><font size="2"><span class="Apple-tab-span" style="white-space:pre;">にほん</span><span style="white-space:pre;">ブログ村</span></font></div></div></div></div></div></td></tr></tbody></table></div>
]]>
</description>
<link>https://ameblo.jp/j2kanjo/entry-12477399639.html</link>
<pubDate>Wed, 14 Nov 2018 19:54:39 +0900</pubDate>
</item>
</channel>
</rss>
