<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>T-Pot</title><link>https://t-pot.me/</link><description>Recent content on T-Pot</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Sat, 18 Jul 2026 16:59:48 +0000</lastBuildDate><atom:link href="https://t-pot.me/index.xml" rel="self" type="application/rss+xml"/><item><title>Prettierにﾁｮｯﾄﾀﾞｹ貢献しました</title><link>https://t-pot.me/posts/tech/contribute-to-prettier/</link><pubDate>Sat, 18 Jul 2026 07:35:40 +0000</pubDate><guid>https://t-pot.me/posts/tech/contribute-to-prettier/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;最近、&lt;a href="https://github.com/htnabe/prettier-plugin-go-template"&gt;@htnabe/prettier-plugin-go-template&lt;/a&gt;というprettierのプラグインを開発しています。&lt;/p&gt;
&lt;p&gt;もともとはNicklasPorさんが作っていた&lt;code&gt;prettier-plugin-go-template&lt;/code&gt;というプラグインがあったのですが、このプラグインが事実上のアーカイブ状態になっていました。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fgithub.com%2fNiklasPor%2fprettier-plugin-go-template"
&gt;&lt;/iframe&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/NiklasPor/prettier-plugin-go-template/issues/123"&gt;関連issue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そこで、&lt;code&gt;prettier-plugin-go-template&lt;/code&gt;の1ユーザーとして、このプラグインを継続的に更新していきたいと思い、上記の通り私のほうでフォークし、リリースしなおしていました。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;npm.js&lt;/code&gt;のほうでは以下の通り確認できるのですが、&lt;code&gt;v0.0.1-rc.1&lt;/code&gt;のリリース時にすでに220ダウンロード程度されているので、既に使っていただけているようです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/@htnabe/prettier-plugin-go-template"&gt;npm.jsの方のページはこちら&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="貢献内容"&gt;貢献内容&lt;/h2&gt;
&lt;p&gt;貢献内容としては本当に小さなものです。&lt;/p&gt;
&lt;p&gt;prettierの&lt;a href="https://prettier.io/docs/plugins/"&gt;プラグインを紹介するページ&lt;/a&gt;があるのですが、このページで公開されていた、前の&lt;code&gt;prettier-plugin-go-template&lt;/code&gt;を&lt;code&gt;@htnabe/prettier-plugin-go-template&lt;/code&gt;に書き換えただけです。&lt;/p&gt;
&lt;p&gt;詳細といえるほどの詳細はありませんが、PRは&lt;a href="https://github.com/prettier/prettier/pull/19665"&gt;こちら&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;マージ後確認しましたが、特に問題なく&lt;code&gt;Community plugin&lt;/code&gt;として載っていました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1784360892/tech/contribute-to-prettier/plugin-screen-shot_mvsjnb.png 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="prettierのpluginページに乗ってる！"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;prettierのpluginページに乗ってる！&lt;/figcaption&gt;&lt;/figure&gt;</description></item><item><title>こうべアグリパークサンセットラン2026走ってきた</title><link>https://t-pot.me/posts/daily/2026-kobe-aglipark-sunset-run/</link><pubDate>Sun, 05 Jul 2026 14:56:13 +0000</pubDate><guid>https://t-pot.me/posts/daily/2026-kobe-aglipark-sunset-run/</guid><description>&lt;p&gt;今年2回目のハーフマラソンを走ってきました。簡単な記録を残しておきます。&lt;/p&gt;
&lt;h2 id="こうべアグリパークサンセットラン2026とは"&gt;こうべアグリパークサンセットラン2026とは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://maps.app.goo.gl/qT6uvbS8YY94K5ST9"&gt;こうべアグリパーク&lt;/a&gt;ってとこが明石の北側にあるのですが、ここでランニングしようぜっていうイベントです。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fkobeagripark.jp%2fevent%2f7-4-%25e3%2582%25b5%25e3%2583%25b3%25e3%2582%25bb%25e3%2583%2583%25e3%2583%2588%25e3%2583%25a9%25e3%2583%25b3-2026%25e9%2596%258b%25e5%2582%25ac%25ef%25bc%2581%2f"
&gt;&lt;/iframe&gt;

&lt;p&gt;1周の長さと走れる距離は以下の通りで、今回は20kmコースで走ってきました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1周1820ｍ
&lt;ul&gt;
&lt;li&gt;1.82キロは赤コース×1周&lt;/li&gt;
&lt;li&gt;5.46キロは赤コース×3周&lt;/li&gt;
&lt;li&gt;9.1キロは赤コース×5周&lt;/li&gt;
&lt;li&gt;20キロは赤コース×11周&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当日の走行記録は以下の通りです。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fstrava.app.link%2fpoeHE3vRw4b"
&gt;&lt;/iframe&gt;

&lt;h3 id="コース概要"&gt;コース概要&lt;/h3&gt;
&lt;p&gt;1周1.8km程度で短めですが、それなりにキツい上りが2か所あります。&lt;/p&gt;
&lt;p&gt;記録を確認したところ、11周で325mの上りだったので1周当たり30m程度の上りがある計算になります。&lt;/p&gt;
&lt;p&gt;個人的にはこの上りが想像以上に辛くて、乳酸が結構溜まり具合的には30km走ったんちゃうかくらい溜まってました。もう少し減量して筋肉も付けてリベンジしたい…&lt;/p&gt;
&lt;p&gt;コース全体的に道幅はそんなに広くないのですが、参加者もめちゃくちゃ多いわけではないのでめちゃくちゃ詰まるとか、そういうのは無かった印象です。&lt;/p&gt;
&lt;h3 id="給水箇所補給食"&gt;給水箇所/補給食&lt;/h3&gt;
&lt;p&gt;ゴール/スタート地点すぐに給水所があります。冷温、常温どちらも水とスポドリがありました。&lt;/p&gt;
&lt;p&gt;飲み水はありますが、補給食はなかったです。そのため、エネルギー補給用のジェルなどは自前で用意する必要がありました。&lt;/p&gt;
&lt;h3 id="参加賞"&gt;参加賞&lt;/h3&gt;
&lt;p&gt;トマト、ナス、キュウリなど、旬の夏野菜をたくさんもらえました。普通においしく頂きました &amp;#x1f345;&lt;/p&gt;
&lt;h2 id="注意点"&gt;注意点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;初心者向けのコースではないので気軽におススメできないかも&lt;/li&gt;
&lt;li&gt;バスで近くまでアクセスできるけど、少し歩いて移動する必要がある
&lt;ul&gt;
&lt;li&gt;走り終わった後、バスが30分に一度くらいの頻度になるので時間調整気を付けて&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;ここ最近忙しかったのもあり全然準備できないまま当日に臨みました。&lt;/p&gt;
&lt;p&gt;結果は2h4min51secとのことで、距離の割にはかなり遅くなってしまいました。考えられる原因は…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;土砂降りの雨&lt;/li&gt;
&lt;li&gt;想像以上にしんどかった上り坂でペース配分分からなくなった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;みたいなところでしょうか。ちなみにこのイベントで使い慣れたシューズについに穴が開き、イヤホンも片方壊れるという災難に襲われました。&lt;/p&gt;
&lt;p&gt;シューズ買い替えて次は10, 11, 12月ごろに2回くらいイベント走りたいなと思ってます &amp;#x1f3c3;&lt;/p&gt;</description></item><item><title>個人ブログでのAIとの付き合い方を考える</title><link>https://t-pot.me/posts/daily/way-of-getting-along-ai/</link><pubDate>Tue, 09 Jun 2026 14:12:18 +0000</pubDate><guid>https://t-pot.me/posts/daily/way-of-getting-along-ai/</guid><description>&lt;p&gt;ここ最近、仕事でも私生活でもAIとの付き合い方について考えることが増えました。&lt;/p&gt;
&lt;p&gt;仕事での付き合い方はいろんな方が書いているので、私生活、特に個人ブログでどうAIと付き合っていくかを考えてました。&lt;/p&gt;
&lt;h2 id="結論"&gt;結論&lt;/h2&gt;
&lt;p&gt;現状は凄くシンプルで、個人的に書いているブログには基本AIの思考は挟まないようにしようと思っています。&lt;/p&gt;
&lt;p&gt;理由はいくつかあるのですが、一番の理由は俗に言うAI Slopを作り出して、ネットの海を汚したくないなぁというのと、AIが自分の思っていることを変にかさましして、カルピスの10倍希釈くらいうっすい話を展開するやり方が嫌いだからです。&lt;/p&gt;
&lt;p&gt;いつかAIもそのあたりの「うっすら嫌われてる」書き方を理解して、より生の人間らしく話したり、書いたりする未来が来ると思いますが、それは別に私が自分で書くのを辞める理由にはならないので、現状の方針は変わらないかなと思います。&lt;/p&gt;
&lt;p&gt;このブログもなんだかんだ7年目くらいですが、安定して毎月1万PVくらい見られているみたいで、自分でもよくわからない需要があるみたいです。&lt;/p&gt;
&lt;h2 id="aiにこのブログの内容を学ばせるかどうか"&gt;AIにこのブログの内容を学ばせるかどうか&lt;/h2&gt;
&lt;p&gt;現状、このブログの内容をAI学習には使わせない方針で考えています。&lt;/p&gt;
&lt;p&gt;理由は簡単で、別にこのブログのことや自分の考えを積極的に世に出したいとは思わないからです。&lt;/p&gt;
&lt;p&gt;もともとこのブログを始めたのも、だれかの技術的な学習の支えになれば良いなと思って始めたのであって「困ったときに検索したら出てくる」くらいのひっそりとしたサイトとしか考えてなかったです。&lt;/p&gt;
&lt;p&gt;なぜか知りませんが、そんなに記事数が多いわけでもないのに毎月1万pvくらい見られ続けてるこのサイトですが、そんな困ったときの助けになる（積極的にいろんな人に読んでほしいわけではない）存在であり続けたいなと思っています。&lt;/p&gt;
&lt;p&gt;以下URLを確認してもらってもわかりますが、主要なAIサービスのクローラーや、スクレイピング系のエージェントは全て拒否しています。Claudflareの設定でも拒否しています。&lt;/p&gt;
&lt;p&gt;t-pot.me/robots.txt&lt;/p&gt;
&lt;p&gt;AIが今よりもっと隆盛しきったころでもこのサイトがそんな存在として残ってると嬉しいです。&lt;/p&gt;</description></item><item><title>ここ最近のランニングと体重変化について</title><link>https://t-pot.me/posts/daily/running-progress/</link><pubDate>Mon, 08 Jun 2026 13:05:54 +0000</pubDate><guid>https://t-pot.me/posts/daily/running-progress/</guid><description>&lt;p&gt;ちょうど先週定期健康診断に行ってたのですが、うれしいことに去年から2kgほど減量していました。&lt;/p&gt;
&lt;p&gt;昨年6月の健康診断で78.0kg、肥満度1の診察を受けて、なぜか再検査の連絡まで受けたのですが、それがショック過ぎてちょっとしたダイエットを始めました（食事制限一切なしで、運動だけで痩せようとしてます）。&lt;/p&gt;
&lt;p&gt;一時期、転職活動前後のストレスで10kgぐらい増加して78.0kg（最大82kgぐらい）まで太ったのですが、結果76.0kgまでは減らせました。&lt;/p&gt;
&lt;h2 id="普段使ってるサービス"&gt;普段使ってるサービス&lt;/h2&gt;
&lt;p&gt;運動と体重の記録には↓のサービスを使っています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;運動：Strava/Garmin&lt;/li&gt;
&lt;li&gt;体重: Withings&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;StravaもGarminも無課金勢なのですが、ランニングについては無料でもグラフ作成できるくらいのデータは取得できます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1780758187/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/%E8%B7%9D%E9%9B%A2_%E3%81%A8_%E7%B7%8F%E8%B7%9D%E9%9B%A2_KM_d053sc.svg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ガーミンの記録をグラフ化"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;もともとランニングよりもサイクリングメインでやってたので、2026年1月まではせいぜい8km/1回の頻度でしたが、ハーフマラソンに出始めてからは15km/1回とかでも走るようになりました。&lt;/p&gt;
&lt;p&gt;来月もハーフマラソン走るので楽しみです &amp;#x2728;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Withings&lt;/code&gt;で体重を記録しているのですが、こちらはこちらでwebアプリ上で体重などの推移を確認できます（↓は体重と体脂肪）。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1780926022/daily/%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0/healthmate.withings.com_37544061_weight_graph_cmzsvv.png 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="上が体重、下が体脂肪"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;ちょっと見づらいのが残念ですが、去年5月ごろにピーク(82-85kgくらい)を迎え、その後徐々に落ちていっているみたいです。&lt;/p&gt;</description></item><item><title>Webアプリのフォントの実践的な選定</title><link>https://t-pot.me/posts/tech/choosing-fonts-for-web-practical-guide/</link><pubDate>Sun, 22 Feb 2026 10:00:00 +0900</pubDate><guid>https://t-pot.me/posts/tech/choosing-fonts-for-web-practical-guide/</guid><description>&lt;p&gt;フォント設定はWebデザインにおいて可読性・雰囲気・ユーザーの信頼感に大きく影響するのですが、意外に見落とされがちな技術要素でもあるかと思います。今回、システムフォントからGoogle Fontsまで、Webサイトのフォントを選ぶときのポイントを備忘録的に記載しておこうと思います。&lt;/p&gt;
&lt;h2 id="システムフォント-コストゼロの選択肢"&gt;システムフォント: コストゼロの選択肢&lt;/h2&gt;
&lt;p&gt;システムフォントは、各OSにあらかじめインストールされているフォントです（例外あるかもですが）。これを使うと次のようなメリットがあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;フォント取得のためのネットワークリクエストが不要になり、ページ表示が早くなる&lt;/li&gt;
&lt;li&gt;フォント読み込みによるレイアウトシフト防止&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;代表的なシステムフォントスタックは次の通りです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;font-family&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Hiragino Sans&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Hiragino Kaku Gothic ProN&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* macOS / iOS */&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Yu Gothic UI&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Yu Gothic&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Meiryo&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Windows */&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Noto Sans CJK JP&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;/* Linux / Android */&lt;/span&gt; &lt;span style="color:#f92672"&gt;system-ui&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;-apple-system&lt;/span&gt;&lt;span style="color:#f92672"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;sans-serif&lt;/span&gt;&lt;span style="color:#f92672"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一方で、デザイン上の個性を出しにくいという問題点もあります。&lt;/p&gt;
&lt;h2 id="google-fonts-豊富な選択肢と簡単な導入"&gt;Google Fonts: 豊富な選択肢と簡単な導入&lt;/h2&gt;
&lt;p&gt;Google Fontsには1,500以上の無料フォントファミリーがあります。次のように&lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;に&lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt;タグを追加するだけで利用できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;link&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;href&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&amp;amp;display=swap&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;rel&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;preload stylesheet&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;as&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;style&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;display=swap&lt;/code&gt;を付けることで、Webフォントの読み込み中もテキストを非表示にせず、読み込み完了まではシステムフォントで表示できます。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;メリット:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;フォントの選択肢が非常に多い&lt;/li&gt;
&lt;li&gt;CDN配信で比較的高いパフォーマンス&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="多言語サイトでの考慮点"&gt;多言語サイトでの考慮点&lt;/h2&gt;
&lt;p&gt;和文と欧文の両方を扱うサイトでは、両方の文字体系に十分対応したフォントを選ぶ必要があります。&lt;/p&gt;





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;用途&lt;/th&gt;
 &lt;th&gt;推奨フォント&lt;/th&gt;
 &lt;th&gt;補足&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;本文（ラテン文字）&lt;/td&gt;
 &lt;td&gt;Noto Sans&lt;/td&gt;
 &lt;td&gt;クセが少なく読みやすい&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;本文（日本語）&lt;/td&gt;
 &lt;td&gt;Noto Sans JP&lt;/td&gt;
 &lt;td&gt;Noto Sansと見た目の相性が良い&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;見出し / ディスプレイ&lt;/td&gt;
 &lt;td&gt;Orbitron, Raleway&lt;/td&gt;
 &lt;td&gt;ラテン文字向けかつスタイリッシュなデザイン&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;Noto Sans JPは、1つのフォントファイルでラテン文字と日本語グリフの両方をカバーできるため、レンダリングの挙動を把握しやすく、実運用でも扱いやすい選択肢です。&lt;/p&gt;</description></item><item><title>真冬の海岸を散歩</title><link>https://t-pot.me/posts/gallery/2026-02-02/</link><pubDate>Mon, 02 Feb 2026 20:52:25 +0900</pubDate><guid>https://t-pot.me/posts/gallery/2026-02-02/</guid><description>&lt;p&gt;最近買ったカメラを持って散歩しつついろんな場所の写真を撮るのにハマってる。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300015_buq0mn.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046958/gallery/P1300015_buq0mn.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046958/gallery/P1300015_buq0mn.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046958/gallery/P1300015_buq0mn.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300015_buq0mn.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046958/gallery/P1300015_buq0mn.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046958/gallery/P1300015_buq0mn.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046958/gallery/P1300015_buq0mn.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="よく通る海岸の道"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;須磨海浜公園行くと必ず通る道&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300040_rww7tm.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046958/gallery/P1300040_rww7tm.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046958/gallery/P1300040_rww7tm.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046958/gallery/P1300040_rww7tm.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300040_rww7tm.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046958/gallery/P1300040_rww7tm.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046958/gallery/P1300040_rww7tm.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046958/gallery/P1300040_rww7tm.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="明石海峡大橋も見える"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;明石海峡大橋も見える&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;遠近感のある写真だと、スマホで撮るより綺麗。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300037_jq4edk.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046960/gallery/P1300037_jq4edk.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046960/gallery/P1300037_jq4edk.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046960/gallery/P1300037_jq4edk.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300037_jq4edk.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046960/gallery/P1300037_jq4edk.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046960/gallery/P1300037_jq4edk.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046960/gallery/P1300037_jq4edk.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ギャラリー写真3"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300004_ipvurq.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046958/gallery/P1300004_ipvurq.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046958/gallery/P1300004_ipvurq.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046958/gallery/P1300004_ipvurq.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300004_ipvurq.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046958/gallery/P1300004_ipvurq.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046958/gallery/P1300004_ipvurq.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046958/gallery/P1300004_ipvurq.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300007_bis6sd.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046958/gallery/P1300007_bis6sd.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046958/gallery/P1300007_bis6sd.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046958/gallery/P1300007_bis6sd.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300007_bis6sd.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046958/gallery/P1300007_bis6sd.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046958/gallery/P1300007_bis6sd.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046958/gallery/P1300007_bis6sd.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="夏空っぽいけど実際は5℃の寒空"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;ぱっと見夏空っぽいけど実際は5℃の寒空&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300044_vzb0zs.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046958/gallery/P1300044_vzb0zs.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046958/gallery/P1300044_vzb0zs.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046958/gallery/P1300044_vzb0zs.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046958/gallery/P1300044_vzb0zs.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046958/gallery/P1300044_vzb0zs.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046958/gallery/P1300044_vzb0zs.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046958/gallery/P1300044_vzb0zs.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="天気はいい"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;天気はいい&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046959/gallery/P1300028_t5xgnn.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046959/gallery/P1300028_t5xgnn.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046959/gallery/P1300028_t5xgnn.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046959/gallery/P1300028_t5xgnn.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046959/gallery/P1300028_t5xgnn.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046959/gallery/P1300028_t5xgnn.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046959/gallery/P1300028_t5xgnn.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046959/gallery/P1300028_t5xgnn.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="こんな寒くてもヤシの木は元気そう"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;こんな寒くてもヤシの木は元気そう&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300036_wd3ujb.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046960/gallery/P1300036_wd3ujb.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046960/gallery/P1300036_wd3ujb.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046960/gallery/P1300036_wd3ujb.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300036_wd3ujb.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046960/gallery/P1300036_wd3ujb.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046960/gallery/P1300036_wd3ujb.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046960/gallery/P1300036_wd3ujb.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ギャラリー写真8"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300021_gqgolx.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046960/gallery/P1300021_gqgolx.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046960/gallery/P1300021_gqgolx.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046960/gallery/P1300021_gqgolx.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300021_gqgolx.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046960/gallery/P1300021_gqgolx.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046960/gallery/P1300021_gqgolx.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046960/gallery/P1300021_gqgolx.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ギャラリー写真9"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;めちゃくちゃ遠くに船&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300001_zpsddz.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046960/gallery/P1300001_zpsddz.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046960/gallery/P1300001_zpsddz.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046960/gallery/P1300001_zpsddz.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046960/gallery/P1300001_zpsddz.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046960/gallery/P1300001_zpsddz.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046960/gallery/P1300001_zpsddz.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046960/gallery/P1300001_zpsddz.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ギャラリー写真10"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046961/gallery/P1300020_wxj9p0.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1770046961/gallery/P1300020_wxj9p0.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1770046961/gallery/P1300020_wxj9p0.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1770046961/gallery/P1300020_wxj9p0.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1770046961/gallery/P1300020_wxj9p0.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1770046961/gallery/P1300020_wxj9p0.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1770046961/gallery/P1300020_wxj9p0.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1770046961/gallery/P1300020_wxj9p0.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ギャラリー写真11"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;須磨海浜公園のロゴがめちゃくちゃオシャレですこ。&lt;/p&gt;</description></item><item><title>PLがおもんないので、楽しくやるための考え方を考えた</title><link>https://t-pot.me/posts/tech/pl-muzui/</link><pubDate>Fri, 16 Jan 2026 13:41:04 +0000</pubDate><guid>https://t-pot.me/posts/tech/pl-muzui/</guid><description>&lt;p&gt;プロジェクトリーダー(PL)をやるようになって、色々と分かってきたことがあるので書いておこうと思います。プロジェクトが無事終わるまで我慢して続ける、という精神論以外の向き合い方について考えたいなと。&lt;/p&gt;
&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;次のような構成の&lt;strong&gt;架空の&lt;/strong&gt;請負プロジェクトを考えます。あくまで&lt;strong&gt;架空&lt;/strong&gt;。どこかで見たことがあっても他人の空似です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プロジェクト規模間：半年～1年&lt;/li&gt;
&lt;li&gt;チーム構成
&lt;ul&gt;
&lt;li&gt;経験のあるPM的なポジションの先輩社員が1人&lt;/li&gt;
&lt;li&gt;エンジニアは正社員少数で、関係会社のパートナー社員が数人
&lt;ul&gt;
&lt;li&gt;パートナー社員のレベル感はまちまち&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;こんな感じのチームのリーダーをやるとする
&lt;ul&gt;
&lt;li&gt;もちろんコードも書くし、設計もする&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;お客さんはIT知識のある方もいればない方もいる。要するにランダム。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="私の経験"&gt;私の経験&lt;/h2&gt;
&lt;p&gt;PL経験は数か月、FE技術についてはある程度理解できるし、初めて触る技術も調べつつベストプラクティスに沿って実装できる。今まで1人プロジェクトが多かったが、ここ半年でチームで働く機会が滅茶苦茶増えた。&lt;/p&gt;
&lt;p&gt;ちなみにプロジェクトリーダー・プロジェクトマネージャーに関する書籍は読んだことがない。理由はそんなに早くこのポジションを任されると思ってなかったから。&lt;/p&gt;
&lt;p&gt;本来は、一度名著的なものを呼んだほうが良いとは思ってる。いい感じの本があったら教えてえろい人。&lt;/p&gt;
&lt;h2 id="プロジェクトリーダーをやってみて"&gt;プロジェクトリーダーをやってみて&lt;/h2&gt;
&lt;p&gt;一言でいうと、面白さを感じられていない。最大かつ唯一の理由は、成功体験を継続的に得られないからです。あるいは成功を感じるための知識・経験をまだまだ蓄えられていないから、とも言えるかもしれません。&lt;/p&gt;
&lt;h3 id="幸せってやりがいって何だっけ"&gt;幸せって、やりがいって何だっけ&lt;/h3&gt;
&lt;p&gt;そもそも、幸せは、ある目標を達成する際の継続的な成長、あるいは目標に向かって自分自身が活躍できている・貢献できている、と感じること自体にあるのではないかと思っています。&lt;/p&gt;
&lt;p&gt;また、幸せとやりがいは完全に等価ではありませんが、角度が小さいときのΘとsinΘくらいに相似したとしましょう。そのやりがいの過程に面白さがあるとすれば、どう考えても、継続的な成功体験は必須だなと思ってしまいます。&lt;/p&gt;
&lt;h3 id="色々考えるとチームや組織のやり方の話にも展開される"&gt;色々考えるとチームや組織のやり方の話にも展開される&lt;/h3&gt;
&lt;p&gt;これはチームリーダー・マネージャーの方針と合わないとできないことですが、人を（もちろんリーダーも）育てるうえで、継続的な成功体験は重要な要素だと思っています。人月商売だと、比較的単価の高いリーダー・マネージャーの人数を少なくして、単価の低い人材を外部から入れてプロジェクトを回すことが売り上げに直結しますが、それだけを追い求めすぎると、離職率の向上や、恒常的なモチベーションの低下を引き起こしてしまいます。&lt;/p&gt;
&lt;p&gt;少し話がそれますが、&lt;a href="https://blog.cybozu.io/entry/2023/07/26/170000"&gt;Cybozu Inside Out - 開発チーム作成ガイドを公開します&lt;/a&gt;にも似た話が載っているので引用します。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;優れたチームは、一般的に、タスクに関する成果（顧客満足、予算と納期の順守、高い品質etc）と人に関する成果（このチームで働き続けたい、成長できる、幸せだetc）を両立します。重要なのは、これらを両立させるという点です。&lt;/p&gt;
&lt;p&gt;タスクに関する成果を重視しすぎると、燃え尽きや低いモチベーション、高い離職率などの問題が発生します。人に関する成果を重視しすぎると、仲良しのぬるま湯のようなチームになったり、顧客を無視して技術的な課題を探究してばかりのチームになってしまったりします。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ひどく放任主義、あるいはお粗末な仕事をするリーダーやマネージャー（本人の意図がどうであれ）に当たると、こうした継続的な成功体験を味わうことなく、よくわからないプロジェクトによくわからない状態で放り込まれたりするのかなと思っていたりします。&lt;/p&gt;
&lt;h3 id="プログラマ-vs-設計者-vs-リーダー"&gt;プログラマ vs 設計者 vs リーダー&lt;/h3&gt;
&lt;p&gt;次に、プログラマ、あるいは設計者とPLを比較してみると、プログラマ・設計者としては次のような成功体験や成長を感じることができます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自分で書いた/AIに指示して書かせたプログラムが想定通り動いた&lt;/li&gt;
&lt;li&gt;保守性の高いコードやテストを書いて、価値のある機能を実装できた&lt;/li&gt;
&lt;li&gt;要件に基づいて、too muchにならないようなディレクトリ構成で実装できた/提案できた&lt;/li&gt;
&lt;li&gt;最終的に自分たちが作ったソフトウェアを一定数以上のユーザーに使ってもらえて、何らかの問題を解決できた&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;設計からコーディングまででは、プロジェクト全行程でそれぞれ面白さや楽しさがありますが、自分の能力の及ばない難易度の高い（あるいは炎上している）プロジェクトにPLとして入ると、こういう面白さが全くないのがつらいところです。&lt;/p&gt;
&lt;p&gt;プロジェクトが進んでいく途中は、自分がやっていること（施策）が「おそらく正しいだろう」という推測のもと進んでいくのですが、結果がわかるのはプロジェクトが終わった/終わりそうなタイミングになってようやくなので、そもそも成功体験を積みづらいというのはあると思っています。&lt;/p&gt;
&lt;h3 id="ではどうするか"&gt;ではどうするか&lt;/h3&gt;
&lt;p&gt;当事者はいくつか取れる行動があると思っています。&lt;strong&gt;銀の弾丸ではないですが、少なくともプラスチックの弾丸よりは固いと思っています&lt;/strong&gt;。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;PLを引き受ける代わり、その辛さを給料に反映してもらうよう交渉する（超ムズイ）&lt;/li&gt;
&lt;li&gt;PM（先輩社員）や営業/仕事をとってきてもらう人に、自分のレベル感に合う案件を振ってもらうよう依頼する（時の運もあるのでムズイ）&lt;/li&gt;
&lt;li&gt;継続的に成功体験を得るのは難しいので、視点を変え、継続的に失敗を重ねないよう、PMに業務分担を依頼する（比較的簡単）&lt;/li&gt;
&lt;li&gt;「&lt;strong&gt;何が何でも&lt;/strong&gt;」自分より経験や知識のある社員をアサインしてもらい、PLの業務を分担してもらう（時の運もある）&lt;/li&gt;
&lt;li&gt;逆に（というか最善の策は）、PLが仕事しなくても遅延が生まれない/仕事しなくても勝手に遅延をリカバリしてくれるメンバーが集まった少数精鋭部隊に入れてもらうように依頼する（時の運もあるが一番簡単）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;他にもあるかもですが、パッと思いつくところだとこんな感じです。&lt;/p&gt;
&lt;p&gt;要するに、おもんないことにはそれ以上におもろいことをぶつけて相殺するしかないのでは？という話です。&lt;/p&gt;
&lt;h3 id="plもチームメンバーであることを忘れないで"&gt;PLもチームメンバーであることを忘れないで&lt;/h3&gt;
&lt;p&gt;PLの役割は、プロジェクトの遅滞なく、メンバーの無理なくプロジェクトを成功させる（サポートする）ことだと思っています。そして「&lt;strong&gt;無理なく&lt;/strong&gt;」の対象にはもちろん自分自身も含まれることを忘れてはいけないと思います。&lt;/p&gt;
&lt;p&gt;PLがおもんないなら、おもんないことをカバーできるだけのおもろいことをやらせてもらおう。&lt;/p&gt;
&lt;p&gt;そもそも、&lt;strong&gt;おもろいことをやらせてくれない会社・組織終わってんだろ&lt;/strong&gt;の精神で、そういう会社を選ばない/活躍の場を変えるのも手だと思っています（ありがたいことに私の会社は多少やばいけど話を聞いて対処してくれる会社なので良かった）。&lt;/p&gt;
&lt;p&gt;（というか、↑を許してくれないからリーダーをやる人が、あるいはリーダーを任されるくらい優秀な、経験のある社員が残ってくれないんじゃない？知らんけど）&lt;/p&gt;
&lt;h2 id="まとめという名の蛇足"&gt;まとめという名の蛇足&lt;/h2&gt;
&lt;p&gt;そもそもだが、超絶仕事できる開発チーム・プロジェクトにアサインされたらこんなこと考えなくて良いのにね。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;皆がリーダーで、皆が仕事のQCDSを管理して働いてくれるチームで働きたいだけの人生だった。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;p.s. 最近オーイシマサヨシの曲聞きながらランニングしてるんだがめちゃくちゃはかどってる。&lt;/p&gt;</description></item><item><title>【レビュー】Lenovo Tab Plus</title><link>https://t-pot.me/posts/daily/review-lenovo-tab-plus/</link><pubDate>Sun, 30 Nov 2025 05:33:30 +0000</pubDate><guid>https://t-pot.me/posts/daily/review-lenovo-tab-plus/</guid><description>&lt;p&gt;※ 本コンテンツの一部の画像は生成AIツールを使って作成されました。&lt;/p&gt;
&lt;h2 id="rocket-はじめに"&gt;&amp;#x1f680; はじめに&lt;/h2&gt;
&lt;p&gt;プライベートで書籍を読む際や動画を見る際にコンパクトかつ自立するタブレットが欲しいなぁ～と思っていたのですが、Lenovo Tab Plusがほどよいコスパと機能感だったので共有します。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1764487544/daily/Lenovo%20Tab%20Plus/tablet-omote_o8cddr.png 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="Lenovo Tab Plusの前面を表示した図"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;
Lenovo Tab Plus公式ページは&lt;a href="//ck.jp.ap.valuecommerce.com/servlet/referral?sid=3684665&amp;pid=892331463&amp;vc_url=https%3A%2F%2Fwww.lenovo.com%2Fjp%2Fja%2Fp%2Ftablets%2Flenovo-tab-series%2Flenovo-tab-plus%2Flen103l0024%3Fcid%3Djp%3Aaffiliate%3Adsry7f" rel="nofollow"&gt;&lt;img src="//ad.jp.ap.valuecommerce.com/servlet/gifbanner?sid=3684665&amp;pid=892331463" height="1" width="0" border="0"&gt;こちら&lt;/a&gt;です。


詳細なスペックの説明は以下のサイトなどに任せます。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fsimpc.jp%2ftablet%2ftab-plus-review%2f"
&gt;&lt;/iframe&gt;

&lt;p&gt;なお、本機は &lt;code&gt;Android 15&lt;/code&gt; までアップデートが予定されていますが、セキュリティサポートの終了は&lt;code&gt;2028年7月&lt;/code&gt;となっている点にはご注意ください（以下参考）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.lenovo.com/jp/ja/solutions/ht501098-android-upgrade-matrix"&gt;Lenovo Androidアップグレード表（公式）はこちら&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="calendar-4か月使ってみて"&gt;&amp;#x1f4c6; 4か月使ってみて&lt;/h2&gt;
&lt;h3 id="結論"&gt;結論&lt;/h3&gt;
&lt;p&gt;「エンタメ消費用」として割り切るなら、この価格帯では最強格の選択肢だと思います。意外かもしれませんが、処理の重いスマホゲームも設定次第で特に問題なく動きます。&lt;/p&gt;
&lt;p&gt;一方、本体質量は &lt;strong&gt;約650g と重め&lt;/strong&gt;です。通勤電車などで片手持ちしていると角が手に食い込むほか、腕もそれなりに疲れるので、とにかく軽い端末を探している方にはおすすめできないかもしれません。&lt;/p&gt;
&lt;p&gt;バッテリー持ちは&lt;strong&gt;普通&lt;/strong&gt;です。パフォーマンス設定と利用頻度にもよりますが、私は週2, 3回の充電サイクルで使っています。そこらのスマホや一般的なタブレットと比較しても、体感的に大差はありません。&lt;/p&gt;
&lt;h3 id="sound-音響体験"&gt;&amp;#x1f509; 音響体験&lt;/h3&gt;
&lt;p&gt;各種レビューサイトやLenovo公式が強調している通り、音質へのこだわりは相当なものを感じました。JBLスピーカーが8基も搭載されているだけあり、タブレットとは思えない厚みのある音が出ます。&lt;/p&gt;
&lt;p&gt;YouTubeのトーク動画などでは違いを感じにくいかもしれませんが、SpotifyやRadikoで音楽を流すと、一般的なスマホやノートPCとは比べ物にならないほどの臨場感があります。Bluetoothスピーカーを用意せずとも、これ一台で上質なBGM環境が整うのは大きなメリットですね &amp;#x1f4aa;&lt;/p&gt;
&lt;h3 id="tv-2kディスプレイの満足感"&gt;&amp;#x1f4fa; 2Kディスプレイの満足感&lt;/h3&gt;
&lt;p&gt;実売価格を考えると、このクラスで2Kディスプレイ（2000x1200）を搭載しているのも推せるポイントです。&lt;/p&gt;</description></item><item><title>【レビュー】アイリスオーヤマ 食器洗い乾燥機 KISHT-5000-W</title><link>https://t-pot.me/posts/daily/review-dishwasher/</link><pubDate>Sat, 29 Nov 2025 13:25:29 +0000</pubDate><guid>https://t-pot.me/posts/daily/review-dishwasher/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;数か月前に食器洗い乾燥機を買いました。公式の商品ページは下の通りです。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.irisohyama.co.jp%2fproducts%2felectrical-appliances%2fcooking-appliances%2fother-cooking-appliances%2fdishwasher%2fdishwasher%2f"
&gt;&lt;/iframe&gt;



&lt;div data-vc_mylinkbox_id="892328414"&gt;&lt;/div&gt;


&lt;p&gt;私は普段から週1, 2くらいでお弁当を作ったり、日々の料理をしていたのですが、皿洗いが精神的にだいぶ負担だったので買うことにしました。&lt;/p&gt;
&lt;p&gt;ただ、自宅のキッチンがそんなに広くないので（マンション選びミスったなぁ…）現状は使う時だけカウンターに出して、使い終わったらシンク下に収納しています &amp;#x1f63f;&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221436_hxvxae.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221447_vjeuii.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h3 id="簡単スペック"&gt;簡単スペック&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;種類：卓上型 食器洗い乾燥機&lt;/li&gt;
&lt;li&gt;サイズ感：コンパクト（幅x高さx奥行 = 42cm x 44.5cm x 43.5 cm）&lt;/li&gt;
&lt;li&gt;容量の目安：食器数枚＋弁当箱や小さめフライパンが入る程度&lt;/li&gt;
&lt;li&gt;給水方式：内部に水を貯めて動作するタイプで、使うたびに注水が必要&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第一印象"&gt;第一印象&lt;/h2&gt;
&lt;h3 id="実際のサイズ感"&gt;実際のサイズ感&lt;/h3&gt;
&lt;p&gt;奥行(43.5 cm)
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1764479229/daily/%E9%A3%9F%E6%B4%97%E5%99%A8/IMG20251129221827_ofx85d.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>【レビュー】Teskyer ガジェットケース</title><link>https://t-pot.me/posts/daily/review-gadget-box/</link><pubDate>Sat, 29 Nov 2025 11:36:37 +0000</pubDate><guid>https://t-pot.me/posts/daily/review-gadget-box/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;今年からハイブリッドワーク（週3~4リモート）をするようになって使い始めたガジェットケースを紹介します。一旦半年使っての感想となります。&lt;/p&gt;
&lt;h2 id="第一印象"&gt;第一印象&lt;/h2&gt;
&lt;p&gt;一旦、私用と社用のスマホの充電コード、社用スマホ、目薬等々を持ち運びしたいな～と思ってamazonで探して上の方に出てきたやつを選びました。&lt;/p&gt;
&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/B0DNDN1M8C.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/B0DNDN1M8C/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;Teskyer ガジェットケース TC05BK（ブラック Ｍ）
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;サイズ感は商品ページにある通り、縦x横x奥行 = 6.5cm x 14.5 cm x 23cmとなっています。&lt;/p&gt;
&lt;p&gt;社用スマホが小型なおかげで余裕で入ります。&lt;/p&gt;
&lt;p&gt;現在は↓の充電器やスマホ、目薬などを入れています。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1764416906/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202833_wzblm4.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="充電器などを入れた図"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;割とギチギチ&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1764416993/daily/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88%E3%82%B1%E3%83%BC%E3%82%B9/IMG20251129202915_mgoe2a.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="スマホを入れたず"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;スマホは上段のポケットへ&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;サイズ感はこんな感じ。&lt;/p&gt;</description></item><item><title>年末に読むアジャイルサムライ</title><link>https://t-pot.me/posts/daily/agile-samurai/</link><pubDate>Sun, 23 Nov 2025 08:21:11 +0000</pubDate><guid>https://t-pot.me/posts/daily/agile-samurai/</guid><description>&lt;p&gt;&lt;code&gt;Tech&lt;/code&gt;カテゴリに書こうかなぁ…と思ったけど、読み物としておもしろいので&lt;code&gt;Daily&lt;/code&gt;カテゴリにした。&lt;/p&gt;
&lt;p&gt;読んだ内容を一気にまとめようと思うと時間がかかりそうなのでスクラップとして書いておく。&lt;/p&gt;
&lt;h2 id="20251123"&gt;2025/11/23&lt;/h2&gt;
&lt;p&gt;諸事情により↓の書籍を読み始めた。&lt;/p&gt;
&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4274068560.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4274068560/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;アジャイルサムライ−達人開発者への道−
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;一旦第2章まで読んだ。&lt;/p&gt;
&lt;h3 id="第1章"&gt;第1章&lt;/h3&gt;
&lt;p&gt;アジャイル開発についての概要が書かれていた。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;期待をマネジメントする&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;はウォーターフォールでも同じことが言えそうですね。&lt;/p&gt;
&lt;h3 id="第２章"&gt;第２章&lt;/h3&gt;
&lt;p&gt;アジャイル開発の詳細について学んだ。キーワードは次の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自己組織化&lt;/li&gt;
&lt;li&gt;職能横断型チーム
&lt;ul&gt;
&lt;li&gt;ゼネラリスト&lt;/li&gt;
&lt;li&gt;チームメンバーを探す際に考慮すること&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;オンサイト顧客/プロダクトオーナー&lt;/li&gt;
&lt;li&gt;権限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今までアジャイル開発に対して理解の浅かった箇所が言語化されることで要点が分かってきた気がしている。&lt;/p&gt;
&lt;p&gt;特に次の記述は、自分がモヤってた箇所をちゃんと説明してくれているのでありがたいですね。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;チームビルディングをうまくやるために望ましいのは、役割に人を合わせるんじゃなくて、人に合わせて役割分担を決める&lt;br&gt;
アジャイルプロジェクトでは&amp;hellip;（略）…誰もが色んな役割の帽子をかぶり分けなきゃならない&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;それと同時に、よくある役割分担と自分の性格とか思想に対する相性も見えてきた…&lt;/p&gt;





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;役割&lt;/th&gt;
 &lt;th&gt;相性&lt;/th&gt;
 &lt;th&gt;理由&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;アナリスト&lt;/td&gt;
 &lt;td&gt;△&lt;/td&gt;
 &lt;td&gt;経験が少なくて動き方を想像しづらい&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;プログラマ&lt;/td&gt;
 &lt;td&gt;◎&lt;/td&gt;
 &lt;td&gt;製品に対する思想と今までの経験が一番合致する（当たり前か）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;テスター&lt;/td&gt;
 &lt;td&gt;〇&lt;/td&gt;
 &lt;td&gt;プログラマほどではないが、概ね一致&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PM&lt;/td&gt;
 &lt;td&gt;〇&lt;/td&gt;
 &lt;td&gt;経験は少ないが、思想が一致&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;UXデザイナ&lt;/td&gt;
 &lt;td&gt;×&lt;/td&gt;
 &lt;td&gt;ゴミなUIは理解できるが、実際にUX改善のために何をやるのかわかってない&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;DB管理者&lt;/td&gt;
 &lt;td&gt;〇&lt;/td&gt;
 &lt;td&gt;なんとなくイメージはつくが、DBチューニングや重めの保守管理業務の経験がほぼない&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;インフラ管理者&lt;/td&gt;
 &lt;td&gt;×&lt;/td&gt;
 &lt;td&gt;未経験すぎる&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


&lt;p&gt;今のところはこんな感じ。明日以降もちょっとずつ読み進める。&lt;/p&gt;
&lt;h2 id="20251125"&gt;2025/11/25&lt;/h2&gt;
&lt;p&gt;第5章の途中まで読んだ。&lt;/p&gt;
&lt;h3 id="第３章"&gt;第３章&lt;/h3&gt;
&lt;p&gt;インセプションデッキの概要（10の質問）の役割と重要性を学んだ。&lt;/p&gt;
&lt;h3 id="第４章"&gt;第４章&lt;/h3&gt;
&lt;p&gt;プロジェクトの開始時点で次の項目を実施した方が良いことを学んだ。&lt;/p&gt;</description></item><item><title>CLIライブラリ作成メモ</title><link>https://t-pot.me/posts/tech/make-lib-scrap/</link><pubDate>Sun, 16 Nov 2025 13:20:32 +0000</pubDate><guid>https://t-pot.me/posts/tech/make-lib-scrap/</guid><description>&lt;h2 id="2025-11-16"&gt;2025-11-16&lt;/h2&gt;
&lt;h3 id="コミットに署名を追加する"&gt;コミットに署名を追加する&lt;/h3&gt;
&lt;p&gt;農産物みたく「私が作りました」を表示する。&lt;/p&gt;
&lt;p&gt;当初、&lt;code&gt;devcontainer&lt;/code&gt;上でGPG鍵を作成しようしたがエラーが出てしまっていた。調べてみると、いろいろと黒魔術っぽいことすれば回避できるようだったが、だる過ぎるので署名にSSHを使うことにした。&lt;/p&gt;
&lt;p&gt;下の記事を参考にした。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fqiita.com%2fhaw_ohnuma%2fitems%2f51fa84449bc4a1393846"
&gt;&lt;/iframe&gt;

&lt;p&gt;ローカル → Githubへの&lt;code&gt;Authenticaion&lt;/code&gt;にSSHの公開鍵を登録してSSH接続するのと同じようにして、&lt;code&gt;Signing-key&lt;/code&gt;に公開鍵を登録する。&lt;/p&gt;
&lt;p&gt;ローカル側でも細かい設定が必要だが、詳細は上記記事を参照して下し亜。&lt;/p&gt;
&lt;h3 id="いまさらながらgithub-actionsを使って自動publishを試す"&gt;いまさらながらGithub Actionsを使って自動publishを試す&lt;/h3&gt;
&lt;p&gt;地味に開発を続けている&lt;a href="https://github.com/htnabe/algolia-uploader"&gt;algolia-uploader&lt;/a&gt;について、いまさらながらGithub Actionsで新しいタグが出た際に自動的に&lt;code&gt;npm publish&lt;/code&gt;コマンドが走るように設定した。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主役のファイル：&lt;a href="https://github.com/htnabe/algolia-uploader/blob/main/.github/workflows/publish.yml"&gt;publish.yml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まず&lt;code&gt;npmjs&lt;/code&gt;のGUI上からトークン生成する際に躓いた。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1763301281/tech/npmjs-gui_ikaoja.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1763301281/tech/npmjs-gui_ikaoja.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1763301281/tech/npmjs-gui_ikaoja.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1763301281/tech/npmjs-gui_ikaoja.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1763301281/tech/npmjs-gui_ikaoja.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1763301281/tech/npmjs-gui_ikaoja.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1763301281/tech/npmjs-gui_ikaoja.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1763301281/tech/npmjs-gui_ikaoja.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="npmjs-gui"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;Packages and scopes&lt;/code&gt;の説明しかり、&lt;code&gt;Bypass 2FA&lt;/code&gt;の説明しかり「いったいどういう意味だってばよ」状態になってた。&lt;/p&gt;
&lt;p&gt;少し調べたら出てきますが、各選択肢は下記記事の説明に従って作ればよいはず。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fzenn.dev%2fwakamsha%2farticles%2fabout-publishing-node-packages%23npm-access-token-%25E3%2581%25AE%25E7%2599%25BA%25E8%25A1%258C%25E6%2589%258B%25E9%25A0%2586"
&gt;&lt;/iframe&gt;

&lt;p&gt;上記はいったん解決したが、普通に&lt;code&gt;NPM_TOKEN&lt;/code&gt;を設定しただけだと次のようなエラーが出た。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plaintext" data-lang="plaintext"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm error 403 403 Forbidden - PUT https://registry.npmjs.org/algolia-uploader - Two-factor authentication is required to publish this package but an automation token was specified
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm error 403 In most cases, you or one of your dependencies are requesting
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm error 403 a package version that is forbidden by your security policy, or
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm error 403 on a server you do not have access to.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npm error A complete log of this run can be found in: /home/runner/.npm/_logs/2025-11-16T04_29_06_002Z-debug-0.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;原因を探していくうちにnpmjsの&lt;code&gt;Trusted Publisher&lt;/code&gt;なるものを知った。最近？あったnpmのサプライチェーン攻撃に対する対処の一つなのかな？知らんけど。&lt;/p&gt;</description></item><item><title>【2025年】新年のご挨拶</title><link>https://t-pot.me/posts/daily/new-year-greeting-2025/</link><pubDate>Mon, 06 Jan 2025 13:11:44 +0000</pubDate><guid>https://t-pot.me/posts/daily/new-year-greeting-2025/</guid><description>&lt;p&gt;明けましておめでとうございます。本年も本ブログをよろしくお願いいたします。&lt;/p&gt;
&lt;h2 id="本ブログの2024年の振り返り"&gt;本ブログの2024年の振り返り&lt;/h2&gt;
&lt;p&gt;旧年も「中々記事を書く時間を作れなかったなぁ…；；」というのが正直なところです。&lt;/p&gt;
&lt;p&gt;そんな中でも相変わらず以下の記事を多くの方に読んでいただいているようです。まあニッチすぎて誰も書いてないということなんでしょう&amp;#x1f605;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;北大院試験を落ちた話&lt;/li&gt;
&lt;li&gt;ティモシェンコ梁についての解説&lt;/li&gt;
&lt;li&gt;モニターアームのレビュー記事&lt;/li&gt;
&lt;li&gt;グリーンのひずみについて&lt;/li&gt;
&lt;li&gt;React Native関連&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今年はドメイン代の回収はできませんでした…悲しい &amp;#x1f613;





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ドメイン代&lt;/th&gt;
 &lt;th&gt;ブログでの収入(2024/1/1 ~ 2024/12/31 )&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;＄14.19 ≒ 2220円&lt;/td&gt;
 &lt;td&gt;1253円&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;/p&gt;
&lt;p&gt;ちなみに、ドメイン代も1年で約1ドル上がっており、外貨と円安の両者の影響をスーパーの野菜とかよりも5割り増しくらいで体感しました。&lt;/p&gt;
&lt;h2 id="個人的な振り返り"&gt;個人的な振り返り&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2024年前期
&lt;ul&gt;
&lt;li&gt;基本情報を取った（虚無）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;資格が大切なのは分かるが資格を取ったからと言って受ける仕事が変わるわけでもなく、仕事でガッツリ活かせたというわけでもなく…また、取った後でもChatGPT先生に聞けば分かる内容がほとんどなので、何だコレ感が凄い。&lt;/p&gt;
&lt;p&gt;資格の勉強よりも、自分の気になってる技術触るとか個人開発の時間に当てたい感がとても強かった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2024年中・後期
&lt;ul&gt;
&lt;li&gt;ガッツリ転職活動
&lt;ul&gt;
&lt;li&gt;理由は昨年記事にまとめたのでここでは省略&lt;/li&gt;
&lt;li&gt;マッチする企業が中々見つからずいったん保留
&lt;ul&gt;
&lt;li&gt;現職の二の舞にならないような企業選びをかなり慎重にやっているのでそうもなるか…という感じ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1736171752/NabeBlog/omikujji_h35163.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1736171752/NabeBlog/omikujji_h35163.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1736171752/NabeBlog/omikujji_h35163.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1736171752/NabeBlog/omikujji_h35163.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1736171752/NabeBlog/omikujji_h35163.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1736171752/NabeBlog/omikujji_h35163.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1736171752/NabeBlog/omikujji_h35163.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1736171752/NabeBlog/omikujji_h35163.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="伏見稲荷大社で引いたおみくじの画像"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;伏見稲荷大社で引いたおみくじ&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;年始に伏見稲荷大社にいったのですが、おみくじにも「今が最後の機会」といわれるくらいなので、2025年はさっさと転職先を勝ち取る年にしたいと思います。&lt;/p&gt;
&lt;p&gt;あと今年の2月には早速&lt;a href="https://react-osaka.connpass.com/event/341614/"&gt;React Osakaのイベント&lt;/a&gt;で発表予定なので、そちらでの活動もすごく楽しみです。&lt;/p&gt;
&lt;p&gt;現場からは以上です。&lt;/p&gt;</description></item><item><title>年末に読むアンガーマネジメント</title><link>https://t-pot.me/posts/daily/anger-management/</link><pubDate>Tue, 24 Dec 2024 12:03:20 +0000</pubDate><guid>https://t-pot.me/posts/daily/anger-management/</guid><description>&lt;p&gt;タイトルの通り、2024年末にアンガーマネジメントに関する書籍を二冊ほど読みました。&lt;/p&gt;
&lt;p&gt;&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4022618760.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4022618760/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;アンガーマネジメント入門 (朝日文庫)
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4799327879.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4799327879/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;[図解]アンガーマネジメント超入門 「怒り」が消える心のトレーニング(特装版) 
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;読もうと思ったのには2つの理由があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ここ最近、感情的になっている人を観測したため&lt;/li&gt;
&lt;li&gt;よりイージーモードで人生を過ごしたいと思ったから&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;まぁ、１点目はあまり重要ではないです。が、みなさんご存じの通り、仕事の際は&lt;strong&gt;強く怒って不適切な発言をしてしまうと、それだけで社会的に大きな不利益を被ります&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;何があっても自分は感情的にならないように、そしてあわよくば社内にアンガーマネジメントの技術を広げるために習得しておこうと思うようになりました（そもそも社内で講習があれば良かったなぁ…というのは別の話）。&lt;/p&gt;
&lt;p&gt;むしろ私としては2点目の方が重要です。私は楽できるところは徹底的に楽をして、楽するために頑張るというスタンスで生きています。さらに、仲間は多ければ多いほうが良いとも考えています。そのため、よりイージーモードで生きられるのなら「アンガーマネジメントってコスパ最強では？」と思うようになりました。&lt;/p&gt;
&lt;h2 id="今までの自分と本を読んでみて"&gt;今までの自分と、本を読んでみて&lt;/h2&gt;
&lt;p&gt;今までの私は、正直なところ、仕事であまりやりたくない技術や案件を扱う際に、顔に（めんどくさいなぁ…という）感情が出てしまっていました。&lt;/p&gt;
&lt;p&gt;それは、「将来イージーモードで生きるためにその仕事や技術が直接結びついていない」と&lt;strong&gt;決めつけていたからです&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;また、学生の頃には同じ研究室でよく怒られていた同期や後輩・先輩に対して「何で○○をさっさとやらないんだよ～」と心の中でイラっと感じていたことがありました。&lt;/p&gt;
&lt;p&gt;これも「どんな背景があろうと、皆、指導教員に怒られないように頑張らなければならない」と&lt;strong&gt;決めつけていたからです&lt;/strong&gt;（もちろん学生としては頑張ったほうが良いとは思うのですが）。&lt;/p&gt;
&lt;p&gt;一方、このように、今まで自分が（小さくても）怒りを感じたことを振り返ることが、自分自身のコアの価値観を認知するために非常に重要な行動だということが本を読んでみてよくわかりました。&lt;/p&gt;
&lt;p&gt;私としてはまだまだ自分の怒りやストレスを分類し始めたばかりで、より解像度高く自分のコアの認知を把握・修正するため、今後も定期的に振り返ろうと思っています。&lt;/p&gt;
&lt;h3 id="衝動のコントロールについて"&gt;衝動のコントロールについて&lt;/h3&gt;
&lt;p&gt;一方、私は「衝動のコントロール」については既に実践できているな、と感じました。&lt;/p&gt;
&lt;p&gt;「魔法の呪文」や「グラウンディング」、「タイムアウト」などは書籍を読む前から自然にできていました。これは、自分自身を危機から守るために今までの経験の中で自然と身についていました（怒られたときにむっとして言い返さずに逃げることを選んでいたから）。&lt;/p&gt;
&lt;p&gt;この方法が正攻法として紹介されていたので、これからも自信をもって実践できそうです^^♪&lt;/p&gt;
&lt;h2 id="蛇足"&gt;蛇足&lt;/h2&gt;
&lt;p&gt;大きな責任を追う必要のある大企業の従業員や、比較的余裕のある会社で努めている方ならコンプライアンス研修などでこういったことも学ぶのだと思います。&lt;/p&gt;
&lt;p&gt;一方で、小さくて自転車操業的に仕事をやりくりしている会社では、アンガーマネジメントなどの講習は優先度がかなり低くならざるを得ないんだろうなぁと思います。&lt;/p&gt;
&lt;p&gt;しかしながら、コンプライアンス違反・ハラスメント行為を防止する重要性は、企業の規模に依存せず理解され始めており、これからも更に厳しくなっていくのかなと思います。&lt;/p&gt;
&lt;p&gt;まあ何が言いたいかというと、現代の社会人にとってアンガーマネジメントはコスパ最強で人生イージーモード化に必須の教科なんじゃないかなぁ（主観）ということです。&lt;/p&gt;
&lt;p&gt;Happy anger management!&lt;/p&gt;</description></item><item><title>Bootstrapにダーク・ライトモードがいつの間にか来てたので導入してみた</title><link>https://t-pot.me/posts/tech/bootstrap-color-mode/</link><pubDate>Sun, 04 Aug 2024 16:38:24 +0900</pubDate><guid>https://t-pot.me/posts/tech/bootstrap-color-mode/</guid><description>&lt;p&gt;このブログでは以前からBootstrapを使っているのですが、この前Bootstrapのドキュメントを読んでたらv5.3からカラーモードが追加されていたことに気が付きました（該当のページは↓）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://getbootstrap.jp/docs/5.3/customize/color-modes/"&gt;Bootstrapは、v5.3.0からカラーモード（テーマ）に対応&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.getbootstrap.com/2023/05/30/bootstrap-5-3-0/"&gt;v5.3.0のリリースノート&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;追加されたのは1年以上前なんですけどね…&amp;#x1f602;&lt;/p&gt;
&lt;p&gt;ということで、土日を使ってパパっとダークモードとライトモードの切り替えや、ユーザーのシステム設定を自動反映させるように変更しました。&lt;/p&gt;
&lt;p&gt;本サイトのソースコードの&lt;a href="https://github.com/htnabe/HikaeMe/blob/main/assets/ts/color-module.ts"&gt;ここ&lt;/a&gt;と&lt;a href="https://github.com/htnabe/HikaeMe/blob/main/layouts/partials/head.html"&gt;ここ&lt;/a&gt;で処理を書いています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;導入時のTips
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bg-body&lt;/code&gt;や&lt;code&gt;bg-body-tertiary&lt;/code&gt;でページの背景色を設定することでダーク・ライトの切り替え時に自動的に切り替わるよ&lt;/li&gt;
&lt;li&gt;文字についても&lt;code&gt;text-body&lt;/code&gt;を設定していれば、背景色の反転と同時に切り替わるよ&lt;/li&gt;
&lt;li&gt;切り替え処理自体にはJSが必要だよ&lt;/li&gt;
&lt;li&gt;png, webpみたいに背景が透過する画像だと、場合によっては文字が背景色に同化しちゃうよ&amp;#x1f622;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>MINIS FORUMのミニPC UN100L買っちゃった</title><link>https://t-pot.me/posts/daily/new-mini-pc/</link><pubDate>Sat, 27 Jul 2024 17:15:28 +0900</pubDate><guid>https://t-pot.me/posts/daily/new-mini-pc/</guid><description>&lt;p&gt;この記事では&lt;strong&gt;詳細な商品レビューは行いません&lt;/strong&gt;。そういうのを期待した方は以下の記事などをお勧めします。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fpc.watch.impress.co.jp%2fdocs%2fcolumn%2fnishikawa%2f1586147.html"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2freview.kakaku.com%2freview%2fK0001610727%2f%23tab"
&gt;&lt;/iframe&gt;

&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;実家のノートPCが約10年間の稼働に耐えかねてついに起動すらしなくなったそうで、「新しいPCを見繕って～&amp;#x270b;」と両親から連絡が来たので前々から興味のあったミニPCを始めて購入したよ！&lt;/p&gt;
&lt;p&gt;公式サイトはこちら↓（メモリ16GB &amp;amp; 512GB SSDのモデル）&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fstore.minisforum.jp%2fproducts%2fminisforum-un100l%3fvariant%3d44656652714150%26currency%3dJPY%26gad_source%3d1%26gclid%3dCj0KCQjwtZK1BhDuARIsAAy2VztaprzYuv4AgVRNQFumhJGLUCp1MhSW1vjyuj5OZ6vBz_btsfmJz0IaAvlfEALw_wcB"
&gt;&lt;/iframe&gt;

&lt;p&gt;両親からは次の条件で探してほしいとお願いされていた。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;予算はディスプレイ込みでMax8万&lt;/li&gt;
&lt;li&gt;メイン用途はネットサーフィン・動画視聴&lt;/li&gt;
&lt;li&gt;スマホで取った写真を保管するためのストレージがそれなりに欲しい&lt;/li&gt;
&lt;li&gt;町内会の資料の作成を任せられることがあるかもだからOffice使ってもサクサク動く&lt;/li&gt;
&lt;li&gt;なるべく場所を取らない&lt;/li&gt;
&lt;li&gt;無線LAN, Bluetooth接続できるもの&lt;/li&gt;
&lt;li&gt;（上記を満たすならあとは好きなの選んでおｋ）&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="購入までの経緯"&gt;購入までの経緯&lt;/h2&gt;
&lt;p&gt;オッヤ&amp;#x1f64b;「頼んだやで～」&lt;/p&gt;
&lt;p&gt;ワイ　「おかのした」&lt;/p&gt;
&lt;p&gt;ワイ　「…はは～ん、それならちょっと冒険してみよか～」ﾒｶﾞﾈｸｲｯ&lt;/p&gt;
&lt;p&gt;ワイ　「場所とらないなら、ミニPC一択やな」&lt;/p&gt;
&lt;p&gt;ワイ　「ggるついでに友達にも聞いてみるカァ～」&lt;/p&gt;
&lt;p&gt;超有能トッモ　「IntelのN100プロセッサがとんでもなく低いTDPで動くらしいやで～^^」&lt;/p&gt;
&lt;p&gt;ワイ　「マ？ちょっと探してみるわ～有賀と那須！^^」&lt;/p&gt;
&lt;p&gt;ワイ　「見せてもらおうかN100の性能とやらを」&lt;/p&gt;
&lt;p&gt;N100公式ページ↓&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.intel.co.jp%2fcontent%2fwww%2fjp%2fja%2fproducts%2fsku%2f231803%2fintel-processor-n100-6m-cache-up-to-3-40-ghz%2fspecifications.html"
&gt;&lt;/iframe&gt;

&lt;p&gt;ワイ　「ﾜｧ…」&lt;/p&gt;
&lt;p&gt;（省略）&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;あ…ありのまま 今　起こった事を話すぜ！&lt;/p&gt;
&lt;p&gt;「おれは　N100プロセッサ搭載のミニPCを探していたと　思ったら　いつのまにかMINI FORUMのPCをポチっていた」&lt;/p&gt;
&lt;p&gt;な…　何を言っているのか・・・・・・・・・　わからねーと思うが・・・・・・・・・　&lt;/p&gt;
&lt;p&gt;おれも・・・　何をされたのか・・・・・・・　わからなかった・・・・・・・…&lt;/p&gt;</description></item><item><title>HUGOでSassを導入する</title><link>https://t-pot.me/posts/tech/hugo-scss/</link><pubDate>Sat, 27 Jul 2024 15:51:58 +0900</pubDate><guid>https://t-pot.me/posts/tech/hugo-scss/</guid><description>&lt;p&gt;HUGO内でSass | Scssを使ってスタイルをイイ感じに記述する方法は色々な方が解説していますが、導入方法は公式ドキュメントの奥深くにあったり記事が古くなっていたりするのでこの記事で簡単な解説を加えます。&lt;/p&gt;
&lt;p&gt;Sassでの記述方法やHUGOでの導入例は下記の通り。
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fzenn.dev%2flovegraph%2farticles%2fc9f0bbc5896178"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fblog.chick-p.work%2ftil%2fhugo-css-variable"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2 id="導入方法"&gt;導入方法&lt;/h2&gt;
&lt;p&gt;詳細は&lt;a href="https://gohugo.io//functions/css/sass/#dart-sass"&gt;こちら&lt;/a&gt;にあります。Sass =&amp;gt; CSSへのトランスパイラが必要なので別途インストールする必要があります。&lt;/p&gt;
&lt;p&gt;私はWSLで&lt;code&gt;brew&lt;/code&gt;コマンドを使ってHUGOのバージョンを管理していたのでそのまま&lt;code&gt;brew install sass/sass/sass&lt;/code&gt;でインストールしました。&lt;/p&gt;
&lt;p&gt;また、公式サイトにもある通りですが、scssファイルのトランスパイラを指定することも可能です。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;{{ $opts := dict
 &amp;#34;transpiler&amp;#34; &amp;#34;dartsass&amp;#34;
}}
{{ with resources.Get &amp;#34;sass/main.scss&amp;#34; | toCSS $opts | minify | fingerprint }}
 &amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;{{ .RelPermalink }}&amp;#34; integrity=&amp;#34;{{ .Data.Integrity }}&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;
{{ end }}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;GitHub Pages, GitLab Pages, Netlifyに自動デプロイしているような環境では、先ほどの公式ページでも紹介されていたように、workflowを追加する必要があるみたいです。&lt;/p&gt;
&lt;p&gt;私はCloudflare Pagesを使っているのですが、特別設定の変更は必要なかったので省略します。&lt;/p&gt;
&lt;p&gt;それでは良きSass生活を～！&amp;#x1f44b;&lt;/p&gt;</description></item><item><title>HUGOの.Permalinkでlocalhostが指定されてしまう場合の対処法</title><link>https://t-pot.me/posts/tech/hugo-permalink-problem/</link><pubDate>Mon, 22 Jul 2024 21:24:20 +0900</pubDate><guid>https://t-pot.me/posts/tech/hugo-permalink-problem/</guid><description>&lt;h2 id="結論"&gt;結論&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;hugo serve&lt;/code&gt;コマンドはデバッグ用のコマンドなので、&lt;code&gt;hugo&lt;/code&gt;コマンドや&lt;code&gt;hugo build&lt;/code&gt;コマンドで本番用にビルドしてあげる必要があります（当たり前体操）。&lt;/p&gt;
&lt;p&gt;下記の記事を参考にしました。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fdiscourse.gohugo.io%2ft%2flocalhost-links-being-generated%2f1059"
&gt;&lt;/iframe&gt;

&lt;h2 id="なぜこの記事を書いたか"&gt;なぜこの記事を書いたか&lt;/h2&gt;
&lt;p&gt;このブログではブログ内検索にAlgoliaを使っているのですが、検索結果の記事のBaseUrlが何故か&lt;code&gt;localhost:1313&lt;/code&gt;（ローカル環境でのURL）になってしまっていたため、検索した記事に飛べない状況になってしまっていました… &amp;#x1f63f;&lt;/p&gt;
&lt;h3 id="原因"&gt;原因&lt;/h3&gt;
&lt;p&gt;元々、ローカル環境でのデバッグは次の手順で行っていました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;何らかの編集&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo server&lt;/code&gt;コマンドを実行して動作確認&lt;/li&gt;
&lt;li&gt;npm scriptで設定したコマンドを使って自動的にAlgoliaにデータをアップロード&lt;/li&gt;
&lt;li&gt;githubにも変更点をプッシュして自動デプロイ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;今までは特に気にしたことも無かったのですが、手順2の&lt;code&gt;hugo server&lt;/code&gt;コマンドによってビルドされたファイルの&lt;code&gt;.Permalink&lt;/code&gt;は&lt;code&gt;localhost:1313&lt;/code&gt;になってしまいます。Algoliaへのデータの反映はこのビルド時のデータを元にしていたので、Algolia経由での検索結果のURLがおかしくなっていました…&amp;#x1f63f;&lt;/p&gt;
&lt;h3 id="対策"&gt;対策&lt;/h3&gt;
&lt;p&gt;編集 ~ ビルド ~ デプロイまでの手順を次の様に変えました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;何らかの編集&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hugo server&lt;/code&gt;コマンドを実行して動作確認&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;hugo&lt;/code&gt;コマンドを実行&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;npm scriptで設定したコマンドを使って自動的にAlgoliaにデータをアップロード&lt;/li&gt;
&lt;li&gt;githubにも変更点をプッシュして自動デプロイ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;手順3により、&lt;code&gt;.Permalink&lt;/code&gt;がちゃんと&lt;code&gt;config.toml&lt;/code&gt;等で指定した&lt;code&gt;baseUrl&lt;/code&gt;になりました。&lt;/p&gt;
&lt;p&gt;なお、実際には手順3, 4はほぼ同時に行われるようにしており、&lt;code&gt;package.json&lt;/code&gt;の&lt;code&gt;script&lt;/code&gt;内では次のようなコマンドを定義し、サイトのビルドとAlgoliaへのアップロードをシームレスに実行しています。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;#34;scripts&amp;#34;: {
 &amp;#34;algolia&amp;#34;: &amp;#34;algoliaへの自動アップロード処理&amp;#34;
 &amp;#34;build&amp;#34;: &amp;#34;hugo --minify --gc &amp;amp;&amp;amp; npm run algolia&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="蛇足"&gt;蛇足&lt;/h2&gt;
&lt;p&gt;本業並に時間があれば&lt;code&gt;Algolia&lt;/code&gt;の検索機能のテストコードも書いて実装したいんだけどそんな余裕はない…&lt;/p&gt;</description></item><item><title>社会人1年目を終えての所感とこれから</title><link>https://t-pot.me/posts/daily/diary-2024-04-09/</link><pubDate>Tue, 09 Apr 2024 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/diary-2024-04-09/</guid><description>&lt;p&gt;たまには個人ブログらしく、自由気ままに思ったことを書きます。 &lt;del&gt;普段から自由に書いてるだろっていうクソリプはやめてね&amp;#x1f622;&lt;/del&gt;&lt;/p&gt;
&lt;h2 id="1年目の驚き"&gt;1年目の驚き&lt;/h2&gt;
&lt;p&gt;社会人生活を通じて一番の驚きは、結構この世の中良くも悪くも適当に回ってるんだなってこと。&lt;/p&gt;
&lt;p&gt;例えば私はプログラマなのでプログラムを例にとってみても、使っている人たちが中身をよく分からないまま使っているレガシーかつ危険すぎるコードとか、アルゴリズムがドキュメントとして残っていないようなクソみたいなソフトウェア（）なんかもあるんですよね。もちろんテストなんて1ミリも書かれていない。&lt;/p&gt;
&lt;p&gt;そして先人たちはそれらを使って色々なサービスやモノを作り上げてきた、というか来れてしまった。&lt;/p&gt;
&lt;p&gt;そんな奇跡的なバランスの上に成り立っているものを見るたびに、意外とこの世の中、適当に回ってんだなと思いましたね。と同時に、自分も適当に肩の力を抜いて働こうかなと思った&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;それ以外にも幾つか驚きがありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;意外とみんな（クソデカ主語）自分のやってる仕事とか使ってるツール etc. に深い興味を持っていない&lt;/li&gt;
&lt;li&gt;自分の知っていることをみんなに共有することで業務全体の効率化を目指すことの重要性を理解している人って少ない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記は私の職場の特徴であって、他人の職場でも同じことがいえるほど一般化された話ではないと思います。ただ、皆知ってた方が仕事の効率が上がるような小ネタ・How toみたいなものを積極的に共有しようとする人がとても少なかったですね。&lt;/p&gt;
&lt;p&gt;理論的に考えたら「仕事を効率的に進める」という目標に対して、「皆の仕事に共通した技術的な小ネタ」とか、いわゆる仕事・コーディングの原理原則みたいな部分を共有した方が良くね？思うんだけど意外とする人は少なかった…&lt;/p&gt;
&lt;p&gt;「そんなもんしてる暇あったら自分の仕事進めるわ」みたいな意見も出てきそうだけど、長期的な視点や社内文化の醸成の視点からすると明らかに知識の共有ってした方が良くないですか？と私は思いますね。&lt;/p&gt;
&lt;p&gt;たとえ個人的にはクソ限られた場面でしか使えないような知識の共有でも、しないよりはした方がいいに決まっていると思うんですよね。結局情報の取捨選択は受け取り側にあるので別にゴミみたいな情報でもないよりはあった方がいいはず（もちろん限度はある）。&lt;/p&gt;
&lt;p&gt;それと、別に上記の話には視座の高低は関係なく、むしろ普段から気軽に情報共有できる場があるかどうかが一番大きいとも感じてます。ちなみに私の職場にはそういう場はほとんどと言って良いほど無い。&lt;/p&gt;
&lt;p&gt;「じゃあ作れば良いじゃん」って思うでしょ？それが出来たら多分この記事でこの話を書いて無いんですよね…&lt;/p&gt;
&lt;h2 id="喜び"&gt;喜び&lt;/h2&gt;
&lt;p&gt;ひとまず1年間病気にかからず、精神的にも落ち着いた状態で欠勤することなく働けたことが嬉しいです。&lt;/p&gt;
&lt;p&gt;特にうちの会社は一年目の半年間は有給0日なのでインフルとかかかったら強制的に5日間無給になるとかいう地獄なので…（別にブラックではないし法律も順守しているけどね）&lt;/p&gt;
&lt;p&gt;あと強いて言えば、計算力学固体2級の試験に受かったことも嬉しかった。受かったおかげで2倍近く昇給したので。個人的には全然満足いく金額ではないのだけど、具体的にはベースアップを合わせて約26600円昇給しました。&lt;/p&gt;
&lt;p&gt;仕事は関係ないけど人生初のハーフマラソンを完走できたのも嬉しかったな。&lt;/p&gt;
&lt;h2 id="悲しみ"&gt;悲しみ&lt;/h2&gt;
&lt;p&gt;今の会社での仕事はほとんど個人開発とそんなに大差ないということですかね。&lt;/p&gt;
&lt;p&gt;個人開発と違うのは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作るものの仕様が最初からある程度決まってる&lt;/li&gt;
&lt;li&gt;お金をもらっていること&lt;/li&gt;
&lt;li&gt;当事者意識が無くても作れちゃう&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;くらいですかね。あと、ツール・言語とか設計に関する知識は基本的に自分でggるかChatGPTに聞いてるから、会社の人に聞くことはまあほぼないです…唯一聞く（というか報告する）のは仕事の進め方・見積・進捗くらいですね。&lt;/p&gt;
&lt;p&gt;そうなってくるとやはり「この職場じゃなくて良くね？」感がとてつもなく出てくる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まともな教育&lt;/li&gt;
&lt;li&gt;本格的なOJT&lt;/li&gt;
&lt;li&gt;目指したくなるようなキャリアモデル&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この辺りがうちの職場は全くないので、まあわざわざこの会社じゃなくても…感は強い。それと上述の「当事者意識」は面白い仕事をするうえで一番大事だと感じていて、これを現職では必要とされない（むしろない方が仕事を進めやすいまである）のが結構しんどいかも。&lt;/p&gt;
&lt;p&gt;それに、この職場じゃ仕事をそつなくこなす力は身に付くけど、いざ外に出るとﾁｮｯﾄﾌﾟﾛｸﾞﾗﾑできるだけのおじさんになっちゃうんだよね…&lt;/p&gt;
&lt;h2 id="これから"&gt;これから&lt;/h2&gt;
&lt;p&gt;ひとまず1年働いたけど、基本的にはアルバイトしてるのと気持ちは変わらないくらいのぬるま湯感覚なので、今年度中に別の環境移ろうと思っています。&lt;/p&gt;
&lt;p&gt;次の環境に求めるのは以下の要素（現職にも部分的にはあるっちゃある）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;給与（大事。増えるだけで人生の選択肢が増える。）&lt;/li&gt;
&lt;li&gt;心理的安全性（ここは正直外部から確認のしようが無いけど）
&lt;ul&gt;
&lt;li&gt;仕事の話からしょうもない話まで気軽にできる人間関係と言い換えてもいいかも&lt;/li&gt;
&lt;li&gt;健全な意見の衝突ができる職場・人間関係でもあるか&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;技術を極められる案件に関わり続けられる&lt;/li&gt;
&lt;li&gt;当事者意識を持って良いものを作り上げ、改善にまで携われる&lt;/li&gt;
&lt;li&gt;チームで何かを作り上げる案件に携われる&lt;/li&gt;
&lt;li&gt;（できれば）海外のエンジニア etc. と関われる職場&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;ここでの&lt;em&gt;適当&lt;/em&gt;とは言葉の通り求められる水準未満でも超過でもないピッタリのこと&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>【TypeScript】文字列と数値からオブジェクト型リテラルの値を取得する例</title><link>https://t-pot.me/posts/tech/typescript-tip-object-literal/</link><pubDate>Thu, 07 Mar 2024 21:49:20 +0900</pubDate><guid>https://t-pot.me/posts/tech/typescript-tip-object-literal/</guid><description>&lt;p&gt;前置きは置いておいて先にプログラムの例を以下に示す。&lt;/p&gt;
&lt;h2 id="文字列から取り出す例"&gt;文字列から取り出す例&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;// enumの代わりにオブジェクトリテラルで変数を定義
const Status = {
 invalid : -1,
 good : 0,
 bad : 1,
} as const;

/** Statusのプロパティの文字列を指定して値を取得する */
function getStatusFromString(statusStr: string): number{
 const status:string[] = Object.keys(Status);
 if(status.includes(statusStr)){
 return Status[statusStr as keyof typeof Status];
 }
 return Status.invalid;
}

// 例
const goodStatus= getStatusFromString(&amp;#34;good&amp;#34;);
const invalidStatus = getStatusFromString(&amp;#34;xxxx&amp;#34;);

console.log(`typeof goodStatus: ${typeof goodStatus}. value: ${goodStatus}`);
console.log(`typeof invalidStatus: ${typeof invalidStatus}. value: ${invalidStatus}`);

// typeof goodStatus: number. value: 0
// typeof invalidStatus: number. value: -1
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="数値から取り出す例"&gt;数値から取り出す例&lt;/h3&gt;
&lt;p&gt;先ほどと同様に&lt;code&gt;Status&lt;/code&gt;について考える。&lt;/p&gt;</description></item><item><title>予算1万円で作る内窓（あるいは二重サッシ）</title><link>https://t-pot.me/posts/daily/inner-window/</link><pubDate>Sat, 06 Jan 2024 13:51:14 +0900</pubDate><guid>https://t-pot.me/posts/daily/inner-window/</guid><description>&lt;h2 id="完成形"&gt;完成形&lt;/h2&gt;
&lt;p&gt;最終的には↓のようになりました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%AE%8C%E6%88%90%E5%9B%B3_govkze.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;色々バタバタしてて片付けまで間に合わなかった…&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;今のところは取っ手を付けてないので扉の開け閉めが面倒ですが、ひとまず寒気をしのげている（主観）ので当初の目的は達成できたかな～と思います。&lt;/p&gt;
&lt;h2 id="動機"&gt;動機&lt;/h2&gt;
&lt;p&gt;↓を見て意外と簡単に内窓を作れるということが分かったので、我が家（1K）にも導入してみよ～と思った、ただそれだけ。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fondankataisaku.env.go.jp%2fcoolchoice%2fjutaku%2ftopics%2f20200316.html"
&gt;&lt;/iframe&gt;

&lt;h2 id="必要なモノ"&gt;必要なモノ&lt;/h2&gt;
&lt;p&gt;今回購入したのは以下の通りです。&lt;/p&gt;





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;費用（円）&lt;/th&gt;
 &lt;th&gt;用途など&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;ポリカーボネート板 （厚さ4㎜、サイズ1820×910mm、2枚）&lt;/td&gt;
 &lt;td&gt;7018&lt;/td&gt;
 &lt;td&gt;内窓そのもの&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;カッター&lt;/td&gt;
 &lt;td&gt;269&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;両面テープ（幅15mm）&lt;/td&gt;
 &lt;td&gt;522&lt;/td&gt;
 &lt;td&gt;レールの固定用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ガラス戸レール 上・下（各2m）&lt;/td&gt;
 &lt;td&gt;955&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


&lt;ul&gt;
&lt;li&gt;合計: 8791円&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="組み立ててみた"&gt;組み立ててみた&lt;/h3&gt;
&lt;p&gt;まず届いたポリカーボネート板を試しに窓枠に立てかけてみます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1709981989/daily/%E5%86%85%E7%AA%93/%E5%86%85%E7%AA%931_l5wjjc.jpg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ポリカーボネート板を立てかけた図"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;ピッタリサイズやね&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;立てかけてみると分かり易いですが、板同士が結構重複してますね。&lt;/p&gt;</description></item><item><title>【2024年】新年のご挨拶</title><link>https://t-pot.me/posts/daily/new-year-greeting-2024/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/new-year-greeting-2024/</guid><description>&lt;p&gt;明けましておめでとうございます。本年も本ブログをよろしくお願いいたします。&lt;/p&gt;
&lt;h2 id="本ブログの2023年の振り返り"&gt;本ブログの2023年の振り返り&lt;/h2&gt;
&lt;p&gt;旧年は「中々記事を書く時間を作れなかったなぁ」というのが正直なところです。&lt;/p&gt;
&lt;p&gt;そんな中でも以下の記事を多くの方に読んでいただいているようです。狙い通りニッチな内容を読んでいただけているようでうれしいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;北大院試験を落ちた話&lt;/li&gt;
&lt;li&gt;ティモシェンコ梁についての解説&lt;/li&gt;
&lt;li&gt;モニターアームのレビュー記事&lt;/li&gt;
&lt;li&gt;グリーンのひずみについて&lt;/li&gt;
&lt;li&gt;React Native関連&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="良かったところ"&gt;良かったところ&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;今年も何とかドメイン代は回収できました！このサイトを訪問してくださった皆様のおかげです！ありがとうございます！&amp;#x1f61a;





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;ドメイン代&lt;/th&gt;
 &lt;th&gt;ブログでの収入(2023/1/1 ~ 2024/1/1 )&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;＄13.10 ≒ 1886円&lt;/td&gt;
 &lt;td&gt;3277円&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;世知辛いお金の話は置いておいて、他には&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qiitaのアドベントカレンダーでopenapiについての記事を出せたこと
&lt;ul&gt;
&lt;li&gt;アドベントカレンダーについては以前から参加したいと思っていた&lt;/li&gt;
&lt;li&gt;OpenAPI自体の具体的な使い方について、色々な方法がある中の一つの方法を示せて良かった&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="改善点"&gt;改善点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一部、過去の記事の内容が古くなっていたりするので、修正・アップデートは必須だなぁ&lt;/li&gt;
&lt;li&gt;最近作ったばかりのOpenAPIの記事については、書きたい or 書けるネタは沢山あるので追記したい&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="個人的な2023年の振り返り"&gt;個人的な2023年の振り返り&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2023年前期&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;神戸にお引越し&lt;/li&gt;
&lt;li&gt;計算力学技術者試験のお勉強、昇給のためにTOEICの受けなおし（虚無）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2023年後期&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;計算力学技術者（固体）試験2級の受験&lt;/li&gt;
&lt;li&gt;本当は秋くらいにハーフマラソンを走ろうと思ってたけど色々あって参加できず&lt;/li&gt;
&lt;li&gt;結局2024/1/14にハーフマラソンを走ることになりますた&lt;/li&gt;
&lt;li&gt;基本情報のお勉強&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2023年全体を通じて&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;仕事では機械系の知識等を求められることはほぼないので、このブログで力学系の記事を追加・更新することはもう無さそう&lt;/li&gt;
&lt;li&gt;情報系の知識を身に着ける方が個人的な興味を満たすだけでなく、金銭的なモチベにもなるので&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新してほしい内容があったら投げ銭してください&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;年始頃に色々プレイしてました。今年は週1くらいでやる時間あるかな？
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fs.team%2fy23%2ffqvbmbdd%3fl%3djapanese"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;2024年は、個人的にはOpenAPI, React, TypeScript, C#, Blazor周り, MySql, Docker, CI/CD辺りのWeb系のスキルセットを身に着けるための1年にしたいなぁと思っています。&lt;/p&gt;
&lt;p&gt;あと基本情報は確定で取るとして、応用情報も12月か遅くても2025年1月までには取りたいなぁ…&lt;/p&gt;
&lt;p&gt;皆様のご多幸をアビスの&lt;del&gt;新年&lt;/del&gt;深淵から願っております。ﾝﾅｧ~~&lt;/p&gt;</description></item><item><title>【OpenAPI】TypeScript+ReactとASP.NET Web API間でデータをやり取りする</title><link>https://t-pot.me/posts/tech/openapi-ts-react-dotnet/</link><pubDate>Sat, 16 Dec 2023 10:36:35 +0900</pubDate><guid>https://t-pot.me/posts/tech/openapi-ts-react-dotnet/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://qiita.com/advent-calendar/2023/typescript"&gt;TypeScriptアドベントカレンダー&lt;/a&gt;24日目の記事です。残念ながらTypeScriptの要素は2割くらいしかありません（すまん）。&lt;/p&gt;
&lt;p&gt;この記事では、ローカル環境でTS + Reactで作ったフロントエンドとASP.NETで作ったバックエンド間のデータのやり取りをする例を紹介します。デプロイ先についての検討や各資源の管理方法については述べません。&lt;/p&gt;
&lt;p&gt;現実的な例で言うと、「C#で書かれた既存のWeb APIサーバーを使って新たにWebアプリを作りたいけど、フロントサイドの技術者がTS/JSしか使えないとき」みたいな感じでしょうか。稀によくある（無い）。&lt;/p&gt;
&lt;h3 id="完成形"&gt;完成形&lt;/h3&gt;
&lt;p&gt;↓のようにボタン押下時にリクエストを送り、戻ってきたデータをそのまま表示します。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1703506543/NabeBlog/try-movie_l0olvj.gif"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1703506543/NabeBlog/try-movie_l0olvj.gif 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1703506543/NabeBlog/try-movie_l0olvj.gif 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1703506543/NabeBlog/try-movie_l0olvj.gif 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1703506543/NabeBlog/try-movie_l0olvj.gif 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1703506543/NabeBlog/try-movie_l0olvj.gif 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1703506543/NabeBlog/try-movie_l0olvj.gif 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1703506543/NabeBlog/try-movie_l0olvj.gif 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="試作品"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;構成は次の通りシンプルです&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1709292863/NabeBlog/%E6%A7%8B%E6%88%90%E5%9B%B3_jawmcl.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="構成"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;実際のプログラムなどは↓のレポジトリで公開しています（また、開発環境は&lt;code&gt;devcontainer&lt;/code&gt;で公開しています）。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fgithub.com%2fhtnabe%2fOpenAPI-React-TypeScript-.NET-Example"
&gt;&lt;/iframe&gt;

&lt;h3 id="最終的なディレクトリ構成"&gt;最終的なディレクトリ構成&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;root
┣ /front
┃ ┗ /openAPI
┗ /webAPI
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;今回は特にDockerも使うことなく、Windows11上にプロジェクトを作りました。自動生成されるインターフェイスを含むフォルダを&lt;code&gt;/openAPI&lt;/code&gt;と名付けています。&lt;/p&gt;</description></item><item><title>RubberduckのTips</title><link>https://t-pot.me/posts/tech/rubberduck-tips/</link><pubDate>Sat, 14 Oct 2023 22:31:03 +0900</pubDate><guid>https://t-pot.me/posts/tech/rubberduck-tips/</guid><description>&lt;p&gt;&lt;a href="https://qiita.com/advent-calendar/2023/first-time"&gt;はじめてのアドベントカレンダー&lt;/a&gt;17日目の記事です。&lt;/p&gt;
&lt;p&gt;※ サムネイルはRubberduckホームページのものを引用しています。&lt;/p&gt;
&lt;h2 id="追記"&gt;追記&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/rubberduck-vba"&gt;Rubberduck&lt;/a&gt;は現在アーカイブ状態に移りました。&lt;/p&gt;
&lt;p&gt;理由は&lt;a href="https://rubberduckvba.blog/2026/03/08/whats-next/"&gt;こちら&lt;/a&gt;に記載のある通り、仕事としてRubberduck VBAをフルタイム開発するためであるそうです。&lt;/p&gt;
&lt;h2 id="この記事で伝えたいこと"&gt;この記事で伝えたいこと&lt;/h2&gt;
&lt;p&gt;前回&lt;a href="https://t-pot.me/posts/tech/rubberduck-vba-with-git/"&gt;Rubberduck + Gitでプログラムを管理する&lt;/a&gt;方法について書きましたが、他にもいくつか便利な機能があります。&lt;/p&gt;
&lt;h2 id="便利な機能"&gt;便利な機能&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Unit Testing&lt;/code&gt;や&lt;code&gt;Code Inspections&lt;/code&gt;、&lt;code&gt;Refactorings&lt;/code&gt;や&lt;code&gt;Navigator&lt;/code&gt;などの主要な機能についての説明は以下の記事などで説明されているので省きます。&lt;/p&gt;
&lt;p&gt;&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fqiita.com%2fmochimo%2fitems%2fe9be36619a76e15bc898"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fqiita.com%2fmima_ita%2fitems%2f3629006163d0a7fa6e55"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;その他に便利な機能として主に次の二つが挙げられます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Annotations&lt;/li&gt;
&lt;li&gt;Peek Definitions&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="annotations"&gt;Annotations&lt;/h3&gt;
&lt;p&gt;変数に対する説明や、サブルーチン・関数・クラスが担当する処理、そしてモジュール単位での説明も加えられ、なおかつ、どこからでもその説明を参照できます。&lt;/p&gt;
&lt;p&gt;例えば次の様な、簡単なプログラムに説明を付け加えます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-vb" data-lang="vb"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;Public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;DoubleValue&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;ByVal&lt;/span&gt; Value &lt;span style="color:#f92672"&gt;As&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Integer&lt;/span&gt;) &lt;span style="color:#f92672"&gt;As&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Integer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DoubleValue &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Value &lt;span style="color:#f92672"&gt;*&lt;/span&gt; 2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;End&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このプログラムに対して、&lt;code&gt;@Description&lt;/code&gt;接頭辞を付け、なおかつコメントアウトすることで説明を加えられます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-vb" data-lang="vb"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#39;@Description(&amp;#34;値を二倍にして返す&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;Public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Function&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;DoubleValue&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;ByVal&lt;/span&gt; Value &lt;span style="color:#f92672"&gt;As&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Integer&lt;/span&gt;) &lt;span style="color:#f92672"&gt;As&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Integer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DoubleValue &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Value &lt;span style="color:#f92672"&gt;*&lt;/span&gt; 2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;End&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;Function&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;実際の画面では↓のように、VBEの上部に説明が表示されます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1702908219/tech/rubberduck/%E8%AA%AC%E6%98%8E_rubberduck_w67gdu.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;実際の画面&lt;/figcaption&gt;&lt;/figure&gt;

&lt;h3 id="peek-definition"&gt;Peek Definition&lt;/h3&gt;
&lt;p&gt;変数・サブルーチン・関数・クラスなどが、どのように定義されているのかを確かめられます。デフォルトのショートカットキーは&lt;code&gt;Ctrl + Shift + D&lt;/code&gt;です。&lt;/p&gt;</description></item><item><title>RubberduckでVBAプログラムをGit管理する</title><link>https://t-pot.me/posts/tech/rubberduck-vba-with-git/</link><pubDate>Sat, 14 Oct 2023 13:24:53 +0900</pubDate><guid>https://t-pot.me/posts/tech/rubberduck-vba-with-git/</guid><description>&lt;p&gt;サムネイルはRubberduckのホームページのものを引用しています。&lt;/p&gt;
&lt;h2 id="追記"&gt;追記&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/rubberduck-vba"&gt;Rubberduck&lt;/a&gt;は現在アーカイブ状態に移りました。&lt;/p&gt;
&lt;p&gt;理由は&lt;a href="https://rubberduckvba.blog/2026/03/08/whats-next/"&gt;こちら&lt;/a&gt;に記載のある通り、仕事としてRubberduck VBAをフルタイム開発するためであるそうです。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;take Rubberduck to the next level by finally working full-time on it,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="この記事で伝えたいこと--この記事で言っていないこと"&gt;この記事で伝えたいこと &amp;amp; この記事で言っていないこと&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;伝えたいこと
&lt;ul&gt;
&lt;li&gt;Rubberduckを使うことで比較的簡単にVBAプログラムのバージョン管理を行えます&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;言っていないこと
&lt;ul&gt;
&lt;li&gt;全てのVBAプログラマにとって、そしてあらゆる案件でRubberduckを使うことが最善手です&lt;/li&gt;
&lt;li&gt;VBAとVBEは令和の時代でも十分使えます&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="そもそもrubberduckで何ができるのか"&gt;そもそもRubberduckで何ができるのか&lt;/h2&gt;
&lt;p&gt;この辺りの内容は色々な方がまとめているので省略します。&lt;/p&gt;
&lt;p&gt;&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fqiita.com%2fmochimo%2fitems%2fe9be36619a76e15bc898"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fqiita.com%2fmima_ita%2fitems%2f3629006163d0a7fa6e55"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2 id="gitで管理する具体的な方法"&gt;Gitで管理する具体的な方法&lt;/h2&gt;
&lt;p&gt;次のように、エクセルファイルとVBAプログラムの格納先のフォルダ（&lt;code&gt;src&lt;/code&gt;）を用意してみます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-plaintext" data-lang="plaintext"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; /root
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ┣ hoge.xlsm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ┗ /src
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;hoge.xlsm&lt;/code&gt;を開いて、&lt;code&gt;rubberduck&lt;/code&gt;のタブから&lt;code&gt;Export Active Project&lt;/code&gt;を選択します。
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1702908219/tech/rubberduck/rubberduck_export_code1_i1abph.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;タブ選択&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>【レビュー】ニトリのスマホスタンドが廉価で有能な件</title><link>https://t-pot.me/posts/daily/nitori-smartphone-stand-review/</link><pubDate>Sat, 11 Mar 2023 13:20:55 +0900</pubDate><guid>https://t-pot.me/posts/daily/nitori-smartphone-stand-review/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;今回購入したのは↓の商品。&lt;/p&gt;


&lt;div data-vc_mylinkbox_id="888937629"&gt;&lt;/div&gt;


&lt;p&gt;送料が550円となっていますが、ニトリのyahoo!店や楽天市場店だと11000円以上購入することで送料無料になります&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;h2 id="商品スペックと特徴"&gt;商品スペックと特徴&lt;/h2&gt;
&lt;p&gt;この商品のスペック等は下の通り&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;価格&lt;/td&gt;
 &lt;td&gt;999 円&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;対応サイズ&lt;/td&gt;
 &lt;td&gt;4 ~ 6.5 inch&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;重量&lt;/td&gt;
 &lt;td&gt;約62g&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;

&lt;/p&gt;
&lt;p&gt;実際に5.5インチのスマホ（ASUS Live L1）の横に並べてみるとこんな感じのサイズ感。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1678514022/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand10_bdd4z8.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;スタンドのサイズ感&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;このスタンドの主な特徴は次の2つ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;充電用ケーブルを通す孔がある&lt;/li&gt;
&lt;li&gt;底面とスマホ接触面に滑り止めがある&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まず充電用ケーブルを通す孔ですが、↓のようにケーブルを通せます。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1678514066/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand12_cmzygr.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;パタ-ン1&lt;/figcaption&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1678514107/daily/%E3%82%B9%E3%83%9E%E3%83%9B%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%89/stand11_us0xim.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;figcaption&gt;パタ-ン2&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>【レビュー】ライザのアトリエ2 〜失われた伝承と秘密の妖精〜</title><link>https://t-pot.me/posts/daily/ryza-atelier2-review/</link><pubDate>Thu, 02 Mar 2023 21:17:30 +0900</pubDate><guid>https://t-pot.me/posts/daily/ryza-atelier2-review/</guid><description>&lt;p&gt;この記事にはネタバレと太ももが含まれています。未プレイの方はブラウザバックをお勧めします☆&lt;/p&gt;
&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;3/24発売のライザ3楽しみ過ぎる～。オラwkwkすっぞ！&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fstore.steampowered.com%2fapp%2f1999770%2f_%2f%3fl%3djapanese"
&gt;&lt;/iframe&gt;

&lt;p&gt;それと、KOEI TECMO HOLDINGS CO., LTD.様の&lt;a href="https://www.gamecity.ne.jp/info/videopolicy.html"&gt;ガイドライン&lt;/a&gt;的に広告収入以外での収入は禁じられており、ゲーム画像を記載する場合でも同様であると認識しています。&lt;/p&gt;
&lt;p&gt;したがって、&lt;strong&gt;ガイドラインにより収益化が禁止されているため特別な金銭的ご支援は行わないようお願いします&lt;/strong&gt;。また本記事内で用いている画像は©コーエーテクモゲームスです。&lt;/p&gt;
&lt;h2 id="現在のプレイ時間とストーリー到達度"&gt;現在のプレイ時間とストーリー到達度&lt;/h2&gt;
&lt;p&gt;現在はストーリーをすべてクリアし、難易度CHARISMAでラストセンチネルを倒すとこまでやりました。残念ながら難易度LEGENDでの裏ボス攻略はまだ出来ていません；；&lt;/p&gt;
&lt;p&gt;本当は難易度LEGENDでクリアし終わってからレビューしようかと思ったのですが結構時間かかりそうなので一旦ここでレビューしておきます。あと一応、自分はライザ1もプレイ済みです。&lt;/p&gt;
&lt;h2 id="序盤"&gt;序盤&lt;/h2&gt;
&lt;p&gt;ライザ1から引き続きカメラモードが優秀過ぎる。このゲームの値段の8割はこのモードのためにあるといっても過言 &lt;del&gt;でもないかも&lt;/del&gt;。可愛いﾝｺﾞね～。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1680258537/daily/games/atelier-ryza2/%E5%8F%AF%E6%84%9B%E3%81%84_1_socao9.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ヒロインs"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;このページのサムネもカメラモードで撮ったんですけど、雰囲気が神がかってて個人的なベストピクチャーです。とまぁ、2時間くらいカメラモードで一通り楽しんだ後にようやくストーリーを進め始めた。&lt;/p&gt;
&lt;p&gt;ひとまず序盤で気付いたライザ1からの大きな改善点は以下の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;会話の自動送り機能&lt;/li&gt;
&lt;li&gt;マップ間移動の減少&lt;/li&gt;
&lt;li&gt;カメラモードの際の表情やポーズのパターンの増加&lt;/li&gt;
&lt;li&gt;オートセーブ機能&lt;/li&gt;
&lt;li&gt;僅かな段差をジャンプで超えやすくなった&lt;/li&gt;
&lt;li&gt;&lt;del&gt;なんかロミィさんがめちゃくちゃ可愛くなった&lt;/del&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;まず会話の自動送り機能ですが、↓のようにボタン一つで会話をAUTOで流せるようになったのはかなり嬉しいですね。ライザ1では、ただでさえムービーシーンが多くてグダりがちなのに全ての会話を送るのに毎回ボタンを押す苦行を強いられていたのですが、今作からはようやく自動送り機能が追加されました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1680258537/daily/games/atelier-ryza2/%E4%BC%9A%E8%A9%B1%E8%87%AA%E5%8B%95%E3%82%B9%E3%82%AD%E3%83%83%E3%83%97_ow2jgj.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="会話送り"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;それとストーリー進行に伴うマップ移動を多少ですが自動でしてくれるようになったのも嬉しいですね。前作では明らかに用が済んだマップから町に戻るのにもプレイヤーにマップ移動を強制していた割とグロ仕様だったので嬉しい改善点です。&lt;/p&gt;</description></item><item><title>5億年（4年）ぶりにTOEIC受けたら800点超えた話</title><link>https://t-pot.me/posts/daily/first-toeic-in-500m-ys2/</link><pubDate>Fri, 17 Feb 2023 11:49:29 +0900</pubDate><guid>https://t-pot.me/posts/daily/first-toeic-in-500m-ys2/</guid><description>&lt;h2 id="あらすじ"&gt;あらすじ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;修士論文の書ける部分を書き終わってやることが無くなった&lt;/li&gt;
&lt;li&gt;習慣的に英語学習を続けたいと思った&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;のでTOEICを受けることにした。そして&lt;a href="https://t-pot.me/posts/daily/first-toeic-in-500m-ys/"&gt;前回の記事&lt;/a&gt;ではテスト41日前の心境とか状況を書いていた。&lt;/p&gt;
&lt;p&gt;今回はテストを受けた感想と点数、それと今後の学習スタイルについて書くぞ。 &lt;del&gt;タイトルでネタバレしてて草&lt;/del&gt;&lt;/p&gt;
&lt;h2 id="点数"&gt;点数&lt;/h2&gt;
&lt;p&gt;とりま点数は↓の通り。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1676602500/NabeBlog/TOEIC%E7%82%B9%E6%95%B0_fvvcjy.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="TOEIC_score"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;4年前に受けたTOEICはでは720点しか取れてなかったのでいつの間にか100点アップしたことになるね。&lt;/p&gt;
&lt;h2 id="テストを受けた感想と反省点"&gt;テストを受けた感想と反省点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;受験者数がめちゃくちゃ多かった&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1/29に受けたんですけど、受験者数が多かったのはやっぱり就活のために受けた人が多かったんじゃないかと推測してる。次回は人が少ない月に受けたいね。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;会場がデカすぎて音の反響がひどかった&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こればっかりは対処の仕様がないんですが、音の反響がひどすぎて、家でリスニングの練習する時みたくクリアな音で聞けなかったのが残念だったなぁ。人が少ないときに受けたい欲がさらに上がった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;そこまで難しい単語は出てこなかった&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちょっと以外だったのは運よく知らない単語がほとんど出てこなかったとこですね。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;速読のスキルをもっと上げよう&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;個人的な反省点として、Part6と7を速読するスキルをもっと磨くべきだなぁと思った。このスキルが身につけばリーディングの点数はまだまだ上がると思う。伸びしろですねぇ…&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ぶっ通し2時間の本番想定の練習をしよう&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当たり前なんですが、本番のテスト時間が2時間あるわけなので練習でも一度は2時間ぶっ通しで問題を解いてみるべきだった。これをやってなかったので本番ではリーディング（最後の一時間）でかなり集中力が切れてしまった。&lt;/p&gt;
&lt;h2 id="今後の予定"&gt;今後の予定&lt;/h2&gt;
&lt;p&gt;引き続き1日30分の英語学習（単語15分、速読やリスニング15分）を続けていこうと思ってる。まだまだ↓の参考書を使って勉強を続ける予定です。&lt;/p&gt;


&lt;div data-vc_mylinkbox_id="889073260"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889073261"&gt;&lt;/div&gt;


&lt;h2 id="蛇足"&gt;蛇足&lt;/h2&gt;
&lt;p&gt;ちなみに今より英語力があったはずの2020年（DMM英会話を定期的に使ってた頃）にTOEFL iBT76点を記録したのですが、TOEFL&amp;lt;=&amp;gt;TOEICの換算表によるとTOEIC換算で850~900点くらいらしい。割と妥当な気がする。&lt;/p&gt;</description></item><item><title>島根大学大学院の授業料を2年間免除された話</title><link>https://t-pot.me/posts/daily/exemption-of-tuition/</link><pubDate>Fri, 20 Jan 2023 18:51:40 +0900</pubDate><guid>https://t-pot.me/posts/daily/exemption-of-tuition/</guid><description>&lt;p&gt;今回利用した制度や自分自身の経済状況などの情報を以下に記しておきます。なお、ここに記されている情報は修士課程（博士前期課程）の学生向けのものであり、2023年1月のものです。&lt;/p&gt;
&lt;h2 id="どの制度を使ったか"&gt;どの制度を使ったか&lt;/h2&gt;
&lt;p&gt;利用した制度：大学制度による授業料免除&lt;/p&gt;
&lt;p&gt;下記ページでも紹介されている「② 島根大学の制度（経済的理由・災害等特別な事情）による免除」です。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.shimane-u.ac.jp%2fprocedure%2ftuition_waiver%2ftuition_waiver02.html"
&gt;&lt;/iframe&gt;

&lt;h3 id="島根大学の制度の定める基準について"&gt;「島根大学の制度」の定める基準について&lt;/h3&gt;
&lt;p&gt;この制度で授業料減免を受けるためには、学力基準と家計基準を満たす必要があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学力基準（院1年生の場合）：学部4年までに110単位以上かつ学業成績指数3.0以上&lt;/li&gt;
&lt;li&gt;家計基準：下記の収入基準額の表の通り&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお次の3点に注意してください。また、ここに記載の無い情報については&lt;a href="https://www.shimane-u.ac.jp/_files/00293341/2023-kijun_matsue.pdf"&gt;公式の情報&lt;/a&gt;を参照してください。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;卒業要件単位として認められない単位は含まれません。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;『総所得金額』 ＝ 『総収入金額』－【給与所得の必要経費】－【特別控除額】&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;カッコ内は全額免除の収入基準額(予算状況によって変動する場合があり&lt;/p&gt;
&lt;/blockquote&gt;





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;世帯人員&lt;/td&gt;
 &lt;td&gt;学部&lt;/td&gt;
 &lt;td&gt;博士前期課程&lt;/td&gt;
 &lt;td&gt;博士後期課程&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;1人&lt;/td&gt;
 &lt;td&gt;167（88）万円以下&lt;/td&gt;
 &lt;td&gt;182（96）万円以下&lt;/td&gt;
 &lt;td&gt;254（132）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2人&lt;/td&gt;
 &lt;td&gt;266（140）万円以下&lt;/td&gt;
 &lt;td&gt;290（152）万円以下&lt;/td&gt;
 &lt;td&gt;404（212）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3人&lt;/td&gt;
 &lt;td&gt;306（162）万円以下&lt;/td&gt;
 &lt;td&gt;334（177）万円以下&lt;/td&gt;
 &lt;td&gt;467（245）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;4人&lt;/td&gt;
 &lt;td&gt;334（175）万円以下&lt;/td&gt;
 &lt;td&gt;364（192）万円以下&lt;/td&gt;
 &lt;td&gt;507（266）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;5人&lt;/td&gt;
 &lt;td&gt;360（189）万円以下&lt;/td&gt;
 &lt;td&gt;393（208）万円以下&lt;/td&gt;
 &lt;td&gt;548（288）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;6人&lt;/td&gt;
 &lt;td&gt;378（199）万円以下&lt;/td&gt;
 &lt;td&gt;412（217）万円以下&lt;/td&gt;
 &lt;td&gt;574（302）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;7人&lt;/td&gt;
 &lt;td&gt;395（207）万円以下&lt;/td&gt;
 &lt;td&gt;432（226）万円以下&lt;/td&gt;
 &lt;td&gt;602（315）万円以下&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


&lt;h3 id="自分の場合"&gt;自分の場合&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;実家暮らし（両親二人と自分一人）&lt;/li&gt;
&lt;li&gt;日本学生支援機構の第一種奨学金（月5万）を受給&lt;/li&gt;
&lt;li&gt;両親：自分が学部4年生になったタイミングで定年退職&lt;/li&gt;
&lt;li&gt;学部生時代のGPA：3.5程度（うろ覚え）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;世帯収入の情報については公開しませんが、正直全額免除の基準に達していないと思っていたので初めて免除の連絡を受けた時は驚きました（それくらい基準に達していないと思っていた）。&lt;/p&gt;
&lt;p&gt;一方の学力の基準については、自分が学部生のときにそれなりに上位の成績を納めていたので問題ないだろうと思っていました。&lt;/p&gt;
&lt;h3 id="授業料免除申請書の文面"&gt;授業料免除申請書の文面&lt;/h3&gt;
&lt;p&gt;自分は↓のように申請理由を書いていました。一例として載せておきます。&lt;/p&gt;
&lt;p&gt;昨年度から引き続き，研究や授業に忙殺されアルバイトに時間を割けない状態が続いています．また，2020年度までは両親の経済的支援があったものの，昨年度からはコロナ禍で母親の仕事による収入が減り，父親も無職のため，両親からの支援が無くなり，奨学金や貯金の切り崩し，TA業務による収入で生活していました．今年度も引き続き両親からの支援が見込めず，奨学金に頼った生活となるため，授業料の免除を希望します．&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;大学院進学を検討する方にとって授業料免除制度や奨学金（特に給付型や無利子貸与型）に関する情報を知っているかいないか、あるいは申請したかどうかで大学生活の経済状況は大きく変わると思います。&lt;/p&gt;
&lt;p&gt;手続きに必要な書類が多かったりと少し大変かもしれませんが、半年で26万円弱免除されるのは大きいですよね（そのお金で別のこと出来る訳だし）。この情報が誰かの役に立つことを祈っています&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;その他、詳しい情報が必要でしたらTwitterまでDMしてください。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>一般化逆行列についての雑記</title><link>https://t-pot.me/posts/math/generalized-inverse/</link><pubDate>Wed, 11 Jan 2023 00:13:44 +0900</pubDate><guid>https://t-pot.me/posts/math/generalized-inverse/</guid><description>&lt;h2 id="始めに"&gt;始めに&lt;/h2&gt;
&lt;p&gt;とある資格の勉強中に一般化逆行列の性質についての問題があったので気になって調べてみた。&lt;/p&gt;
&lt;p&gt;ggってみると幾つかヒットしたので読んでみた。大まかに理解するのに下記のページが比較的分かり易かった。&lt;/p&gt;
&lt;p&gt;&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.slideshare.net%2fwosugi%2fss-79624897"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fzellij.hatenablog.com%2fentry%2f20120811%2fp1"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;ただ、色々調べてみると一般化逆行列の表記が$[A^-]$と$[A^+]$に分かれていることに気づいた &amp;amp; ラグランジュの未定乗数法を用いて計算を行う際に若干違和感を抱いてしまった。&lt;/p&gt;
&lt;h2 id="行列の表記の違いについて"&gt;行列の表記の違いについて&lt;/h2&gt;
&lt;p&gt;まず$[A^-]$と$[A^+]$の表記の違いについて調べた。&lt;/p&gt;
&lt;p&gt;文献を漁ってみたところ、下記の文献では一般化逆行列を$[A^-]$、ムーアペンローズ一般逆行列を$[A^+]$と表していた。

&lt;div data-vc_mylinkbox_id="889073264"&gt;&lt;/div&gt;

&lt;/p&gt;
&lt;p&gt;また、日本機械学会の運営する&lt;a href="https://www.jsme.or.jp/jsme-medwiki/13:1002625"&gt;公式サイト&lt;/a&gt;ではムーアペンローズ一般逆行列を$[A^+]$として表現している。その他、下記の記事でも一般化逆行列とムーアペンローズ一般逆行列の表記を$[A^-]$と$[A^+]$で分けている。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fqiita.com%2fhatahataDev%2fitems%2f892599855c091d9773b1"
&gt;&lt;/iframe&gt;

&lt;p&gt;一方、線形代数の参考書として有名な下記の書籍では、一貫して一般逆行列に$[A^-]$を使っており、特に使い分けている感じは無かった&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;

&lt;div data-vc_mylinkbox_id="889073265"&gt;&lt;/div&gt;


&lt;p&gt;やはり一般逆行列とムーアペンローズ一般逆行列を明確に分けるための表現のようだが、そこまで厳密には決まってないのかもしれない。&lt;/p&gt;
&lt;h2 id="ラグランジュの未定乗数法を用いた計算"&gt;ラグランジュの未定乗数法を用いた計算&lt;/h2&gt;
&lt;p&gt;未知数$m$が行列$[A]$のランク$r$以上の場合（$m\geq r$）、ラグランジュ関数を定めて$\{x\}$が最小となるときの$\{\lambda\}$を探すのだが、ここで$\{x\}^T\{x\}$に$1/2$がかかっているのが（初めて見た時は）理解できなかった。&lt;/p&gt;
&lt;p&gt;\begin{equation}
L = \frac{1}{2}\{x\}^T\{x\} - \{\lambda\}^T ([A]\{x\}-\{b\})
\end{equation}&lt;/p&gt;
&lt;p&gt;何も知らない状態でラグランジュの未定乗数法を用いると、単に$\{x\}^T\{x\}$が最小となる候補を探す計算になるはずなので、$\{x\}^T\{x\}$に$1/2$が掛からない次のような形になるのでは…？と思っていた。&lt;/p&gt;
&lt;p&gt;\begin{equation}
L = \{x\}^T\{x\} - \{\lambda\}^T ([A]\{x\}-\{b\})
\end{equation}&lt;/p&gt;
&lt;p&gt;このまま計算すると、&lt;/p&gt;
&lt;p&gt;\begin{equation}
\frac{\partial L}{\partial\{x\}}=2\{x\} - \{\lambda\}^T[A]=0
\end{equation}&lt;/p&gt;
&lt;p&gt;\begin{equation}
\therefore \{x\} = \frac{1}{2}\{\lambda\}^T[A]
\end{equation}&lt;/p&gt;
&lt;p&gt;となるが、結局$\{\lambda\}$は任意の実数を含むベクトルなので$1/2\{\lambda\} = \{\lambda&amp;rsquo;\}$とおけば、&lt;/p&gt;
&lt;p&gt;\begin{equation}
\{x\} = \{\lambda&amp;rsquo;\}^T[A]
\end{equation}&lt;/p&gt;</description></item><item><title>【Gnuplot】multiplotを使って複数のグラフを一つにまとめる方法</title><link>https://t-pot.me/posts/tech/gnuplot-multiplot/</link><pubDate>Tue, 10 Jan 2023 22:37:55 +0900</pubDate><guid>https://t-pot.me/posts/tech/gnuplot-multiplot/</guid><description>&lt;h2 id="始めに"&gt;始めに&lt;/h2&gt;
&lt;p&gt;下記のサイトに従えば主な使い方は分かると思いますが、マージンの設定や、SVGファイル（あるいはepsなど他の形式）で直接出力する方法についてまとまった記事が無かったのでここにまとめておきます。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fss.scphys.kyoto-u.ac.jp%2fperson%2fyonezawa%2fcontents%2fprogram%2fgnuplot%2fmultiplot_01.html"
&gt;&lt;/iframe&gt;

&lt;h2 id="直接svgファイルで出力する方法"&gt;直接svgファイルで出力する方法&lt;/h2&gt;
&lt;p&gt;今回使っているdatファイルは&lt;a href="https://t-pot.me/gnuplot_datFilles.zip"&gt;こちら&lt;/a&gt;からダウンロードしてください。&lt;/p&gt;
&lt;p&gt;datファイルを用意した状態で下記のコマンドを実行すると、直接svgファイルのグラフが出力されます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;reset

set terminal svg enhanced font &amp;#34;Arial, 24&amp;#34; size 1280 960 # svg出力、1280px x 960px
set output &amp;#34;example.svg&amp;#34;
set multiplot layout 3,1 # 3行1列出力
set key horizontal opaque box height 0.6 font &amp;#34;Times New Roman, 20&amp;#34; # 横長の凡例
set xr[0:15]
set xtics (0, 5, 10,15)
set yl font &amp;#34;Times New Roman, 28&amp;#34;
set rmargin screen 0.9 #キャンバスの長さの20%(100%-80%)の余白を右側に作る
set lmargin screen 0.1 #キャンバスの長さの20%の余白を左に作る

set yl &amp;#34;{/:Italic E_{x}, hoge = 10 [m/s]}&amp;#34;
set format x &amp;#34;&amp;#34;
set bmargin screen 0.7128 #グラフの高さとグラフ間の余白設定
set tmargin screen 0.9504
plot &amp;#34;example1.dat&amp;#34; using 1:2 w p ps 0.5 pt 7 title &amp;#34;{/:Italic {E_{x}}^{(1)}&amp;#34; , \
 &amp;#34;example1.dat&amp;#34; using 1:3 w p ps 0.5 pt 9 title &amp;#34;{/:Italic {E_{x}}^{(m)}&amp;#34; , \
 &amp;#34;example1.dat&amp;#34; using 1:4 w p ps 0.5 pt 5 title &amp;#34;{/:Italic {E_{x}}^{(-m)}&amp;#34; , \
 0 w l dt (5, 5) lw 1.5 lt rgb &amp;#39;black&amp;#39; notitle

set yl &amp;#34;{/:Italic E_{x}, hoge = 100 [m/s]}&amp;#34;
set format x &amp;#34;&amp;#34;
set bmargin screen 0.4224 #グラフの高さとグラフ間の余白設定
set tmargin screen 0.66
plot &amp;#34;example2.dat&amp;#34; using 1:2 w p ps 0.5 pt 7 title &amp;#34;{/:Italic {E_{x}}^{(1)}&amp;#34; ,\
 &amp;#34;example2.dat&amp;#34; using 1:3 w p ps 0.5 pt 9 title &amp;#34;{/:Italic {E_{x}}^{(m)}&amp;#34; ,\
 &amp;#34;example2.dat&amp;#34; using 1:4 w p ps 0.5 pt 5 title &amp;#34;{/:Italic {E_{x}}^{(-m)}&amp;#34; , \
 0 w l dt (5, 5) lw 1.5 lt rgb &amp;#39;black&amp;#39; notitle

set yl &amp;#34;{/:Italic E_{x}, hoge = 1000 [m/s]}&amp;#34;
set format x &amp;#34;%g&amp;#34;
set bmargin screen 0.132 #グラフの高さとグラフ間の余白設定
set tmargin screen 0.3696
set xl &amp;#34;{/:Italic n}&amp;#34; font &amp;#34;Times New Roman, 28&amp;#34;
plot &amp;#34;example3.dat&amp;#34; using 1:2 w p ps 0.5 pt 7 title &amp;#34;{/:Italic {E_{x}}^{(1)}&amp;#34; ,\
 &amp;#34;example3.dat&amp;#34; using 1:3 w p ps 0.5 pt 9 title &amp;#34;{/:Italic {E_{x}}^{(m)}&amp;#34; ,\
 &amp;#34;example3.dat&amp;#34; using 1:4 w p ps 0.5 pt 5 title &amp;#34;{/:Italic {E_{x}}^{(-m)}&amp;#34; , \
 0 w l dt (5, 5) lw 1.5 lt rgb &amp;#39;black&amp;#39; notitle
unset multiplot
unset output
&lt;/code&gt;&lt;/pre&gt;&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1673357810/NabeBlog/example_ln9pn0.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1673357810/NabeBlog/example_ln9pn0.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1673357810/NabeBlog/example_ln9pn0.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1673357810/NabeBlog/example_ln9pn0.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1673357810/NabeBlog/example_ln9pn0.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1673357810/NabeBlog/example_ln9pn0.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1673357810/NabeBlog/example_ln9pn0.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1673357810/NabeBlog/example_ln9pn0.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="マルチプロットの例"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h3 id="コマンドについての注意"&gt;コマンドについての注意&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set terminal svg&lt;/code&gt;を&lt;code&gt;set terminal eps&lt;/code&gt;などに変更することで出力するファイル形式の変更可能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;terminalの種類を変えることで出力するファイル形式を変更できますが、文字化けが起こる可能性があり、svg形式では上手く表示できたのにeps形式に変えると上手くいかない、というような場合があります。ファイルの保存形式を変更（例：&lt;code&gt;utf-8&lt;/code&gt; → &lt;code&gt;Shift-JIS&lt;/code&gt;など）することで文字化けを避けられることがあります。&lt;/p&gt;</description></item><item><title>【レビュー】ライザのアトリエ ~常闇の女王と秘密の隠れ家~【う～んこれは太ももw】</title><link>https://t-pot.me/posts/daily/ryza-atelier-review/</link><pubDate>Mon, 02 Jan 2023 23:54:32 +0900</pubDate><guid>https://t-pot.me/posts/daily/ryza-atelier-review/</guid><description>&lt;p&gt;この記事にはネタバレと太ももが含まれています。未プレイの方はブラウザバックをお勧めしますん☆&lt;/p&gt;
&lt;p&gt;&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.gamecity.ne.jp%2fatelier%2fryza%2f"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fstore.steampowered.com%2fapp%2f1121560%2f_%2f%3fl%3djapanese"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;世界200億人の太ももフェチの皆さんお待たせしました。太ももフェチ協会理事のワイも（今更ながら）プレイしてきたのでレビューを書き留めておきます。&lt;/p&gt;
&lt;h2 id="始めに"&gt;始めに&lt;/h2&gt;
&lt;p&gt;KOEI TECMO HOLDINGS CO., LTD.様の&lt;a href="https://www.gamecity.ne.jp/info/videopolicy.html"&gt;ガイドライン&lt;/a&gt;的に広告収入以外での収入は禁じられており、ブログ上でゲーム画像を記載する場合でも同様であると認識しています。&lt;/p&gt;
&lt;p&gt;したがって、&lt;strong&gt;ガイドラインにより収益化が禁止されているため特別な金銭的ご支援は行わないようお願いします&lt;/strong&gt;。また本記事内で用いている画像は©コーエーテクモゲームスです。&lt;/p&gt;
&lt;h2 id="現在のプレイ時間とストーリー到達度"&gt;現在のプレイ時間とストーリー到達度&lt;/h2&gt;
&lt;p&gt;現在のプレイ時間は45時間で、ストーリーの到達度としてはラスボス（メインストーリーのボス）と5属性の各妖精を倒し終わったところです。&lt;/p&gt;
&lt;p&gt;どうやら裏ボスなるものがあるそうなんですけどまだそこまで行けてません。&lt;/p&gt;
&lt;p&gt;ということでまぁ、一通りクリアしてキリの良いとこまでやりきったのでレビューしておきます。&lt;/p&gt;
&lt;h3 id="序盤"&gt;序盤&lt;/h3&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/npJyUVi6HoQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;ゲーム開始直後に↑のOPが流れるのですが、このOP見た時までは割と「お、おもろそうじゃん」って感想が湧いてました（過去形）。&lt;/p&gt;
&lt;p&gt;けど実際にゲームを進めてみると、風景はキレイだけどAAAタイトルのRPGと比べるとモブキャラのデザインやBGMのクオリティの粗さが目立つなと感じてしまいました。まだBGMは我慢できるんだけど、モブキャラの使い回しはさすがにひどいなと思わざるを得なかったですね…&lt;/p&gt;
&lt;p&gt;あと実際にプレイしてみて分かったんですけど、ゲーム性やUIのごちゃごちゃ感、クソ長いチュートリアルはいずれも古き良き（？）JRPG感が強く、令和の時代のプレイヤーからはあまり好評ではないだろうなと思いました。平成でギリギリかな。昭和なら許されてただろうね。&lt;/p&gt;
&lt;p&gt;あと、↑のOPでアンペルさんとリラさんがライザたちと敵対しているような描写があるんですけど、この描写はプレイヤーのミスリードを引き出すためのものでしかなく、ストーリーにはほとんど関係ない描写ですww &lt;del&gt;何でこの描写を入れたのかﾏｼﾞで理解できない&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;ただ、序盤から使えるカメラモードは割と楽しかったです。&lt;/p&gt;
&lt;p&gt;↓みたいに井戸端会議するヒロインsとかを想像してﾆﾁｬりながらカメラモードやってたら普通に「1時間溶けちゃった^^」みたいなことが割とある&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1672731548/daily/games/atelier-ryza/rira2_ilq20v.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ライザのアトリエヒロインs"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;ということで、カメラモードは面白かったけどSteamでセールが入っても4900円くらいするこのゲームについては正直「買わない方が良かったかも…」って思っちゃいましたw&lt;/p&gt;</description></item><item><title>【2023年】新年のご挨拶</title><link>https://t-pot.me/posts/daily/newyeargreetings2023/</link><pubDate>Mon, 02 Jan 2023 17:12:05 +0900</pubDate><guid>https://t-pot.me/posts/daily/newyeargreetings2023/</guid><description>&lt;p&gt;喪中のため簡単に挨拶させていただきます。&lt;/p&gt;
&lt;p&gt;旧年も当ブログに足を運んでくださり誠にありがとうございます。&lt;/p&gt;
&lt;p&gt;本年も当ブログをよろしくお願いいたします。&lt;/p&gt;
&lt;h2 id="旧年のブログ運営のまとめ"&gt;旧年のブログ運営のまとめ&lt;/h2&gt;
&lt;p&gt;旧年は計18本の記事を書きました。カテゴリ内訳としては以下の通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Math: 6本&lt;/li&gt;
&lt;li&gt;Tech: 5本&lt;/li&gt;
&lt;li&gt;Daily: 7本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当ブログへ訪れる方の8割程度が連続体力学や固体力学当の&lt;code&gt;Math&lt;/code&gt;カテゴリの記事を読みに来ており、旧年は「1本/月のペースで連続体力学（Mathカテゴリ）の記事を書く」という目標を掲げておりました。&lt;/p&gt;
&lt;p&gt;しかしながら、Mathカテゴリは6本の記事しか書けず半分しか達成できませんでした。これは正直な所、旧年中の就職活動があまり上手く行かなかったことと、単純にネタに困ってしまったことが理由に挙げられます。&lt;/p&gt;
&lt;p&gt;就活については半分言い分けですが、ネタに困ったのは割と本音の部分です。&lt;/p&gt;
&lt;p&gt;あまり当たり前の内容を記事にするのは好きじゃなくて、痒い所に手が届くような記事を書き続けようという思いを持っており、これを貫こうと思うとどうしても（他のサイトで扱われてるかどうかのチェックも含め）深い部分まで調べたり文献を漁る必要が出てきます。&lt;/p&gt;
&lt;p&gt;こういう思いを持っているとどうしても&lt;strong&gt;調べたら5秒で出てくる内容&lt;/strong&gt;は書けず、書くネタに困ってしまいました。&lt;/p&gt;
&lt;p&gt;ただし、旧年中に書いた記事だと、&lt;a href="https://t-pot.me/posts/math/eb-t-beam-method/"&gt;ベルヌーイ・オイラー梁とティモシェンコはりの違いの比較（理論編）&lt;/a&gt;や&lt;a href="https://t-pot.me/posts/math/cylindrical-coordinate-sys/"&gt;円柱座標系での連続体の運動方程式&lt;/a&gt;、&lt;a href="https://t-pot.me/posts/math/continuousequationmotion/"&gt;オイラーの運動方程式とコーシーの運動方程式【初学者向け】&lt;/a&gt;等は、現在それなりのPV数・エンゲージメント時間となっており、狙い通り&lt;strong&gt;痒い所に手が届く記事&lt;/strong&gt;になっている実感があります。&lt;/p&gt;
&lt;p&gt;あと少し意外なのが、&lt;a href="https://t-pot.me/posts/daily/robonodashreview/"&gt;Robotics;Notes Dashレビュー【ロボットっていいよね &amp;amp; ネタバレ注意】&lt;/a&gt;の記事がそれなりに読まれてることですね。&lt;/p&gt;
&lt;p&gt;当ブログでほぼ唯一のゲームレビュー記事なのですが、未だにそれなりに読まれてますw&lt;/p&gt;
&lt;p&gt;ということで、このブログを初めて3~4年目になりますが、ようやく読者の需要が分かってきましたw&lt;/p&gt;
&lt;h2 id="本年の抱負"&gt;本年の抱負&lt;/h2&gt;
&lt;p&gt;旧年末から時間の余裕が出来てきたので英語学習を再開しました。そこで&lt;a href="https://t-pot.me/posts/daily/first-toeic-in-500m-ys/"&gt;5億年（4年）ぶりにTOEIC受ける話&lt;/a&gt;にも書いてある通り、今月末にTOEICを受けますし、半年後にもTOEICを受けようと考えています（半年後だと割引効くんで）。&lt;/p&gt;
&lt;p&gt;英語以外の目標 or 予定としてはこんな感じかなと。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;計算力学技術者資格の勉強を続ける&lt;/li&gt;
&lt;li&gt;連続体力学関係の記事を1本/2か月で書く（努力目標）&lt;/li&gt;
&lt;li&gt;せっかくなのでプレイしたゲームのレビューを書く習慣をつける&lt;/li&gt;
&lt;li&gt;ハーフマラソン出場&lt;/li&gt;
&lt;li&gt;サイクリングイベント出場&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;計算力学技術者の資格についてはまだまだ新生活始まってからじゃないと予定を立てられない部分が多いですが、固体や振動の2級には挑んでみたいなと思っています。また、これに関連してせっかく勉強するので勉強したことや難しい部分については記事にしたいなと思います。&lt;/p&gt;
&lt;p&gt;ハーフマラソンとサイクリングイベントについて、この冬の時期寒いのでサイクリングからランニングに切り替えまして、最近では&lt;code&gt;5m25sec/km&lt;/code&gt;くらいのペースで走れるようになりました。せっかく鍛えてるのでランニング・サイクリング共に適当な機会（夏秋ごろ？）にイベント参加したいと思います！&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;旧年の反省も活かしつつ、本年も地に足付けて着実に進んでいきます。&lt;/p&gt;
&lt;p&gt;本年も皆様のﾊﾟﾜｰ!を心からﾊﾟﾜｰ!し申し上げます。&lt;/p&gt;</description></item><item><title>"~ was an another success"ってどういう意味？</title><link>https://t-pot.me/posts/daily/another-success/</link><pubDate>Mon, 19 Dec 2022 17:30:46 +0900</pubDate><guid>https://t-pot.me/posts/daily/another-success/</guid><description>&lt;p&gt;例文：The event was an another success.&lt;/p&gt;
&lt;p&gt;意味：そのイベントはまた成功した。&lt;/p&gt;
&lt;p&gt;Twitterでこの表現を見かけたものの、どう日本語訳すべきか分からなかったので調べてみました。&lt;/p&gt;
&lt;p&gt;another successを直訳すると「もう一つの成功」となるのですが、そこから「再びの成功」といった意味に繋がっています。&lt;/p&gt;</description></item><item><title>5億年（4年）ぶりにTOEIC受ける話</title><link>https://t-pot.me/posts/daily/first-toeic-in-500m-ys/</link><pubDate>Mon, 19 Dec 2022 17:30:46 +0900</pubDate><guid>https://t-pot.me/posts/daily/first-toeic-in-500m-ys/</guid><description>&lt;h2 id="あらすじ"&gt;あらすじ&lt;/h2&gt;
&lt;p&gt;修士論文の書ける部分を書き終わってやることが無くなった　＋　仕事でも英語を使うことが多い（はずな）ので英語力を証明するために来月TOEICを受けることにした。&lt;/p&gt;
&lt;p&gt;とは言ってもこの4年間TOEICの勉強&lt;strong&gt;は&lt;/strong&gt;してこなかったので解き方とか、そもそもの英語力に不安があった。こんな状態からでも &lt;del&gt;入れる保険があるんですか！？&lt;/del&gt; それなりの点数を狙えるのだろうか。&lt;/p&gt;
&lt;p&gt;小さな挑戦の日記。&lt;/p&gt;
&lt;h2 id="ここまでの英語学習歴"&gt;ここまでの英語学習歴&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;学部1年：TOEIC Bridge&lt;/li&gt;
&lt;li&gt;学部2年（4年前）：TOEIC 750点&lt;/li&gt;
&lt;li&gt;学部4年：TOEFL iBT 76点（R:16, L:22, S:16, W:22）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;こんな感じにTOEICを受けたのは4年前が最後で、それから2年後に記念碑的に受けたTOEFLは76点というなんとも言えない点数。&lt;/p&gt;
&lt;p&gt;あと、修士1 ~ 2年にかけてはほとんど英語学習っぽいことはしてなかった（英語の論文を精読する機会はあったけど）。&lt;/p&gt;
&lt;h2 id="目指す姿"&gt;目指す姿&lt;/h2&gt;
&lt;p&gt;最初にTOEICを受ける言い訳みたいな理由を書いたけど、それとは別に、この機会に目指したい自分がいる。&lt;/p&gt;
&lt;p&gt;それは継続的に英語のトレーニングを続けられる自分。&lt;/p&gt;
&lt;p&gt;2年前のTOEFLもそうだったけど、英語のテストを受ける前にならないとやる気を出せない自分とサヨナラしたい。なのでこの機会に定期的にTOEICを受けるようにして英語学習も定期的に続けていきたい。&lt;/p&gt;
&lt;h2 id="現状とこれから"&gt;現状とこれから&lt;/h2&gt;
&lt;p&gt;現在は↓の「TOEICの公式問題集9」と「キクタンのスコア800」を使って勉強中。選定理由は「何となく評判良さそう」と思ったから。特に深い理由はありません。&lt;/p&gt;


&lt;div data-vc_mylinkbox_id="889073260"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889073261"&gt;&lt;/div&gt;


&lt;p&gt;一昨日、試しに公式問題集の模擬テストをテスト本番の時間配分で解いてみた（時間の問題でリスニングとリーディングを二日に分けた）。受けた結果は次の通り。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;種類&lt;/td&gt;
 &lt;td&gt;正解数（問）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;リスニング&lt;/td&gt;
 &lt;td&gt;88 / 100&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;リーディング&lt;/td&gt;
 &lt;td&gt;89 / 100&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ということで、（別日に分けたアドバンテージがあるけど）意外に良い結果になった。参考書によると、本番だったら807 ~ 935点程度の点数になるそうなので個人的には良い点数だ。ただ喜んだのも束の間で、幾つか課題も見えてきた。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;時間配分が分からない（特にリーディング）&lt;/li&gt;
&lt;li&gt;先読みスキルが無さ過ぎる（特にリスニング）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;また、各パートごとの大まかな&lt;strong&gt;不正解率&lt;/strong&gt;は↓の通りで、この試験を通じて自分が不得意なパートも分かってきた。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Part1&lt;/td&gt;
 &lt;td&gt;Part2&lt;/td&gt;
 &lt;td&gt;Part3&lt;/td&gt;
 &lt;td&gt;Part4&lt;/td&gt;
 &lt;td&gt;Part5&lt;/td&gt;
 &lt;td&gt;Part6&lt;/td&gt;
 &lt;td&gt;Part7&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;不正解率（%）&lt;/td&gt;
 &lt;td&gt;0&lt;/td&gt;
 &lt;td&gt;20&lt;/td&gt;
 &lt;td&gt;10.3&lt;/td&gt;
 &lt;td&gt;10.5&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;18.8&lt;/td&gt;
 &lt;td&gt;9.3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Part2, 5, 6は不正解率が15%以上と他のパートよりも高く、苦手なパート。とりま今後の取り組みとしては↓の通り。&lt;/p&gt;</description></item><item><title>GENTOS LEDヘッドライトVA-05Dレビュー</title><link>https://t-pot.me/posts/daily/headlight/</link><pubDate>Fri, 09 Dec 2022 21:30:03 +0900</pubDate><guid>https://t-pot.me/posts/daily/headlight/</guid><description>&lt;p&gt;今回購入したのはGENTOS LEDヘッドライト（MAX 300ルーメン）です。公式サイトは&lt;a href="https://www.gentos.jp/products/series/auva/va-05d"&gt;こちら&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;最近、早朝・夜間にランニング etc.をしようと思っても足元がおぼつかないせいでとても怖かったので購入しました。&lt;/p&gt;
&lt;p&gt;購入してから2週間、使用回数は5回だけですが、今のところかなり良い買い物だったなぁと感じたのでレビューしておきます。&lt;/p&gt;
&lt;h2 id="主な仕様"&gt;主な仕様&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;光源：白色LEDと暖色LED各1個&lt;/li&gt;
&lt;li&gt;本体質量（約）：81g（電池含む）&lt;/li&gt;
&lt;li&gt;電池：単4電池2本&lt;/li&gt;
&lt;li&gt;可動域：80°&lt;/li&gt;
&lt;li&gt;防水：1m防水仕様（IP66、IP67準拠）&lt;/li&gt;
&lt;li&gt;最長照射距離：66m&lt;/li&gt;
&lt;li&gt;明るさと点灯時間
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th style="text-align: center"&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;明るさ（約）&lt;/td&gt;
 &lt;td&gt;300ルーメン&lt;/td&gt;
 &lt;td&gt;100ルーメン&lt;/td&gt;
 &lt;td&gt;30ルーメン&lt;/td&gt;
 &lt;td style="text-align: center"&gt;6ルーメン（暖色）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;点灯時間（約）&lt;/td&gt;
 &lt;td&gt;3.5時間&lt;/td&gt;
 &lt;td&gt;10時間&lt;/td&gt;
 &lt;td&gt;30時間&lt;/td&gt;
 &lt;td style="text-align: center"&gt;74時間&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とまぁ、重要なスペックは上記の通りです。ちなみに防水性能についてはIP67で1m防水とのことなので1mの深さに30分間水没させても浸水しないことを意味しています&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。しかしながら実際の明るさや照射範囲、そして実際の付け心地とかベルトの長さが今一分からないですよね…&lt;/p&gt;
&lt;p&gt;ということで詳しい仕様について説明します。&lt;/p&gt;
&lt;h3 id="実際の明るさと照射範囲"&gt;実際の明るさと照射範囲&lt;/h3&gt;
&lt;p&gt;まず300ルーメンから。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1670677728/daily/head-light/300lumen_ivuwnm.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1670677728/daily/head-light/300lumen_ivuwnm.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1670677728/daily/head-light/300lumen_ivuwnm.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1670677728/daily/head-light/300lumen_ivuwnm.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1670677728/daily/head-light/300lumen_ivuwnm.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1670677728/daily/head-light/300lumen_ivuwnm.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1670677728/daily/head-light/300lumen_ivuwnm.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1670677728/daily/head-light/300lumen_ivuwnm.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="picture_of_300lumen"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;300ルーメンだとかなり明るく、大体2車線分くらいの幅を10m先くらいまで照らしてくれます。街灯の無い道でもかなり安心して歩ける明るさです。&lt;/p&gt;
&lt;p&gt;次に100ルーメン。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1670677929/daily/head-light/100lumen_jidgp1.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1670677929/daily/head-light/100lumen_jidgp1.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1670677929/daily/head-light/100lumen_jidgp1.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1670677929/daily/head-light/100lumen_jidgp1.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1670677929/daily/head-light/100lumen_jidgp1.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1670677929/daily/head-light/100lumen_jidgp1.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1670677929/daily/head-light/100lumen_jidgp1.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1670677929/daily/head-light/100lumen_jidgp1.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="picture_of_100lumen"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;300ルーメンの場合と比べると暗く感じるものの、街灯のある道だと特に問題なさそうな明るさです。照射範囲は大体1車線分くらいで、5m程度先まで照らしてくれています。&lt;/p&gt;</description></item><item><title>Strava APIを使ってアクティビティを自動ツイートする</title><link>https://t-pot.me/posts/tech/tweet-srava-activity/</link><pubDate>Fri, 02 Dec 2022 11:47:09 +0900</pubDate><guid>https://t-pot.me/posts/tech/tweet-srava-activity/</guid><description>&lt;p&gt;追記：2023/1/25をもってTwitterアカウントを削除しました。なお、本記事の内容には何ら影響はありません。&lt;/p&gt;
&lt;h2 id="目指す姿とモチベーション"&gt;目指す姿とモチベーション&lt;/h2&gt;
&lt;p&gt;サイクリング・ランニングの走行データを↓の様に定時に自動ツイートする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;サイクリングの場合&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1670325438/NabeBlog/strava_post_thumbnail_jbviy5.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="サイクリングのアクティビティのツイートイメージ"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;ランニングの場合&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1674637159/NabeBlog/strava-activity-image2_vch71j.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ランニングのアクティビティのツイートイメージ"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;上記に似たようなことはIFTTTやZapierを使えば簡単にできます。実際に自分も以前まではそれらの自動化ツールを使っていました。しかしながら拡張性に乏しいため&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;走行ルートをGoogle Maps上に表示しようとするとGoogle Maps APIを使わないとムリ（っぽい）&lt;/li&gt;
&lt;li&gt;走行距離の単位が何故かmだけ（10kmって表示してほしいのに10000mになる、みたいな）&lt;/li&gt;
&lt;li&gt;取得可能なデータが少なく、消費カロリー等のデータにアクセスできない場合がある&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といったことで多少なりともストレスがありました。「痒い所に手が届かない～；；」みたいな。&lt;/p&gt;</description></item><item><title>Octaveで並列処理を用いた実行時間削減を行う方法</title><link>https://t-pot.me/posts/tech/octave-parallel-processing/</link><pubDate>Sat, 23 Jul 2022 20:37:34 +0900</pubDate><guid>https://t-pot.me/posts/tech/octave-parallel-processing/</guid><description>&lt;h2 id="結論"&gt;結論&lt;/h2&gt;
&lt;p&gt;Octaveで並列処理を行いプログラムの実行処理時間を短縮するためには&lt;code&gt;parallel&lt;/code&gt;と呼ばれるパッケージの&lt;code&gt;pararrayfun&lt;/code&gt;や&lt;code&gt;parcellfun&lt;/code&gt;を使って多重for文内の処理を並列処理に変更すればよいです。&lt;/p&gt;
&lt;p&gt;結論としては上記の通りなのですが、もう少し詳しく解説します。&lt;/p&gt;
&lt;h2 id="並列処理を行うためのパッケージparallel"&gt;並列処理を行うためのパッケージparallel&lt;/h2&gt;
&lt;p&gt;Octaveで他のプログラミング言語のように並列処理を行うためのツールとしてparallelというパッケージが用意されています。「並列処理ってなんのこっちゃ」っていう方は&lt;a href="https://qiita.com/4_mio_11/items/7f418ca661d9f5a2a39d"&gt;こちら&lt;/a&gt;を読んでみると良いかもしれません。&lt;/p&gt;
&lt;p&gt;公式のマニュアルページはあったのですが、今はなくなってます。主要な関数の一つであるpararrayfun()関数について大まかな使い方も載っています。&lt;/p&gt;
&lt;h2 id="使う上での注意"&gt;使う上での注意&lt;/h2&gt;
&lt;p&gt;使う上で幾つか注意点があり、主なものを下記にリストします。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windowsでインストール中にエラーが出る&lt;/li&gt;
&lt;li&gt;引数と返り値の次元を合わせる必要がある&lt;/li&gt;
&lt;li&gt;デバッグにはarrayfunを使うと便利&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下詳細。&lt;/p&gt;
&lt;h3 id="windowsでインストール中にエラーが出る"&gt;Windowsでインストール中にエラーが出る&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;pkg install -forge parallel&lt;/code&gt;でパッケージをインストールする際にデフォルトの状態だとWindowsではエラーが出ます。&lt;/p&gt;
&lt;p&gt;詳しい内容や対処方法は下記のページを参照してください。
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2foctave.discourse.group%2ft%2ffail-of-parallel-4-0-1-installation-on-windows-10-home-and-octave-7-1-0%2f2533"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h3 id="引数と返り値の次元を合わせる必要がある"&gt;引数と返り値の次元を合わせる必要がある&lt;/h3&gt;
&lt;p&gt;pararrayfun()関数に渡す引数と返り値は同じ次元を持っていなければなりません。&lt;/p&gt;
&lt;p&gt;公式ページのコードをそのまま使って解説しますが、↓のプログラムで&lt;code&gt;vector_x&lt;/code&gt;と&lt;code&gt;vector_y&lt;/code&gt;は1行10列の同じ次元を持つ配列です。pararrayfun（というかこの場合は&lt;code&gt;fun&lt;/code&gt;）の引数と返り値の次元は一致している必要があります。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pkg load parallel
fun = @(x) x.^2;
vector_x = 1:10;
vector_y = pararrayfun(nproc, fun, vector_x, &amp;#34;Vectorized&amp;#34;, true, &amp;#34;ChunksPerProc&amp;#34;, 1)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;試しに引数（&lt;code&gt;vector_x&lt;/code&gt;）を1行10列の配列とし、返り値（&lt;code&gt;vector_y&lt;/code&gt;）を10行1列の配列とするプログラムを書いてみます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pkg load parallel
fun = @(x) x.^2&amp;#39;;
vector_x = 1:10;
vector_y = pararrayfun(nproc, fun, vector_x, &amp;#34;Vectorized&amp;#34;, true, &amp;#34;ChunksPerProc&amp;#34;, 1)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;すると次のようなエラーが帰ってきます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;error: cat: dimension mismatch
error: called from
 chunk_parcellfun&amp;gt;@&amp;lt;anonymous&amp;gt; at line 55 column 33
 chunk_parcellfun at line 55 column 15
 pararrayfun at line 73 column 28
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="デバッグにはarrayfunを使うと便利"&gt;デバッグにはarrayfunを使うと便利&lt;/h3&gt;
&lt;p&gt;pararrayfunは通常の状態で使うとエラーの詳細までは表示してくれません。一応エラー詳細を出そうとすると引数の&lt;code&gt;ErrorHandler&lt;/code&gt;を設定すれば見れるようですが、面倒なので私は使っていません。ErrorHandlerについては下のページを参照してください。&lt;/p&gt;</description></item><item><title>コスパ最強のロードバイクのスプロケット用トルクレンチ</title><link>https://t-pot.me/posts/daily/torque-wrench/</link><pubDate>Sat, 23 Jul 2022 00:26:32 +0900</pubDate><guid>https://t-pot.me/posts/daily/torque-wrench/</guid><description>&lt;h2 id="結論"&gt;結論&lt;/h2&gt;
&lt;p&gt;モノタロウのトルクレンチ（精度±4%）がコスパ最強なので（ガチの整備士とかじゃない限り）スプロケット交換等に必要なトルクレンチに迷ったらこれが滅茶苦茶オススメです。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.monotaro.com%2fp%2f0652%2f8524%2f"
&gt;&lt;/iframe&gt;

&lt;p&gt;これで終わっても良いのですが、以下で補足説明します。&lt;/p&gt;
&lt;h2 id="一緒に使うのにオススメの工具"&gt;一緒に使うのにオススメの工具&lt;/h2&gt;
&lt;p&gt;SHIMANOさんのスプロケットなら、当たり前ですがSHIMANOさんのロックリング工具がオススメです。&lt;/p&gt;
&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/B000F5LLAS.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/B000F5LLAS/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;シマノ (SHIMANO) 工具 TL-LR15 ロックリング工具 (ガイドピン付) Y12009230
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;これとモノタロウのトルクレンチを併せて使うには専用のソケットが必要です。私は↓のモノタロウさんの対辺寸法24mmのソケットを使っています。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.monotaro.com%2fp%2f4891%2f9464%2f"
&gt;&lt;/iframe&gt;

&lt;p&gt;上記の工具を一式取り付けると↓のようになります。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1659966349/NabeBlog/tool3_gudl5z.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1659966349/NabeBlog/tool3_gudl5z.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1659966349/NabeBlog/tool3_gudl5z.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1659966349/NabeBlog/tool3_gudl5z.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1659966349/NabeBlog/tool3_gudl5z.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1659966349/NabeBlog/tool3_gudl5z.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1659966349/NabeBlog/tool3_gudl5z.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1659966349/NabeBlog/tool3_gudl5z.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="tool"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h2 id="デジタルトルクレンチが必要かどうかは人による"&gt;デジタルトルクレンチが必要かどうかは人による&lt;/h2&gt;
&lt;p&gt;デジタルトルクレンチはもちろんあったらあったで便利ですし、現在のトルクを把握しやすいのでより安全に大切な自転車を整備できるようになるとは思います。&lt;/p&gt;</description></item><item><title>【レビュー】PROBIKEKITさんでホイール買った話【フルクラムレーシング4】</title><link>https://t-pot.me/posts/daily/probikekitjp-wheel/</link><pubDate>Sat, 23 Jul 2022 00:23:13 +0900</pubDate><guid>https://t-pot.me/posts/daily/probikekitjp-wheel/</guid><description>&lt;p&gt;&lt;a href="https://t-pot.me/posts/daily/probikekit-review/"&gt;前回&lt;/a&gt;から続いて2回目のProBikeKitさんでのお買い物です。&lt;/p&gt;
&lt;h2 id="今回の買い物"&gt;今回の買い物&lt;/h2&gt;
&lt;p&gt;今回は↓のフルクラムレーシング4（リムブレーキ版）を購入しました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1659966348/NabeBlog/wheel_i44bpt.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1659966348/NabeBlog/wheel_i44bpt.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1659966348/NabeBlog/wheel_i44bpt.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1659966348/NabeBlog/wheel_i44bpt.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1659966348/NabeBlog/wheel_i44bpt.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1659966348/NabeBlog/wheel_i44bpt.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1659966348/NabeBlog/wheel_i44bpt.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1659966348/NabeBlog/wheel_i44bpt.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="wheel"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;ProBikeKitの商品ページは&lt;a href="https://www.probikekit.jp/bicycle-wheels/fulcrum-racing-4-c17-clincher-wheelset/11815031.html?variation=11815033"&gt;こちら&lt;/a&gt;です。&lt;/p&gt;
&lt;h3 id="支払金額"&gt;支払金額&lt;/h3&gt;
&lt;p&gt;購入時の金額は、ProBikeKitさんのセールと友達紹介の報奨金で-3650円されて35205円になり&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;、関税通過で+2000円支払いました。&lt;/p&gt;
&lt;p&gt;なので今回のトータルの支出は37205円になりましたが、日本国内の店舗で購入するとすぐ5万、6万とかの値段になるのでﾏｼﾞで安い…笑&lt;/p&gt;
&lt;h3 id="注文から受け取りまで"&gt;注文から受け取りまで&lt;/h3&gt;
&lt;p&gt;注文から5日でイギリスから発送されました。&lt;/p&gt;
&lt;p&gt;今回は割と早い法ですが、ProBikeKitさんは発送に時間がかかるのがデフォなので、発送遅いな～と思ったらカスタマーサービスまでメールした方が良いです（実話）。&lt;/p&gt;
&lt;p&gt;結局受け取りまでは1週間しかかからず、↓みたいな感じでしっかり梱包されたものを郵便局で受け取りました。白い袋には取説とかクイックリリースのパーツが入ってました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1659966348/NabeBlog/wheel_case_i5u1mu.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1659966348/NabeBlog/wheel_case_i5u1mu.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="wheel_package"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h3 id="早速試乗そして感想"&gt;早速試乗そして感想&lt;/h3&gt;
&lt;p&gt;さっそく100kmくらい山道や農道中心に走ってみました。&lt;/p&gt;</description></item><item><title>ベルヌーイ・オイラー梁とティモシェンコはりの違いの比較（計算編）</title><link>https://t-pot.me/posts/math/compare-be-tim-beam-theory/</link><pubDate>Tue, 14 Jun 2022 20:52:25 +0900</pubDate><guid>https://t-pot.me/posts/math/compare-be-tim-beam-theory/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;この記事は前回の記事の続きで、&lt;strong&gt;ベルヌーイ・オイラー梁とティモシェンコはりの違いを実際に計算を通して調べてみよう&lt;/strong&gt;という趣旨の記事です。前回の記事は&lt;a href="https://t-pot.me/posts/math/eb-t-beam-method/"&gt;こちら&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;なお、この記事では一部説明を省略している部分もあるので、詳しくは以下の文献などを参照してください。&lt;/p&gt;
&lt;p&gt;&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4254231350.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4254231350/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;弾性学ハンドブック
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4627910711.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4627910711/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;工業振動学 第２版
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h3 id="注意"&gt;注意&lt;/h3&gt;
&lt;p&gt;前回の記事では梁に任意の分布荷重$q(x, t)$が作用している場合を考えましたが、 &lt;del&gt;これを解くのは面倒なので&lt;/del&gt; 本記事の趣旨は二つの理論の単純な比較なので、以降、$q(x, t)=0$つまり自由振動の場合を考えます。&lt;/p&gt;
&lt;p&gt;なお、$q(x, t)\ne0$とした強制振動の場合の解析方法は文献&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;に記載されています。&lt;/p&gt;
&lt;h3 id="梁についての条件"&gt;梁についての条件&lt;/h3&gt;
&lt;p&gt;梁は下図の様に両端単純支持されたものを考えます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1656757774/NabeBlog/natural_freq_calculate_condition_ql9ats.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="beam"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h2 id="ベルヌーイオイラー梁の場合"&gt;ベルヌーイ・オイラー梁の場合&lt;/h2&gt;
&lt;p&gt;前回の記事から、ベルヌーイ・オイラー梁の横振動方程式は次の通り表せます。&lt;/p&gt;</description></item><item><title>ベルヌーイ・オイラー梁とティモシェンコはりの違いの比較（理論編）</title><link>https://t-pot.me/posts/math/eb-t-beam-method/</link><pubDate>Tue, 07 Jun 2022 13:56:55 +0900</pubDate><guid>https://t-pot.me/posts/math/eb-t-beam-method/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;つい最近ティモシェンコのはり理論について学習する機会があったのですが、あまり簡易に説明されたものが無かったので自分で書くことにしました。完全に理解するためにベルヌーイ・オイラー梁の理論との比較を行います。&lt;/p&gt;
&lt;p&gt;なお、本記事では一部の式の導出を省略していますので詳細については以下の文献などを参照してください。&lt;/p&gt;
&lt;p&gt;&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4254231350.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4254231350/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;弾性学ハンドブック
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/425423144X.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/425423144X/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;楽しく学ぶ 材料力学
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h3 id="追記"&gt;追記&lt;/h3&gt;
&lt;p&gt;具体的な計算例として↓のページで両者の方法を用いて梁の固有角振動数を求めてみました。理論だけでなく計算例も見たい方は参照してみてください。
&lt;a href="https://t-pot.me/posts/math/compare-be-tim-beam-theory/"&gt;ベルヌーイ・オイラー梁とティモシェンコはりの違いの比較（計算編）&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="ティモシェンコのはり理論とは"&gt;ティモシェンコのはり理論とは&lt;/h2&gt;
&lt;p&gt;学部生レベルの材料力学で扱うようなベルヌーイ・オイラー梁の理論とは異なり、ティモシェンコのはり理論は梁に作用するせん断力を考慮して梁の変位を計算する理論です。正確な定義は&lt;a href="https://www.jsme.or.jp/jsme-medwiki/01:1008191"&gt;こちら&lt;/a&gt;にある通りです。&lt;/p&gt;
&lt;p&gt;なお、ティモシェンコのはり理論を用いて梁の振動を考えるときには曲げモーメントによる回転運動に対する回転慣性を考慮する必要があり、これもベルヌーイ・オイラー梁の理論と異なる部分でもあります。&lt;/p&gt;
&lt;h2 id="それぞれの理論での横振動方程式"&gt;それぞれの理論での横振動方程式&lt;/h2&gt;
&lt;p&gt;下図のような梁の微小要素に対してベルヌーイ・オイラー梁とティモシェンコはりのそれぞれの理論を用いて梁の横振動方程式を考えます。なお、簡単のため梁は均質で一様な断面をもつと仮定します。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1654582010/NabeBlog/beam_inifinitesimal_element_fmo4yi.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="Infinitesimal_beam_element"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;なお、式変形で用いる変数はそれぞれ以下の物理量を指しています。&lt;/p&gt;</description></item><item><title>円柱座標系での連続体の運動方程式</title><link>https://t-pot.me/posts/math/cylindrical-coordinate-sys/</link><pubDate>Mon, 02 May 2022 17:27:16 +0900</pubDate><guid>https://t-pot.me/posts/math/cylindrical-coordinate-sys/</guid><description>&lt;p&gt;先月、円柱座標系での連続体の運動方程式の導出を扱ったのですが、複数ある導出方法の中で初学者にとって理解しやすい方法についての解説がどこにも載っていなかったので自分で書くことにしました。&lt;/p&gt;
&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;本記事ではベクトルと行列のそれぞれを明示するために行列Aの場合は$[A]$、ベクトルAの場合は$\{A\}$のように&lt;code&gt;[]&lt;/code&gt;と&lt;code&gt;{}&lt;/code&gt;を使い分けています。&lt;/p&gt;
&lt;p&gt;また、本記事では円柱座標系での連続体の運動方程式の導出について簡単な紹介しか行わないため、詳細については下記の文献などを参照してください。&lt;/p&gt;
&lt;p&gt;&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4627666012.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4627666012/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;弾性力学入門 - ていねいな数式展開で基礎をしっかり理解する
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/4320081846.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/4320081846/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;弾性力学
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;なお、この記事を読むにあたって以前書いた&lt;a href="https://t-pot.me/posts/math/continuousequationmotion/"&gt;オイラーの運動方程式関連の話&lt;/a&gt;と&lt;a href="https://t-pot.me/posts/math/stresstensor/"&gt;応力テンソル&lt;/a&gt;の内容を理解しておいた方が理解しやすいかもしれません。&lt;/p&gt;
&lt;p&gt;また、ここでいう円柱座標系は下の図のような$r, \theta, z$座標系を指しています。
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1652083107/NabeBlog/%E5%86%86%E6%9F%B1%E5%BA%A7%E6%A8%99%E7%B3%BB_ekje9b.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="円柱座標系のポンチ絵"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>1年のアプリ開発の振り返りポエム</title><link>https://t-pot.me/posts/daily/review-team-development/</link><pubDate>Mon, 04 Apr 2022 14:17:44 +0900</pubDate><guid>https://t-pot.me/posts/daily/review-team-development/</guid><description>&lt;p&gt;※　技術的な話は1ミリもありません。&lt;/p&gt;
&lt;p&gt;2021年2~3月にかけてスマートフォンアプリを開発・リリースしました。アプリの名前はSUEPです。このアプリは島根大学の学生向けアプリで、島根大学に関連するあらゆる有益な情報を収集する（ことを目指している）アプリです。&lt;/p&gt;
&lt;p&gt;元々私一人で開発を進めていたのですが、やりたいことに対して人手が足りず、途中から人を集めてチーム開発をすることにしました。&lt;/p&gt;
&lt;p&gt;正確なリリース日は2021年3月24なので、リリースから約1年経った記念に、開発に関して色々感じたことを書いておこうと思います。&lt;/p&gt;
&lt;h2 id="きっかけ"&gt;きっかけ&lt;/h2&gt;
&lt;p&gt;もともとこのアプリの開発を始めた最も大きなきっかけは新型コロナウィルスの蔓延でした。&lt;/p&gt;
&lt;p&gt;そのころ、&lt;strong&gt;終わりの見えないコロナ禍で色々な面で困っている大学生の話を頻繁に聞いていました&lt;/strong&gt;。ただでさえストレスの掛かる新学期に、大学からの通達で「&lt;em&gt;大学での活動禁止&lt;/em&gt;」「県外からの移動の際には〇日 or 〇週間の&lt;em&gt;自宅待機&lt;/em&gt;」といった制約がかかり、中々自由に活動できない方が多くいました。&lt;/p&gt;
&lt;p&gt;一方、大学側の対応に不満を抱く方も多かったように思います。大学は学生に対してキャンパスに来ないようにお願いしていましたが、中々そのお願いに見合ったサポートは用意されていませんでした。&lt;/p&gt;
&lt;p&gt;さらに、大学から発信される情報はアクセスしにくい場所（サイト）で配信されていたり、全くもって学生に便利なシステムにはなっていませんでした（現在もそうですが）。&lt;/p&gt;
&lt;p&gt;この当時、個人的に「問題だなあ」と感じたのが&lt;strong&gt;学生にとって有意義な情報があらゆるプラットフォームに散らばりすぎている&lt;/strong&gt;という点です。&lt;/p&gt;
&lt;p&gt;大学公式のTwitterアカウントから学生向けの情報がつぶやかれることもあれば、時にはホームページ上でつぶやかれることもあり、そして時にはYouTube上で…といったような状況でした（残念ながら現在もそうですが）。&lt;/p&gt;
&lt;p&gt;そこで、この問題を解決すために「&lt;strong&gt;1つのプラットフォームで島大の情報を網羅するアプリを作ってみよう！&lt;/strong&gt;」と考えるようになりました。&lt;/p&gt;
&lt;h3 id="そもそも有意義な情報-is-何"&gt;そもそも有意義な情報 is 何&lt;/h3&gt;
&lt;p&gt;しかし、アプリ制作を初めて最初に躓いたのが、いったい誰のためのアプリにするのかという点でした。&lt;/p&gt;
&lt;p&gt;当たり前ですが、人によって「重要だ」または「有意義だ」と感じる情報は異なるため、どういった情報にフォーカスするべきなのか迷うことが多々ありました。&lt;/p&gt;
&lt;p&gt;要件定義もそうですが、ユーザーのターゲティングなど、当時の私は何も知らないことが多く、非常に非効率的な開発を進めてしまっていたのをよく思い出します。こうした背景から、（今でもまだまだそうですが）&lt;strong&gt;このアプリが誰のためのアプリなのか&lt;/strong&gt;という点を考え切れていませんでした。&lt;/p&gt;
&lt;h2 id="アプリ開発"&gt;アプリ開発&lt;/h2&gt;
&lt;p&gt;始めに話した通りですが、リリース当初は一人でアプリを開発していました。&lt;/p&gt;
&lt;p&gt;しかしながら、やりたい事に対して私のキャパシティが追いついておらず、一緒にプログラミング・デザイン・広報 etc. をしてくれる人を集めることにしました（合計で5人くらい欲しかった）。&lt;/p&gt;
&lt;p&gt;一緒に開発に携わってくれる人を集め初めた最初の2か月くらいで2人、次の5か月で4人集まったのですが、現在では私を含め開発メンバーは2人しかいません。&lt;/p&gt;
&lt;p&gt;なぜこのようなことになったかというと、&lt;strong&gt;私が独学できない人をサポートしきれないから&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;今回、開発に携わりたい人を集めるうえで条件は特に定めていませんでした。そのため、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;「プログラミング未経験だけど興味があります（作りたいものは特にないです）！」&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;「デザイナー…？いや（プログラミング未経験だけど）プログミングしたいっす…」&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という人も集まってきました。もちろん、&lt;strong&gt;今までプログラミングの機会が無かっただけで、一度プログラミングの楽しさを知った後に勝手に沼にハマるタイプの人もいるので、プログラミング未経験者をdisっている訳ではありません&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;ただ、今思えば、集まってきた人たちの大多数が「最近話題によく上がるプログラミングとかいうコンテンツに興味あるし首突っ込んでみよ」という比較的軽い考えを持っていたように思います。&lt;/p&gt;
&lt;p&gt;これを踏まえて今後どうするのか、考えた結果、&lt;em&gt;ミーハーなだけの方々&lt;del&gt;ほとんどの場合友達も連れて見学に来るので&lt;/del&gt;簡単に見分けが付く&lt;/em&gt;ので、今後は一人で勇気をもって見学に来た人だけに対応しようと思っています。&lt;/p&gt;
&lt;h3 id="独学できる人はとても貴重"&gt;独学できる人はとても貴重&lt;/h3&gt;
&lt;p&gt;これもまた人を集めてみたからこそ分かったことですが、独学できる人は貴重です。&lt;/p&gt;
&lt;p&gt;私自身、幸運なことに学部生時代に所属していた部活同を通じて、ジャンルは様々でしたが、&lt;strong&gt;独学できる人&lt;/strong&gt;に多く出会ってきました。&lt;/p&gt;
&lt;p&gt;放っておいても自分でアプリ作っちゃう人、好きな学問を独学できる人、好きな何かを改造する人 etc. 色んな人がいました。&lt;/p&gt;
&lt;p&gt;その当時は気付かなかったのですが、最近では、自分もこの独学できる人の一員で、何かモノを作るために勉強が必要ならそれを独学できて当たり前という価値観を持っています。&lt;/p&gt;
&lt;p&gt;少し話が変わりますが、今回アプリ開発に興味を持ってくれた方の中で、非常に困惑した例を挙げておきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;何かエラーにぶつかったとき、エラーの内容を読んでくれない / 一旦自分で調べてくれない&lt;/li&gt;
&lt;li&gt;フレームワークのチュートリアルを一人でやってくれない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上記の例に通じているのは、問題の解決に一人で挑めない/ 挑もうとしないという点です。&lt;/p&gt;
&lt;p&gt;初めて触るフレームワークのチュートリアルであっても何か予期しないエラーなどが起こるのは想定しえます。また、プログラミングの途中で初めて出会うエラー文もあるでしょう。私自身もそういったエラーに遭遇したことはあります。&lt;/p&gt;
&lt;p&gt;こうした問題に対面した際、私たちのチームでは45分以上掛けて解決できなかった問題は人に聞くように定めています。ただし、これは&lt;strong&gt;45分間全力で調べたけど見つからない場合&lt;/strong&gt;を指しています。&lt;/p&gt;
&lt;p&gt;このような開発規則を定め、事前にしっかりと説明しているにも関わらず、&lt;em&gt;私一人ではできない or やりたくないから始めから誰か付き合って&lt;/em&gt;とお願いされることが何度かありました。&lt;/p&gt;
&lt;p&gt;このようなお願いをされて付き合ってもお互いに成長が無い時間になってしまううえ、私自身がそこまで時間を割けないので、基本的に難しい問題についてのみ質問を受けるという仕組みにしていました。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;逆にこの仕組みに納得して今まで一緒に開発で来ているのは一人だけです&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;ここからも分かる通り、一人でも調べたり勉強したりして問題の解決に挑める人材というのは貴重です。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;良い経験にはなったけど、多分一人で開発してた方が開発スピードは早かっただろうなと今では思っています。&lt;/p&gt;
&lt;p&gt;ただ、チーム開発の良い点は技術や知識の俗人化を防げる点にあるとも思っていて、仮に何かしらの形で援助を受けながら長期にわたって開発・管理する際にはチーム開発がベストだろうとも思っています。&lt;/p&gt;
&lt;p&gt;就活が落ち着いたらまたがっつりアプリ開発に戻る予定ですし、最近は時間のある時にAWSを使ったネットワーク・サーバー構築本と睨めっこしてます。&lt;/p&gt;</description></item><item><title>【React Native】Invariant Violation "main" has not been registered... のエラーについて</title><link>https://t-pot.me/posts/tech/rn-modules-error/</link><pubDate>Thu, 17 Mar 2022 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/tech/rn-modules-error/</guid><description>&lt;h2 id="このエラーが起こった原因私の場合"&gt;このエラーが起こった原因（私の場合）&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;yarn&lt;/code&gt;を使ってライブラリの依存管理をしているのですが、不要なライブラリを削除した後にこのエラーが出ました。おそらくパッケージマネージャ自体の何らかの不具合によるものだと思われます。&lt;/p&gt;
&lt;h3 id="環境"&gt;環境&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;package.json&lt;/code&gt;の一部抜粋です。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; &amp;#34;dependencies&amp;#34;: {
 &amp;#34;expo&amp;#34;: &amp;#34;^44.0.0&amp;#34;,
 &amp;#34;react&amp;#34;: &amp;#34;17.0.1&amp;#34;,
 &amp;#34;react-native&amp;#34;: &amp;#34;0.64.3&amp;#34;,
 }
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="エラー文"&gt;エラー文&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Invariant Violation &amp;#34;main&amp;#34; has not been registered. This can happen if: *Metro (the local dev server)
is run from the wrong folder. Check if Metro is running, stop it and restart it in the current project.*
A module failed to load due to an error and `AppRegistry.registerComponent` wasn&amp;#39;t called.
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="解決方法"&gt;解決方法&lt;/h3&gt;
&lt;p&gt;私の場合、不要なライブラリの削除を行った直後にこのエラーが突然出るようになったので、&lt;code&gt;yarn&lt;/code&gt;によって&lt;code&gt;node_modules&lt;/code&gt;と&lt;code&gt;yarn.lock&lt;/code&gt;に変更が入った不具合が生じたと推測しています。&lt;/p&gt;
&lt;p&gt;これを解決するために、&lt;strong&gt;node_modulesとyarn.lockの削除と再生成を行いました&lt;/strong&gt;。次の通りの手順を取りました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;node_modules&lt;/code&gt;と&lt;code&gt;yarn.lock&lt;/code&gt;の削除&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yarn install&lt;/code&gt;コマンドの実行&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;これ以外の原因で同じエラーが出ることがあるそうですが、今回は原因が単純だったので対応も楽でした。やはりこまめにブランチを切っておくことが大事。&lt;/p&gt;</description></item><item><title>【React Native】EAS buildでconfigファイルが読み込まれないときの対処法</title><link>https://t-pot.me/posts/tech/rn-easerror/</link><pubDate>Wed, 16 Mar 2022 23:11:39 +0900</pubDate><guid>https://t-pot.me/posts/tech/rn-easerror/</guid><description>&lt;p&gt;2023年1月4日に廃止になる&lt;code&gt;expo build&lt;/code&gt;コマンドに変わり、現在、&lt;code&gt;eas build&lt;/code&gt;コマンドを介したアプリケーションのビルドが推奨されています。そこで、私もEAS buildを初体験してみようと思ったのですが、思わぬエラーに詰まってしまったので紹介しておきます。&lt;/p&gt;
&lt;h2 id="今回起こったこと"&gt;今回起こったこと&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;eas build&lt;/code&gt;コマンドでアプリをビルドしようとしたところ、下記のエラー文が&lt;code&gt;Prebuild&lt;/code&gt;の段階で出ており、ビルドを完了できませんでした。なお、この時点で&lt;code&gt;expo build:andriod&lt;/code&gt;コマンドによるビルドは問題なく動きました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[05:49:21] 📝 Android package Learn more: https://expo.fyi/android-package
[stderr] [05:49:21] Input is required, but Expo CLI is in non-interactive mode.
[stderr] Your project must have a `package` set in the Expo config (app.json or app.config.js).
[stderr] See https://expo.fyi/android-package
bash exited with non-zero code: 1
So, I checked package section in my app.config.js, but the package section is included.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;エラー文を読んだところ、単に「&lt;code&gt;app.json&lt;/code&gt;または&lt;code&gt;app.config.js&lt;/code&gt;内に&lt;code&gt;package&lt;/code&gt;に関する部分が含まれていないよ！」ということを示していることが分かります。「あれ？書いてあるはずだけどな…」と思ったのですが、一応今回のプロジェクトの&lt;code&gt;app.config.js&lt;/code&gt;を調べてみました。&lt;/p&gt;
&lt;p&gt;そのときの&lt;code&gt;app.config.js&lt;/code&gt;は↓のようになっていました。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;export default {
 name: &amp;#39;SUEP&amp;#39;,
 icon: &amp;#39;./assets/suep_icon.png&amp;#39;,
 version: process.env.MY_CUSTOM_PROJECT_VERSION || &amp;#39;1.1.3&amp;#39;,
 orientation: &amp;#39;portrait&amp;#39;,
 splash: {
 image: &amp;#39;./assets/splash.png&amp;#39;,
 resizeMode: &amp;#39;contain&amp;#39;,
 backgroundColor: &amp;#39;#FFFFFF&amp;#39;,
 },
 userInterfaceStyle: &amp;#39;automatic&amp;#39;,
 assetBundlePatterns: [&amp;#39;**/*&amp;#39;],
 updates: {
 fallbackToCacheTimeout: 10000,
 },
 android: {
 package: &amp;#39;com.tpot.suepapp&amp;#39;,
 versionCode: 12,
 permissions: [],
 adaptiveIcon: {
 foregroundImage: &amp;#39;./assets/suep_icon.png&amp;#39;,
 backgroundColor: &amp;#39;#FFFFFF&amp;#39;,
 },
 },
 hooks: {
...secret...
 },
 plugins: [&amp;#39;sentry-expo&amp;#39;],
 extra: {
...secret...
 },
};
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ここで分かる通り、&lt;code&gt;android&lt;/code&gt;セクション内に&lt;code&gt;package&lt;/code&gt;セクションが間違いなく含まれています。&lt;/p&gt;</description></item><item><title>応力テンソルが非対称となる場合</title><link>https://t-pot.me/posts/math/not-synmtric-stress-tensor/</link><pubDate>Fri, 04 Mar 2022 15:47:10 +0900</pubDate><guid>https://t-pot.me/posts/math/not-synmtric-stress-tensor/</guid><description>&lt;h2 id="始めにスキップ可"&gt;始めに（スキップ可）&lt;/h2&gt;
&lt;p&gt;前回、前々回と&lt;a href="https://t-pot.me/posts/math/stresstensor/"&gt;応力テンソルとその性質&lt;/a&gt;および&lt;a href="https://t-pot.me/posts/math/continuousequationmotion/"&gt;オイラーの運動方程式とコーシーの運動方程式&lt;/a&gt;の二つの概念ついて説明しました。&lt;/p&gt;
&lt;p&gt;ここまでくると、特殊な場合を除いて応力テンソルが対称テンソルとなることを紹介すると思うのですが、往々にして対称テンソルとならない条件についての解説は省かれます。ここで大抵の方は「&lt;strong&gt;対称テンソルとならない場合があるのか…？&lt;/strong&gt;」という疑問を持つと思います。&lt;/p&gt;
&lt;p&gt;本記事では、応力テンソルが非対称となるある場合について解説します。なお、この記事を読むにあたって次の4点に注意してください。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;微小変形を仮定しています。&lt;/li&gt;
&lt;li&gt;応力テンソルとオイラーの運動方程式の定義を理解している方向けに記事を書いています。&lt;/li&gt;
&lt;li&gt;本記事では、ベクトルと行列のそれぞれを明示するため、行列Aを$\left[A\right]$と表し、ベクトルAを$\{A\}$と表しており、&lt;code&gt;[]&lt;/code&gt;と&lt;code&gt;{}&lt;/code&gt;を使い分けています。&lt;/li&gt;
&lt;li&gt;初学者向けに書いているので縮約記号を用いていません（縮約記号を使った方が式が短くなりますが&amp;hellip;）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本記事の詳細について、不明瞭な部分などは以下の書籍を参照してください。&lt;/p&gt;

&lt;div data-vc_mylinkbox_id="889166451"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889172147"&gt;&lt;/div&gt;


&lt;h2 id="体積モーメントの導入"&gt;体積モーメントの導入&lt;/h2&gt;
&lt;p&gt;ある物体に無視できない大きさの体積モーメントが作用している場合、応力テンソルは非対称となります。&lt;/p&gt;
&lt;p&gt;体積モーメントの定義は下記の通りです&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;電場内で誘電体が影響を受ける場合，または磁場内で磁性体が影響を受ける場合などでは，固体の各部分がモーメントを受けることがあり，このような場合に単位体積当たりに働くモーメントはベクトル量で，これを体積モーメントといい，これを記号Mで表す．&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;体積モーメントを生じる力を体積偶力（body moment）として紹介している書籍もあります&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。これをより具体的に考えると下の図のような状態と言えます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1647689517/NabeBlog/bodyMoment_zyv4bu.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="body_moment_image"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;つまり、応力（表面力）や重力などの体積力とは別に何らかの体積力が偶力として作用している状態を示しています。&lt;/p&gt;
&lt;h3 id="具体的な計算"&gt;具体的な計算&lt;/h3&gt;
&lt;p&gt;まず、&lt;a href="https://t-pot.me/posts/math/continuousequationmotion/"&gt;この記事&lt;/a&gt;で示したオイラーの第二運動法則（つまり連続体の角運動方程式）からスタートします。
\begin{equation}
\int_V \rho\{r\}\times\{a\} dV = \int_V \rho\{r\}\times\{K\} dV + \int_S \{r\}\times\{t\} dS
\end{equation}
この式では連続体の密度、体積、速度、連続体に作用する応力ベクトル、単位質量当たりに働く物体力をそれぞれ$\rho, V(t), v, \{t\}, \{K\}$としています。&lt;/p&gt;
&lt;p&gt;ここに、先ほどの定義に則って体積モーメント$\{M\}$を導入します。すると式(1)は次式となります。
\begin{equation}
\int_V \rho\{r\}\times\{a\} dV = \int_V \rho\{r\}\times\{K\} dV + \int_S \{r\}\times\{t\} dS + \int_V \{M\} dV
\end{equation}&lt;/p&gt;</description></item><item><title>React NativeでuseContextを使ってstateを変更する方法【React Native + Expo】</title><link>https://t-pot.me/posts/tech/rn-usecontext/</link><pubDate>Tue, 01 Mar 2022 23:31:08 +0900</pubDate><guid>https://t-pot.me/posts/tech/rn-usecontext/</guid><description>&lt;h2 id="実現したいこと"&gt;実現したいこと&lt;/h2&gt;
&lt;p&gt;親のコンポネント内で定義されている状態変数を別ファイルから&lt;code&gt;useContext&lt;/code&gt;を使って変更したい。&lt;/p&gt;
&lt;h2 id="具体例"&gt;具体例&lt;/h2&gt;
&lt;p&gt;今回は、簡素な例ですがモーダルの出現と消滅を状態変数で管理している場合を考えます。具体的には、&lt;code&gt;App.js&lt;/code&gt;内で&lt;code&gt;useState&lt;/code&gt;を用いて定義された状態変数を&lt;code&gt;CustomModal.js&lt;/code&gt;側で書き換えたいと思います。&lt;/p&gt;
&lt;h3 id="ファイルとフォルダの配置"&gt;ファイルとフォルダの配置&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;root/
┣ App.js
┣ ShowModalContext.js
┗ component/
　　┗ CustomModal.js
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="こんな感じに表示される"&gt;こんな感じに表示される&lt;/h3&gt;


&lt;div data-snack-id="@htnabe/usecontextexample" data-snack-platform="web" data-snack-preview="true" data-snack-theme="light" style="overflow:hidden;background:#fbfcfd;border:1px solid var(--color-border);border-radius:4px;height:505px;width:100%"&gt;&lt;/div&gt;
&lt;script async src="https://snack.expo.dev/embed.js"&gt;&lt;/script&gt;


&lt;h3 id="解説"&gt;解説&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ShowModalContext.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ここでは&lt;code&gt;createContext&lt;/code&gt;を用いてcontextで参照するデフォルトの値を設定しています。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import { createContext } from &amp;#39;react&amp;#39;;

export const ShowModalContext = createContext({});
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;App.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;ShoModalContext.js&lt;/code&gt;で定めた変数を呼び出し、&lt;code&gt;&amp;lt;コンテキスト.Provider value={子コンポーネントに渡したい値}&amp;gt;&lt;/code&gt;とすることで子コンポーネントからも状態変数の参照を行えます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import React, { useEffect, useState } from &amp;#39;react&amp;#39;;
import { StyleSheet, Pressable, Text, View } from &amp;#39;react-native&amp;#39;;
import CustomModal from &amp;#39;./components/CustomModal&amp;#39;;
import { ShowModalContext } from &amp;#39;./ShowModalContext&amp;#39;;
export default function App() {
 const [showModalVisible, setModalVisibility] = useState(false);

 const value = {
 showModalVisible,
 setModalVisibility,
 };

 const showModal = () =&amp;gt; {
 setModalVisibility(true);
 console.log(showModalVisible);
 };

 return (
 &amp;lt;&amp;gt;
 &amp;lt;View style={styles.centeredView}&amp;gt;
 &amp;lt;Pressable style={styles.button} onPress={showModal}&amp;gt;
 &amp;lt;Text&amp;gt;Show Modal&amp;lt;/Text&amp;gt;
 &amp;lt;/Pressable&amp;gt;
 &amp;lt;/View&amp;gt;
 {showModalVisible &amp;amp;&amp;amp; (
 &amp;lt;ShowModalContext.Provider value={value}&amp;gt;
 &amp;lt;CustomModal /&amp;gt;
 &amp;lt;/ShowModalContext.Provider&amp;gt;
 )}
 &amp;lt;/&amp;gt;
 );
}

const styles = StyleSheet.create({
 centeredView: {
 flex: 1,
 justifyContent: &amp;#39;center&amp;#39;,
 alignItems: &amp;#39;center&amp;#39;,
 },
 button: {
 borderRadius: 20,
 padding: 10,
 elevation: 2,
 backgroundColor: &amp;#39;tomato&amp;#39;,
 },
});
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;CustomModal.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そして今回の子コンポーネントであるこのファイルでは&lt;code&gt;ShowModalContext&lt;/code&gt;を呼び出し、&lt;code&gt;useContext&lt;/code&gt;を用いることで状態変数をそのまま弄ることができるようになります。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description></item><item><title>オイラーの運動方程式とコーシーの運動方程式【初学者向け】</title><link>https://t-pot.me/posts/math/continuousequationmotion/</link><pubDate>Mon, 10 Jan 2022 21:09:13 +0900</pubDate><guid>https://t-pot.me/posts/math/continuousequationmotion/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;本記事では連続体の運動方程式と角運動方程式を表す&lt;code&gt;オイラーの第一運動法則&lt;/code&gt;、&lt;code&gt;オイラーの第二運動法則&lt;/code&gt;について触れ、&lt;code&gt;コーシーの運動方程式&lt;/code&gt;と&lt;code&gt;平衡方程式&lt;/code&gt;の関係についても解説します。&lt;/p&gt;
&lt;p&gt;なお、本記事は&lt;a href="https://t-pot.me/posts/math/stresstensor/"&gt;前回の記事&lt;/a&gt;の内容を理解している方向けに書いています。&lt;/p&gt;
&lt;p&gt;また、本記事ではベクトルと行列のそれぞれを明示するために行列Aの場合は$\left[A\right]$、ベクトルAの場合は$\{A\}$のように&lt;code&gt;[]&lt;/code&gt;と&lt;code&gt;{}&lt;/code&gt;を使い分けています。さらに、話を簡単にするため、体積モーメント（体積偶力）を始めから無視しています。&lt;/p&gt;
&lt;p&gt;この記事の詳細を知りたい方はこちら↓の文献などを参照してください。&lt;/p&gt;

&lt;div data-vc_mylinkbox_id="889166451"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889172147"&gt;&lt;/div&gt;


&lt;h2 id="応力ベクトルと表面力体積力"&gt;応力ベクトルと表面力・体積力&lt;/h2&gt;
&lt;p&gt;連続体に作用する力やそのものの運動を考えるときに表面力と物体力を考える必要があります。これらの力を簡潔に説明すると下記の通りとなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;物体力：重力や電磁力が該当する、単位質量または単位体積当たりの力&lt;/li&gt;
&lt;li&gt;表面力：応力が該当する、面を介して作用する単位面積当たりの力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に表面力に着目し、この力が応力ベクトルとどのように結びつくかを示すために微小面積要素$\Delta S$を考えます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1642318422/NabeBlog/%E5%BE%AE%E5%B0%8F%E9%9D%A2%E7%A9%8D%E8%A6%81%E7%B4%A0_qobxre.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="力の向き"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;この微小面積要素$\Delta S$の法線ベクトル$\{n\}$が示す方向を正の方向とし、負の方向に働く力を$\Delta \{f\}$としたとき、表面力$\{t\}$は&lt;em&gt;応力ベクトル&lt;/em&gt;と呼ばれ、次の通り定義されます&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。
\begin{equation}
\{t\}= \lim_{\Delta S \to 0} \frac{\Delta \{f\}}{\Delta S} = \frac{d\{f\}}{ds}
\end{equation}&lt;/p&gt;
&lt;h2 id="オイラーの第一運動法則"&gt;オイラーの第一運動法則&lt;/h2&gt;
&lt;p&gt;下図の様に物体力と表面力が作用する体積$V$とその内部の微小体積$dV$を考えます。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1642318422/NabeBlog/%E9%96%89%E5%B1%80%E9%9D%A2_%E8%A1%A8%E9%9D%A2%E5%8A%9B_%E7%89%A9%E4%BD%93%E5%8A%9B_gkibvd.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="閉局面"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;時刻$t$におけるこの連続体の体積、速度、密度をそれぞれ$V(t), v, \rho$とします。このとき、運動量の定義からこの連続体の持つ運動量$\{P\}$は次の通り表せます&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。
\begin{equation}
\{P\} = \int_V \rho\{v\} dV
\end{equation}&lt;/p&gt;</description></item><item><title>応力テンソルとその性質</title><link>https://t-pot.me/posts/math/stresstensor/</link><pubDate>Wed, 05 Jan 2022 22:23:56 +0900</pubDate><guid>https://t-pot.me/posts/math/stresstensor/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;この記事では、&lt;strong&gt;応力テンソルがどのようなものなのか&lt;/strong&gt;について解説します。ここで解説しきれない内容については以下の文献などを参照してください。&lt;/p&gt;

&lt;div data-vc_mylinkbox_id="889166451"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889172147"&gt;&lt;/div&gt;


&lt;p&gt;また本記事ではベクトルと行列のそれぞれを明示するために行列Aを$\left[A\right]$と表し、ベクトルAを$\{A\}$と表しており、行列とベクトルで&lt;code&gt;[]&lt;/code&gt;と&lt;code&gt;{}&lt;/code&gt;を使い分けています。&lt;/p&gt;
&lt;p&gt;そして、本記事を読む上で次の記事の内容を理解できていることを前提としています。
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fezu-ken.com%2ffem-stress%2f"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2 id="応力テンソルを導入するメリット扱う意義"&gt;応力テンソルを導入するメリット（扱う意義）&lt;/h2&gt;
&lt;p&gt;応力テンソルを導入するメリットについては下記の記事が参考になりますので、解説を譲りたいと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ramenhuhu.com/math-invariant#:~:text=%E3%83%86%E3%83%B3%E3%82%BD%E3%83%AB%E3%81%AE%E5%90%84%E6%88%90%E5%88%86%E3%81%AF,%E3%81%9A%E3%80%81%E4%B8%8D%E5%A4%89%E9%87%8F%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82"&gt;テンソルの不変量の導出&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結局、上の記事にある通り、座標変換を施したりしてもその物理状態を一意に示せるのがメリットですね。&lt;/p&gt;
&lt;h2 id="応力テンソルの誘導"&gt;応力テンソルの誘導&lt;/h2&gt;
&lt;h3 id="二つの導入方法"&gt;二つの導入方法&lt;/h3&gt;
&lt;p&gt;初めて応力テンソルを考えるとき、主に二つの方法があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;「ある微小体積に働く応力が釣り合う場合」を考える&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;（簡単）&lt;/li&gt;
&lt;li&gt;連続体の運動方程式と角運動方程式である、オイラーの第一、第二運動法則を介して考える&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;（ちょっと難しい）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;厳密に応力テンソルについて考える場合は後者をオススメしますが、&lt;code&gt;表面力と体積力&lt;/code&gt;という概念について理解する必要があります。この二つの力は抽象度が高い概念であるため、初学者にとっては少し理解しづらいものだと思います。したがって、今回は前者の場合を考えます。&lt;/p&gt;
&lt;h3 id="仮定"&gt;仮定&lt;/h3&gt;
&lt;p&gt;通常、物体に力が作用するとその&lt;strong&gt;物体の形状は多少なりとも変化します&lt;/strong&gt;。この&lt;code&gt;物体の変形&lt;/code&gt;について考えるとき、変形が大きな場合には&lt;code&gt;有限変形&lt;/code&gt;&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;を考える必要がありますが、複雑な数式が多く現れるため、今のところは&lt;strong&gt;微小変形のみを考えます&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;このことをより具体的に説明すると下記の通りとなります&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;固体の変形は小さいと仮定して，内力を考察するにあたって固体内部の図形の面積，方向などの変化は小さいとして無視することにする．すなわち，物体の点は移動しないとして内力を考察することにする．&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="応力ベクトルとつり合い式"&gt;応力ベクトルとつり合い式&lt;/h3&gt;
&lt;p&gt;ある微小な物体の中にある微小な体積をもつ四面体OABCを考えます&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;。この四面体には&lt;code&gt;応力ベクトル&lt;/code&gt;$\{t_{1}\}, \{t_{2}\}, \{t_{3}\}, \{t\}$のみが作用しています。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1641536373/NabeBlog/%E5%9B%9B%E9%9D%A2%E4%BD%93_jhtini.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="四面体に働く応力"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;&lt;code&gt;応力ベクトル&lt;/code&gt;は&lt;strong&gt;その成分に応力をもつベクトル&lt;/strong&gt;のことです。例として$\{t_{1}\}$は次式で表されます。&lt;/p&gt;
&lt;p&gt;\begin{equation}
\{t_{1}\}=\begin{Bmatrix}\sigma_{xx}\\ \sigma_{yx}\\ \sigma_{zx}\end{Bmatrix}
\end{equation}&lt;/p&gt;
&lt;p&gt;このように、応力ベクトルはその面に作用する$x, y, z$軸方向それぞれの応力を成分としてもつベクトルです。したがって、$\{t_{2}\}と\{t_{3}\}$についても同様に、&lt;/p&gt;
&lt;p&gt;\begin{equation}
\{t_{2}\}=\begin{Bmatrix}\sigma_{xy}\\ \sigma_{yy}\\ \sigma_{zy}\end{Bmatrix},\quad \{t_{3}\}=\begin{Bmatrix}\sigma_{xz}\\ \sigma_{yz}\\ \sigma_{zz}\end{Bmatrix}
\end{equation}&lt;/p&gt;</description></item><item><title>【2022年】新年のご挨拶</title><link>https://t-pot.me/posts/daily/newyeargreeting2022/</link><pubDate>Sat, 01 Jan 2022 11:19:10 +0900</pubDate><guid>https://t-pot.me/posts/daily/newyeargreeting2022/</guid><description>&lt;h2 id="新年のご挨拶"&gt;新年のご挨拶&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;明けましておめでとうございます！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本年も当ブログをよろしくお願いいたします。&lt;/p&gt;
&lt;h2 id="旧年のブログ運営と本年の抱負"&gt;旧年のブログ運営と本年の抱負&lt;/h2&gt;
&lt;p&gt;旧年の10月頃にブログデザインとドメインを刷新し、まだまだ月間のユーザー数も以前ほど戻ってはいません。そこで、本年は&lt;strong&gt;旧年以前のPV数を超えること&lt;/strong&gt;を目標に本ブログを運営していけると良いなと思います。&lt;/p&gt;
&lt;p&gt;また、この目標を達成するために重要な指標である、&lt;strong&gt;旧年に読まれた記事トップ3&lt;/strong&gt;を紹介しておきます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GAS初学者がSESAMEを使った部屋予約システムを作ってみた話&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t-pot.me/posts/math/straintensor/"&gt;【初学者向け】グリーンのひずみテンソルと微小ひずみテンソル&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Slack + GAS + Spreadsheetで作る備品管理システム&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;トップ3に&lt;code&gt;GAS&lt;/code&gt;関連の記事があることから分かる通り、そのコンテンツのユーザー数に比例して閲覧数も増えているようです。とはいえ残念ながら、&lt;code&gt;GAS&lt;/code&gt;に関して私自身のモチベーションが無いので追加で何か記事を書く予定はありません。&lt;em&gt;何か作りたいものが出てきたら記事にするかも&lt;/em&gt;くらいの気持ちですね&amp;hellip;&lt;/p&gt;
&lt;p&gt;一方、異色を放っている&lt;code&gt;グリーンのひずみテンソル&lt;/code&gt;についてですが、これは&lt;em&gt;ニッチ過ぎて私のブログ以外で解説記事を書いているサイトが無い&lt;/em&gt;というのが現状です。&lt;/p&gt;
&lt;p&gt;私個人としては&lt;code&gt;連続体力学&lt;/code&gt;分野の話が好きなので、&lt;strong&gt;連続体力学分野の解説記事&lt;/strong&gt;を書いてPV数を稼ごうかと思っています。&lt;del&gt;安直すぎないか？&lt;/del&gt;&lt;/p&gt;
&lt;h2 id="私生活での抱負興味ない方はスキップどうぞ"&gt;私生活での抱負（興味ない方はスキップどうぞ）&lt;/h2&gt;
&lt;p&gt;今年やりたいことをリストアップしてみました。達成できなくても書くだけならタダなので書いておきます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;スマフォアプリケーション&lt;code&gt;SUEP&lt;/code&gt;の完成&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SUEP&lt;/code&gt;をwebアプリとして移植・バックエンドの処理を実装する&lt;/li&gt;
&lt;li&gt;連続体力学関連の解説記事を1本/1か月のペースで書く（基本的な応力・ひずみの関係からスタート？）&lt;/li&gt;
&lt;li&gt;一日30分の英語トレーニングを2月から始める&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本年も、地に足付けて着々と実績を積んでいきたい所存です。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;長くなりましたが、本年も生暖かい目で当ブログをご利用ください。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;皆様にとっても実り多い年になるようアビスの底から少しだけ祈っています。&lt;/strong&gt;&lt;del&gt;んなぁ～（伝われ）&lt;/del&gt;&lt;/p&gt;</description></item><item><title>React Native + Expoでスマホアプリを開発した感想【2021年】</title><link>https://t-pot.me/posts/tech/rn-review2021/</link><pubDate>Wed, 22 Dec 2021 20:30:41 +0900</pubDate><guid>https://t-pot.me/posts/tech/rn-review2021/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;今年の4月からReact Nativeを触り始め、人生初のスマートフォンアプリ（島根大学生向けの情報収集アプリ）&lt;a href="https://github.com/htnabe/SUEP"&gt;SUEP&lt;/a&gt;を開発・リリースしました。&lt;/p&gt;
&lt;p&gt;私がこのアプリを開発する以前までに触ったことのあった言語は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C (大学の講義で触っただけ)&lt;/li&gt;
&lt;li&gt;Python (同上)&lt;/li&gt;
&lt;li&gt;C# (Unityでちょっとしたゲームを作ったことがあるだけ)&lt;/li&gt;
&lt;li&gt;Google Apps Script (ちょっとした処理ならそれなりのものを書ける)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;です。React Native + Expo については人が使ってるのをチラ見したくらいで、1ミリもコードを書いたことはありませんでした。また、JavaScriptは1ミリも触った事がありませんでした。&lt;/p&gt;
&lt;p&gt;プログラミングの経験がそこまで多くなくても、ある程度のアプリならReact Native + Expoで作れるので、これからアプリを作ろうと考えている方の参考になることを願って書き残しておきます。&lt;/p&gt;
&lt;h2 id="選定理由"&gt;選定理由&lt;/h2&gt;
&lt;p&gt;現在は私ともう一人のプログラマでアプリをメンテナンス・開発していますが、4月当初は私一人で開発していました。そのため、割とガチで自分が使ってみたかったから選びましたw&lt;/p&gt;
&lt;p&gt;開発以前から、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React Native + Expoを使えばスマートフォンアプリを（&lt;strong&gt;比較的&lt;/strong&gt;）簡単に作れるらしい&lt;/li&gt;
&lt;li&gt;Reactと共通している部分もあり、React Nativeの構文に慣れれば、Reactベースのwebアプリも作りやすくなる（らしい）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということを知っていました。これらの理由と、将来的にwebアプリケーションも作ってみたいな～と漠然と思っていたことが相まって&lt;strong&gt;これしかない&lt;/strong&gt;と思い開発を始めました。&lt;/p&gt;
&lt;p&gt;残念ながら、iOSではKotlin, AndroidではJavaが有力で、クロスプロットフォームで開発するならFlutter, Unity etc. の選択肢があったことを知ったのはずっと後になってからでした。&lt;/p&gt;
&lt;h2 id="react-native--expoの良かったところ"&gt;React Native + Expoの良かったところ&lt;/h2&gt;
&lt;p&gt;React Native + Expoで良かったな～と思った点は次の3点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;スマートフォンアプリを作る際の様々なコストが低い（Managed workflowに限る）&lt;/li&gt;
&lt;li&gt;実機デバッグの容易さ（Managed workflowに限る）&lt;/li&gt;
&lt;li&gt;アプリリースに必要な手続きが少ない&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="スマートフォンアプリを作る際の様々なコストが低いmanaged-workflowに限る"&gt;スマートフォンアプリを作る際の様々なコストが低い（Managed workflowに限る）&lt;/h3&gt;
&lt;p&gt;私は現在、SUEPを&lt;code&gt;Managed workflow&lt;/code&gt;で管理しています。機能としては、ツイートを自動で取得したり、島根大学の講義情報をオフラインで参照・表示したりと簡素なものです。&lt;/p&gt;
&lt;p&gt;一方で、Firebase Analyticsのように「ネイティブの機能を必要とする場合」には&lt;code&gt;Bare workflow&lt;/code&gt;へ移行する必要があると認識しています。&lt;/p&gt;
&lt;p&gt;Managed workflowではExpoで使える様々なライブラリを使うことができ、開発スピードは間違いなく上がります。&lt;/p&gt;
&lt;p&gt;一方で、皆さんが作るアプリの要件によってはBare workflowしか選べないこともあると思います。下記の記事を参照していただきたいのですが、Bare workflowではManaged workflowと比較し、特に&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;開発時のライブラリの選定&lt;/li&gt;
&lt;li&gt;リリース時の手続&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;の二点について、より考える必要があります。&lt;/p&gt;
&lt;h3 id="実機デバッグの容易さmanaged-workflowに限る"&gt;実機デバッグの容易さ（Managed workflowに限る）&lt;/h3&gt;
&lt;p&gt;これまたManaged workflowに限った話ですが、&lt;code&gt;Expo&lt;/code&gt;の一番の強みでもある「実機デバッグの容易さ」についても触れたいと思います。&lt;/p&gt;</description></item><item><title>査読付き論文でやらかした話【テストコードはとても大切】</title><link>https://t-pot.me/posts/daily/test-is-important/</link><pubDate>Sat, 18 Dec 2021 19:30:37 +0900</pubDate><guid>https://t-pot.me/posts/daily/test-is-important/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;1年近くかけて書き続けていた査読付き論文を先々月末についに投稿しました。↓は関連の記事です。
&lt;a href="https://t-pot.me/posts/daily/publishpaper-review/"&gt;初めて査読付き論文を書く際に気を付けた方が良かったこと&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この論文に関するレヴューはまだ帰ってきていないのですが、つい3日前、この論文に掲載しているグラフを作成するために用いた材料定数に誤りが見つかりました。さらに、この材料定数の誤りが論文の結果に非常に大きく影響していることも分かりました。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;レフェリーには直接土下座して謝りたいほどに申し訳なく思っています。本当にすみません。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;この件についてボスと話し、現在はこの論文の撤回または訂正論文の再投稿を考えています（恐らく撤回の可能性の方が高いと思います）。&lt;/p&gt;
&lt;p&gt;この誤りが見つかるまでの経緯と見つかった後の経緯を書き留めておこうと思います。&lt;/p&gt;
&lt;h2 id="ことの発端"&gt;ことの発端&lt;/h2&gt;
&lt;p&gt;先週の研究室でのゼミでのことでした。ゼミの終わり際にこんな会話をしていました（適当）。&lt;/p&gt;
&lt;p&gt;～～～～～&lt;/p&gt;
&lt;p&gt;ボス「来月に次の学会発表の概要の締め切りがあるから、ワイ君は来週までに概要に載せるメインの内容をまとめて何にするかまで決めておいてね。」&lt;/p&gt;
&lt;p&gt;ワイ「おかのした。」&lt;/p&gt;
&lt;p&gt;～～～～～～&lt;/p&gt;
&lt;h2 id="惨劇の発覚"&gt;惨劇の発覚&lt;/h2&gt;
&lt;p&gt;↑の後、1日半程度かけて直近2, 3か月分の成果を見返し、どの成果を発表のメインに置くか考えていました。さらに、追加で調べたいことがあったので過去に使っていたプログラムを確認していた時のことでした。&lt;/p&gt;
&lt;p&gt;～～～～～～&lt;/p&gt;
&lt;p&gt;ワイ「（この時に$B$がこうなるなら&amp;hellip;こっちが正になるはずだから&amp;hellip;&amp;hellip;&amp;hellip;）」ﾊﾟｿｺﾝｶﾀｶﾀ&lt;/p&gt;
&lt;p&gt;ワイ「（そしたらこれが&amp;hellip;..こうなってないと&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;？）」ｶﾀｶﾀｶﾀｶﾀ&lt;/p&gt;
&lt;p&gt;ワイ「（&amp;hellip;&amp;hellip;ん&amp;hellip;？&amp;hellip;おかしいな&amp;hellip;こっちは負になるはずじゃ&amp;hellip;&amp;hellip;）」ｶﾀｶﾀｶﾀｶﾀ&lt;/p&gt;
&lt;p&gt;ワイ「（そしたらこっちの$\Delta$値が正に&amp;hellip;&amp;hellip;あれ&amp;hellip;（汗）&amp;hellip;そしたら&amp;hellip;&amp;hellip;あれ&amp;hellip;？？？？？）&amp;hellip;」ｶﾀｶﾀｶﾀｶﾀ&lt;/p&gt;
&lt;p&gt;ワイ「（そしたら材料定数が間違ってる&amp;hellip;&amp;hellip;よな&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;）」&lt;/p&gt;
&lt;p&gt;ワイ「（ん&amp;hellip;まてよ&amp;hellip;..そしたら&amp;hellip;.こないだの論文に使った材料定数も間違ってるんじゃ&amp;hellip;&amp;hellip;）」&lt;/p&gt;
&lt;p&gt;ワイ「（待て待て、まだあわてるような時間じゃ&amp;hellip;）」資料ﾍﾟﾗﾍﾟﾗ&lt;/p&gt;
&lt;p&gt;ワイ「あ、あぁ&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;ｵﾜッﾀ&amp;hellip;」&lt;/p&gt;
&lt;p&gt;～～～～～～～&lt;/p&gt;
&lt;p&gt;結果として、&lt;strong&gt;本来どんなに大きくても1未満になってないとおかしいとある材料定数がプログラム側では5.07&amp;hellip;という明らかに大きすぎる値になっていました&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;人生初の査読付き論文で、なおかつ一年近くかけて書いては書き直してを繰り返していた論文でこんな事が起こるなんて1ミリも想像していませんでした。&lt;/p&gt;
&lt;h2 id="惨劇はなぜ起きてしまったのか"&gt;惨劇はなぜ起きてしまったのか&lt;/h2&gt;
&lt;p&gt;専門的な用語が出てくるので&lt;del&gt;勉強してください&lt;/del&gt;飛ばしてもらっても大丈夫です。&lt;/p&gt;
&lt;p&gt;もともと一年ちょっと前に作成したプログラムで二次元の直交異方性材料のポアソン比$\nu_{jk}$$(j, k=x, y, z, j\ne k)$（とある材料定数です）を文献から参照して使おうとしていました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.jsme.or.jp/jsme-medwiki/07:1008409"&gt;直交異方性体 機械工学事典&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kyowa-ei.com/jpn/technical/strain_gages/what.html"&gt;ひずみ、応力、ポアソン比とは 共和電業&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;いくつかの書籍を読んで適当なポアソン比を利用しようとしたのですが、必要なポアソン比が全て記載されたものを見つけられませんでした。そこで材料の特性を考慮し、
\begin{equation}
\nu*{xy}=\nu*{zx}
\end{equation}&lt;/p&gt;
&lt;p&gt;が成り立つと仮定しさらに、マクスウェルの相反定理から得られる、
\begin{equation}
\nu*{jk}=\frac{E_j\cdot\nu*{kj}}{E_k}
\end{equation}&lt;/p&gt;
&lt;p&gt;を用いてプログラム側で必要なポアソン比を計算していました。が、&lt;strong&gt;既にここまでに間違っている点があることに気付けませんでした&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;今回考えている二次元の直交異方性材料は$x$軸方向にのみ極めて高い強度を持つ材料だったので、式(1)は間違いで、正しくは、
\begin{equation}
\nu*{xy}=\nu*{xz}
\end{equation}&lt;/p&gt;
&lt;p&gt;でした。この間違いによって$\nu_{xz}&amp;gt;5$などという明らかにおかしい値が出てきていました。&lt;/p&gt;
&lt;h2 id="二度と惨劇が生まれないためにどうしたのか"&gt;二度と惨劇が生まれないためにどうしたのか&lt;/h2&gt;
&lt;p&gt;この惨劇が生まれる可能性を可能な限り下げるために次の三つを徹底することにしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文献以外から&lt;/strong&gt;用いる数値や条件が妥当なのか、プログラミング以前に第三者によるチェックを行う&lt;/li&gt;
&lt;li&gt;プログラムにテストコードを追加する&lt;/li&gt;
&lt;li&gt;テストコードをクリアした結果のみを論文に載せる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一点目は当たり前なのですが、人間は&lt;strong&gt;間違っているものを一度正しいと思うと何かのきっかけが無いとその間違いに気付き難い&lt;/strong&gt;ので、客観的に文章を第三者に確かめてもらう必要があると考えました。&lt;/p&gt;
&lt;p&gt;この第三者は可能な限りその研究内容を客観的に見ることのできる人物が好ましいと考えいています。ただし、余りにも予備知識が無さ過ぎるとチェック自体に時間がかかりすぎてしまうのでそれは好ましくないでしょう。人選の難しいところだと思います。&lt;/p&gt;
&lt;p&gt;続いて、二点目と三点目は一点目と同じかそれ以上に重要です。&lt;/p&gt;
&lt;p&gt;私は普段、研究に使うプログラムを誰かに見てもらうことをしてきませんでした。研究室によってはプログラム自体のダブルチェック（いわゆるコードレビュー）のある所もあるのかもしれませんが、私の研究室ではそれが無いので、プログラムと得られるデータの正確さをプログラマー（私）自身で担保するしかありませんでした。&lt;/p&gt;
&lt;p&gt;今までは明らかにおかしいデータやグラフでない限りはほぼどのような結果でもスルーされてきており（これはこれで問題ですが）、得られたデータの正確さを担保するものはほとんどありませんでした（そしてその結果が今回の惨劇）。&lt;/p&gt;
&lt;p&gt;そして今回は特に、&lt;strong&gt;プログラム側で材料定数の値を確認し、ある値の範囲外であれば強制的にエラーを出す&lt;/strong&gt;、といった処理さえ行っていれば気付けたミスでした。&lt;/p&gt;
&lt;p&gt;今回の件を通じて、&lt;strong&gt;プログラマー自身が成果物であるプログラムと得られたデータの正確さを担保するためにテストコードも書くべきだ&lt;/strong&gt;と思うようになりました。切実に。&lt;/p&gt;
&lt;h2 id="おまけ"&gt;おまけ&lt;/h2&gt;
&lt;h3 id="追加したコード"&gt;追加したコード&lt;/h3&gt;
&lt;p&gt;一応、追加したテストコードの一部を記載しておきます。言語はOctaveです。MATLABとも互換性があると思います。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# main.m
E_xx = 148*10^9;
E_yy = 10.50*10^9; # axial + vertical young&amp;#39;s modulus
E_zz = E_yy; # two dimensinal orthotropy&amp;#39;s condition
n_xy = 0.30;
n_yz = 0.59;
n_xz = 0.30; # poisson&amp;#39;s ratio
n_yx = (E_yy * n_xy)/E_xx; # two dimensinal orthotropy&amp;#39;s condition
n_zy = E_zz * n_yz/E_yy;
n_zx = E_zz * n_xz/E_xx;

for array = [n_yx n_zy n_zx]
 test_poisson(array);
end
（以下略）
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;# test_poisson.m
function test_poisson(n)
 if (n &amp;gt;= 1)
 error(&amp;#39;Invalid poisson raio is inputted(more than 1).&amp;#39;);
 elseif ( n &amp;lt; 0)
 error(&amp;#39;Suspicious poisson raio is inputted(less than 0).&amp;#39;);
 end
end
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;材料定数（ここではポアソン比）が閾値を超えると強制的にエラーをだすようなプログラムです。&lt;/p&gt;</description></item><item><title>【レビュー】HP製とエレコム製のシングルモニターアーム(DPA-SL02SV, BT861AA)</title><link>https://t-pot.me/posts/daily/monitorarm-review/</link><pubDate>Fri, 10 Dec 2021 23:28:22 +0900</pubDate><guid>https://t-pot.me/posts/daily/monitorarm-review/</guid><description>&lt;h2 id="今回購入したもの"&gt;今回購入したもの&lt;/h2&gt;
&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/B08D913NDB.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/B08D913NDB/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;エレコム ディスプレイアーム DPA-SL02SV
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;HPのシングルモニターアーム BT861AA（Amazonでは売り切れていたためリンクを外しました）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="従来の私のデスク周り"&gt;従来の私のデスク周り&lt;/h2&gt;
&lt;p&gt;以前、ゲーム用に新しく27インチのディスプレイを購入しました。詳しくは&lt;a href="https://t-pot.me/posts/daily/lg-monitor-ultragear/"&gt;こちら&lt;/a&gt;の記事をご覧ください。&lt;/p&gt;
&lt;p&gt;この事に加えて、従来ゲーム用に使っていたディスプレイを作業用のディスプレイとしても使いたいな～と思い、モニターアームを導入することにしました。&lt;/p&gt;
&lt;p&gt;ちなみに導入する以前には、机とディスプレイはこのような配置になっていました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1640951517/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE_gll9a7.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="机の配置"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;今回は、モニターアームを導入することで下の図の様に、&lt;strong&gt;左右どちらのデスクでもディスプレイを使えるようにするのが目的です&lt;/strong&gt;。また、図からは少し分かりにくいのですが、デュアルディスプレイ用のモニターアームでは可動域が足りず、今回の用途には向きませんでした。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1640951813/NabeBlog/%E6%9C%BA%E3%81%AE%E9%85%8D%E7%BD%AE2_jadgb1.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="ディスプレイの配置"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h2 id="モニターアームの選定基準"&gt;モニターアームの選定基準&lt;/h2&gt;
&lt;p&gt;身近にモニターアームを使っている方がいなかったので、正直どのモニターアームア良いのか分かりませんでした（ついでにストアの評価は信じない側の人間です）。なので、今回は次の二つのモニターアームを実際に購入しています。&lt;/p&gt;</description></item><item><title>SentryでReact Native(Expo)のエラーログを取得する</title><link>https://t-pot.me/posts/tech/rn-sentry-installation/</link><pubDate>Tue, 07 Dec 2021 23:33:01 +0900</pubDate><guid>https://t-pot.me/posts/tech/rn-sentry-installation/</guid><description>&lt;h2 id="この記事を書いた理由"&gt;この記事を書いた理由&lt;/h2&gt;
&lt;p&gt;React Native + Expoのプロジェクトを友人と開発しているのですが、概ね必要な機能の実装を済ませたので、実機でのエラーログの取得について検討しました。その結果、エラーログの取得を行えるサービスとして、以下の二つが候補に上がりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sentry.io/welcome/"&gt;Sentry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://firebase.google.com/docs/crashlytics?hl=ja"&gt;Firebase Crashlytics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将来的にはCrashlyticsへの移行を考えていますが、ひとまずExpo側にもドキュメントが用意されているSentryでクラッシュログの取得を行うことにしました。&lt;/p&gt;
&lt;p&gt;しかしながら、Sentryの導入について書かれた記事が古くなっていたり、具体的にどこでトークンの取得などを行えるのか分かりにくい記事が多かったので備忘録としてもこの記事を書きました。&lt;/p&gt;
&lt;h2 id="開発環境"&gt;開発環境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Expo SDK 42&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Expo SDK 40以上であればこの記事の手順でインストールできます。&lt;/p&gt;
&lt;h2 id="実装方法"&gt;実装方法&lt;/h2&gt;
&lt;p&gt;基本的にはExpo側のドキュメントを参考にしてください。Sentryの公式サイトのドキュメントにも導入方法が書かれていますが、あまり親切ではないのでExpo側のドキュメントに従うことをお勧めします。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fdocs.expo.dev%2fguides%2fusing-sentry%2f"
&gt;&lt;/iframe&gt;

&lt;h3 id="必要なパッケージのインストール"&gt;必要なパッケージのインストール&lt;/h3&gt;
&lt;p&gt;必要なコマンドは基本的には下記のみですが、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;expo install sentry-expo
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;環境によっては追加で下記のコマンドも実行する必要があります。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;expo install expo-application expo-constants expo-device expo-updates @sentry/react-native
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;念のため両方のコマンドの実行をお勧めします。&lt;/p&gt;
&lt;h3 id="コード"&gt;コード&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;App.js&lt;/code&gt;に下記のコードを追加してください。アプリケーションの起動時にSentryの初期化が行われます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import * as Sentry from &amp;#39;sentry-expo&amp;#39;;

Sentry.init({
 dsn: &amp;#39;https://xxxxxxxxxxxxxxxxxxxxxxx@xxxxxxxx.xxxxxx.sentry.io/xxxxxxxxxxxxx&amp;#39;,
 enableInExpoDevelopment: true, // falseとした場合、開発時のエラーは無視されます
 debug: true, // 製品版ではfalseにしてください
});
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;enableInExpoDevelopment&lt;/code&gt;はデフォルトでtrueになっているのですが、このままだと開発時のエラーも報告されてしまって面倒なので私は基本的に&lt;code&gt;false&lt;/code&gt;にしています。&lt;/p&gt;
&lt;p&gt;また、エラーログの送信に失敗した場合などには&lt;code&gt;debug&lt;/code&gt;をtrueにしておくことで有益な情報をデバッグログとして出力してくれるようです。これについては私も現在試している部分なので詳細を省きます。&lt;/p&gt;
&lt;h3 id="コンフィグの設定"&gt;コンフィグの設定&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;app.json&lt;/code&gt;か&lt;code&gt;app.config.js&lt;/code&gt;のいづれかに下記の項目を追加します。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;{
 &amp;#34;expo&amp;#34;: {
 // ... your existing configuration
 &amp;#34;hooks&amp;#34;: {
 &amp;#34;postPublish&amp;#34;: [
 {
 &amp;#34;file&amp;#34;: &amp;#34;sentry-expo/upload-sourcemaps&amp;#34;,
 &amp;#34;config&amp;#34;: {
 &amp;#34;organization&amp;#34;: &amp;#34;sentryで作成した組織名&amp;#34;,
 &amp;#34;project&amp;#34;: &amp;#34;sentryで作成したプロジェクト名&amp;#34;,
 &amp;#34;authToken&amp;#34;: &amp;#34;ランダムっぽい英数字が並ぶトークン&amp;#34;
 }
 }
 ]
 }
 }
}
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="authtokenとdsnの調べ方"&gt;AuthTokenとDSNの調べ方&lt;/h3&gt;
&lt;p&gt;Sentryのwebページに移り、&lt;code&gt;Settings&lt;/code&gt;を選びます。&lt;/p&gt;</description></item><item><title>【レビュー】LG UltraGear 27型ゲーミングモニター</title><link>https://t-pot.me/posts/daily/lg-monitor-ultragear/</link><pubDate>Sun, 28 Nov 2021 20:59:52 +0900</pubDate><guid>https://t-pot.me/posts/daily/lg-monitor-ultragear/</guid><description>&lt;h2 id="商品スペックなど"&gt;商品スペックなど&lt;/h2&gt;
&lt;p&gt;メーカーが公開している&lt;code&gt;27インチ UltraGear ゲーミングモニター&lt;/code&gt;のページは&lt;a href="https://www.lg.com/jp/monitor/lg-27gn650-b"&gt;こちら&lt;/a&gt;です。こちらの商品の特徴は下の表の通りです&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;




&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;項目&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;フレームレート（垂直走査周波数）&lt;/td&gt;
 &lt;td&gt;48 - 144 Hz&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;入力端子&lt;/td&gt;
 &lt;td&gt;HDMI : 2, DisplayPort: 1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;ブルーライト低減モード&lt;/td&gt;
 &lt;td&gt;〇&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;フリッカーレス&lt;/td&gt;
 &lt;td&gt;〇&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;寸法 （スタンド付きの状態）(mm)&lt;/td&gt;
 &lt;td&gt;幅：614 、高さ：466 - 576 、 奥行き：291&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;質量 (kg)&lt;/td&gt;
 &lt;td&gt;7.2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;参考価格（税込み）&lt;/td&gt;
 &lt;td&gt;￥32,000&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


実物はこんな感じ↓です。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1638100676/NabeBlog/LG_monitor6_iyqcka.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="LG_monitor"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;左が今回購入したLGの27インチモニターで、右は一年前に購入したASUSの24インチモニターです。ぱっと見ではあまり大きさに差が無いように見えますね。&lt;/p&gt;
&lt;h2 id="組み立てとモニターの特徴について"&gt;組み立てとモニターの特徴について&lt;/h2&gt;
&lt;p&gt;今回届いたモニターの組み立ての様子です。段ボールではこんな感じで届き、&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1638100672/NabeBlog/LG_monitor1_yjlnfg.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="package"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;中身はモニターの足とモニター本体、ケーブル類＋説明書だけでした。&lt;/p&gt;</description></item><item><title>【レビュー】TOPEAK SIDEKICK WEDGE SADDLEBAG（Mサイズ）</title><link>https://t-pot.me/posts/daily/topeak-saddle/</link><pubDate>Sun, 07 Nov 2021 13:41:02 +0900</pubDate><guid>https://t-pot.me/posts/daily/topeak-saddle/</guid><description>&lt;h2 id="商品スペックなど"&gt;商品スペックなど&lt;/h2&gt;
&lt;p&gt;メーカーが公開している&lt;code&gt;TOPEAK サイドキック ウェッジ パック&lt;/code&gt;（Mサイズ）のページは&lt;a href="https://topeak.jp/products/sidekick-wedge-pack-m/"&gt;こちら&lt;/a&gt;です。こちらの商品の特徴は下の表の通りです&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;スペックなど&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;参考価格（税込み）&lt;/td&gt;
 &lt;td&gt;￥4730&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;寸法 (mm)&lt;/td&gt;
 &lt;td&gt;長さ：180 、幅：110 、 高さ：115&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;容量 (L)&lt;/td&gt;
 &lt;td&gt;0.7&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;質量 (g)&lt;/td&gt;
 &lt;td&gt;190&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


実物はこんな感じ↓ですね。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1638089393/NabeBlog/TOPEAK_saddle_M_omkqlv.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="TOPEAK_saddle"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;h2 id="実際に入るもの"&gt;実際に入るもの&lt;/h2&gt;
&lt;p&gt;実際に入るもとしては下記の項目のものは入るかと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;スマートフォン&lt;/li&gt;
&lt;li&gt;チューブ&lt;/li&gt;
&lt;li&gt;補給食（少量）&lt;/li&gt;
&lt;li&gt;パンク修理道具&lt;/li&gt;
&lt;li&gt;お金&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1638089896/NabeBlog/TOPEAK_saddle_M_1_vh2sxl.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="saddle_and_props"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;実際に入れてみました。&lt;/p&gt;</description></item><item><title>初めて査読付き論文を書く際に気を付けた方が良かったこと</title><link>https://t-pot.me/posts/daily/publishpaper-review/</link><pubDate>Sun, 31 Oct 2021 22:16:26 +0900</pubDate><guid>https://t-pot.me/posts/daily/publishpaper-review/</guid><description>&lt;h2 id="この記事を書いた背景"&gt;この記事を書いた背景&lt;/h2&gt;
&lt;p&gt;学部三年生の頃から長いこと付き合ってきた↓のテーマの研究について、ある程度結果がまとまったので指導教員に薦められて査読付きの論文として投稿することにしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.jstage.jst.go.jp/article/jsmecs/2020.58/0/2020.58_09c5/_article/-char/ja/"&gt;中国四国支部総会・講演会 講演論文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今年1月ごろから書き始めて、2021/10/31現在、提出した論文のレヴューが返ってくるのを待っている状態です。&lt;/p&gt;
&lt;p&gt;実は、論文の仕上がりで言うと大体8割くらいが仕上がっていた頃、たまたま↓のツイートを見て「ああ、確かにこういう内容は前もって知っておきたかったなあ」と思ったので、自分も今回の論文執筆の機会から得られた知見をまとめておこうと思った次第です。&lt;/p&gt;


&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;先日初めて査読付きの研究会に投稿しまして、その経験から「論文の書き方（メンタル編）」をまとめてみました。メンタル管理を主とした論文の書き方というのはあまり見かけないと思うので、経験が少ない方を中心に多くの人に役立つといいなと思っています。&lt;a href="https://t.co/QqlqBUvgJQ"&gt;https://t.co/QqlqBUvgJQ&lt;/a&gt;&lt;/p&gt;&amp;mdash; kikuzokikuzo (@kikuzokikuzo) &lt;a href="https://twitter.com/kikuzokikuzo/status/1444925419434627077?ref_src=twsrc%5Etfw"&gt;October 4, 2021&lt;/a&gt;&lt;/blockquote&gt; &lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;


&lt;h2 id="気を付けた方が良かったこと"&gt;気を付けた方が良かったこと&lt;/h2&gt;
&lt;p&gt;細かい点を挙げるとキリが無いので別の機会に紹介します（多分）。今回挙げるのは一般的に重要な次の4点です（優先度順）。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;日にちを（できるだけ）空けずに書き続ける&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;最初に立てた計画を可能な限り守る・守れなくても計画を随時アップデートする&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;定期的かつこまめな論文のレビューの依頼&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;（一層）趣味の時間を大切にする&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以下、補足です。&lt;/p&gt;
&lt;h3 id="日にちを空けずに書き続ける"&gt;日にちを空けずに書き続ける&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;これができれば論文は8割書けたも同然だと思います。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;私の場合、学会発表が終わった3月の春休み期間中に&lt;strong&gt;3週間ほど論文を読まず・書かずの期間を作ってしまった&lt;/strong&gt;ことなどもあって論文投稿が大幅に遅れてしまいました。&lt;/p&gt;
&lt;p&gt;ちなみに↓のスマートフォンアプリを呑気に作ってましたw
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fplay.google.com%2fstore%2fapps%2fdetails%3fid%3dcom.tpot.suepapp"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;日数を空けた後に論文を書き始めるのは億劫になりがちですし、特に論文の訂正がある場合はなおさら辛いと思います（少なくとも自分は辛かった）。&lt;/p&gt;
&lt;h3 id="最初に立てた計画を可能な限り守る守れなくても計画を随時アップデートする"&gt;最初に立てた計画を可能な限り守る・守れなくても計画を随時アップデートする&lt;/h3&gt;
&lt;p&gt;この辺りの話は論文執筆以外にも当てはまる話かなと思います（アジャイル開発に近しいものがある）。&lt;/p&gt;
&lt;p&gt;私の場合、論文執筆に日数を空けてしまっただけでなく、&lt;strong&gt;予期せぬデータの誤り&lt;/strong&gt;が見つかったせいで大幅な計画の見直しが必要になりました。&lt;/p&gt;
&lt;p&gt;そもそもどうしたら&lt;code&gt;予期せぬデータの誤り&lt;/code&gt;を出ないようにするのか、についてはここでは触れませんが、&lt;strong&gt;偶発的に生じる問題に対面した場合にどれだけ早く軌道修正できるか&lt;/strong&gt;が、筆者のメンタルを保つためだけでなく、より質の高い論文を執筆するための鍵だと思います。&lt;/p&gt;
&lt;h3 id="定期的かつこまめな論文レビューの依頼"&gt;定期的かつこまめな論文レビューの依頼&lt;/h3&gt;
&lt;p&gt;これに関して、自分はある程度徹底できていたのですが、論文を書き始めたころはそこまでできていなかったので挙げています。&lt;/p&gt;
&lt;p&gt;論文を書き始めたころは、毎回&lt;code&gt;緒言&lt;/code&gt;→&lt;code&gt;理論&lt;/code&gt;→&lt;code&gt;計算例&lt;/code&gt;→&lt;code&gt;結言&lt;/code&gt;の全セクションを訂正し終えてからレビューをお願いしていたのですが、そうすると序盤で大きな修正が必要になった場合に後半のほとんどを削除するか大幅な書き直しが必要になっていました。&lt;/p&gt;
&lt;p&gt;これだと非常に効率が悪かったので、途中から下記二つの変更を加えました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;理論 → 計算例 → 緒言 → 結言（つまり主要部 → 従属部）のセクション順で訂正&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;1つのセクションの訂正が終わった時点でレビューをお願いする&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;論文を書き慣れている方としては「&lt;strong&gt;そんなん当然じゃん&lt;/strong&gt;」となること間違いなしですが、執筆始めたての頃には中々気付けなかった点でした。&lt;/p&gt;
&lt;p&gt;それと加えて、レビュアーが忙しいのを知っていたので「&lt;strong&gt;こんな細かい部分（あまり内容に大きな影響を与えない文章表現など）をどうすべきかわざわざ聞いて良いのかな&lt;/strong&gt;」みたいなことを最初はよく思っていましたが、論文執筆の最終段階ではほとんど気にせず聞いていました。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;最終的にはある程度（自分の場合は45分）調べても分からない事はレビュアーに相談するようにしていました。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="一層趣味の時間を大切にする"&gt;（一層）趣味の時間を大切にする&lt;/h3&gt;
&lt;p&gt;この点だけ他と気色が異なりますが、執筆者のメンタルを良好に保つために必要な要素だと思ったので挙げておきます。&lt;/p&gt;
&lt;p&gt;初めに紹介したツイートにあった「&lt;a href="https://speakerdeck.com/kikuzo/lun-wen-falseshu-kifang-zhu-nimentarumian-falsedui-chu-wozhong-xin-tosite?slide=8"&gt;論文の書き方 - 主にメンタル面の対処を中心として&lt;/a&gt;」のタイトル通り、論文執筆は立派な社会人でもストレスが貯まらざるを得ない重労働だと思います。学生だと尚更ストレスを感じやすいと思います。&lt;/p&gt;
&lt;p&gt;数学的証明を一切省きますが、&lt;strong&gt;若い==無茶できる&lt;/strong&gt;は偽です。&lt;/p&gt;
&lt;p&gt;人間はストレスが許容値を超えると壊れます。&lt;em&gt;良い論文を書くには&lt;/em&gt;（&lt;em&gt;良い仕事をするには&lt;/em&gt;に言い換えても良い）、論文執筆以外の時間をどれだけ豊かに過ごせるかがとても大切だと私は考えています。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;論文執筆は大変ですが、自分の（自分だけのではないが）成果を世に出せるのは研究者・技術者冥利に尽きることだと思います。&lt;/p&gt;
&lt;p&gt;私自身、論文を書き続けられる職場に行けるかは未定ですが（絶賛就活中）、行くにしても行かないにしても「&lt;strong&gt;色々な研究の大変さ（本当に色々ありすぎる）&lt;/strong&gt;」や「公式な文章を作る際の心構え etc.」を深く知れた良い機会でした。&lt;/p&gt;</description></item><item><title>【React Native】useNavigationで画面遷移情報を外部から参照する方法</title><link>https://t-pot.me/posts/tech/rn-navigation/</link><pubDate>Sun, 31 Oct 2021 01:23:43 +0900</pubDate><guid>https://t-pot.me/posts/tech/rn-navigation/</guid><description>&lt;h2 id="実現したいこと"&gt;実現したいこと&lt;/h2&gt;
&lt;p&gt;今回は下記のようなディレクトリ構成を考え、 &lt;code&gt;FirstScreen&lt;/code&gt; → &lt;code&gt;SecondScreen&lt;/code&gt; → &lt;code&gt;ThirdScreen&lt;/code&gt;の画面遷移を行うのですが、その際の画面遷移の情報の受け渡しの仕方をまとめます。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;root/
┣ App.js
┗ Screens/
　　┣ FirstScreen.js
　　┣ SecondScreen.js
　　┗ ThirdScreen.js
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="利用するモジュールについて"&gt;利用するモジュールについて&lt;/h2&gt;
&lt;p&gt;今回は&lt;code&gt;React Navigation&lt;/code&gt;を使うのですが、具体的には&lt;code&gt;useNavigation&lt;/code&gt;を利用します。公式マニュアルは&lt;a href="https://reactnavigation.org/docs/use-navigation/"&gt;こちら&lt;/a&gt;です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;useNavigation&lt;/code&gt;のマニュアルを翻訳すると、下記のような説明になります。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;useNavigationは、ナビゲーションオブジェクトにアクセスするためのフックです。navigation propをコンポーネントに直接渡すことができない場合や、深くネストした子にpropを渡したくない場合に便利です。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ということで、多くの場合、これ1つで間違いなくnavigationオブジェクト（すなわち画面遷移の情報）にアクセスできます。&lt;/p&gt;
&lt;h2 id="実例"&gt;実例&lt;/h2&gt;
&lt;h3 id="開発環境"&gt;開発環境&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Expo SDK 42&lt;/li&gt;
&lt;li&gt;React Navigation 6.×&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="プログラム"&gt;プログラム&lt;/h3&gt;
&lt;p&gt;↓のGitHubのレポジトリからクローンしても試せます。
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fgithub.com%2fhtnabe%2fReactNavigation-Example%2ftree%2fmain"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;レポジトリを利用しない場合、事前に以下のコマンドで必要なモジュールをインストールしてください。&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;yarn add @react-navigation/stack
yarn add @react-navigation/native
yarn add react-native-gesture-handler
expo install react-native-safe-area-context
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;App.js&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import React from &amp;#39;react&amp;#39;;
import { createStackNavigator } from &amp;#39;@react-navigation/stack&amp;#39;;
import { NavigationContainer } from &amp;#39;@react-navigation/native&amp;#39;;

// スクリーンの読み込み
import FirstScreen from &amp;#39;./Screens/FirstScreen&amp;#39;;
import SecondScreen from &amp;#39;./Screens/SecondScreen&amp;#39;;
import ThirdScreen from &amp;#39;./Screens/ThirdScreen&amp;#39;;

const Stack = createStackNavigator();

export default function lectureApp() {
 return (
 &amp;lt; NavigationContainer &amp;gt;
 &amp;lt;Stack.Navigator&amp;gt;
 &amp;lt;Stack.Screen name=&amp;#34;first&amp;#34; component={FirstScreen} /&amp;gt;
 &amp;lt;Stack.Screen name=&amp;#34;second&amp;#34; component={SecondScreen} /&amp;gt;
 &amp;lt;Stack.Screen name=&amp;#34;third&amp;#34; component={ThirdScreen} /&amp;gt;
 &amp;lt;/Stack.Navigator&amp;gt;
 &amp;lt;/NavigationContainer&amp;gt;
 );
}
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;FirstScreen.js&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import { StyleSheet, View, Button } from &amp;#34;react-native&amp;#34;;
import React from &amp;#34;react&amp;#34;;

export default function firstScreen({ navigation }) {
 return (
 &amp;lt;View style={styles.screenContainer}&amp;gt;
 &amp;lt;Button
 title=&amp;#34;Go to second screen&amp;#34;
 onPress={() =&amp;gt; {
 navigation.navigate(&amp;#39;second&amp;#39; );
 }}
 /&amp;gt;
 &amp;lt;/View&amp;gt;
 )
}

const styles = StyleSheet.create({
 screenContainer: {
 flex: 1,
 alignItems: &amp;#39;center&amp;#39;,
 }
})
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;SecondScreen.js&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import { StyleSheet, View, Button } from &amp;#34;react-native&amp;#34;;
import React from &amp;#34;react&amp;#34;;
import { useNavigation } from &amp;#39;@react-navigation/native&amp;#39;;

export default function firstScreen() {
 const navigation = useNavigation();
 return (
 &amp;lt;View style={styles.screenContainer}&amp;gt;
 &amp;lt;Button
 title=&amp;#34;Go to third screen&amp;#34;
 onPress={() =&amp;gt; {
 navigation.navigate(&amp;#39;third&amp;#39;);
 }}
 /&amp;gt;
 &amp;lt;/View&amp;gt;
 )
}

const styles = StyleSheet.create({
 screenContainer: {
 flex: 1,
 alignItems: &amp;#39;center&amp;#39;,
 }
})
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;ThirdScreen.js&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;import { StyleSheet, View, Button } from &amp;#34;react-native&amp;#34;;
import React from &amp;#34;react&amp;#34;;
import { useNavigation } from &amp;#39;@react-navigation/native&amp;#39;;

export default function firstScreen() {
 const navigation = useNavigation();
 return (
 &amp;lt;View style={styles.screenContainer}&amp;gt;
 &amp;lt;Button
 title=&amp;#34;Back&amp;#34;
 onPress={() =&amp;gt; {
 navigation.goBack();
 }}
 /&amp;gt;
 &amp;lt;/View&amp;gt;
 )
}

const styles = StyleSheet.create({
 screenContainer: {
 flex: 1,
 alignItems: &amp;#39;center&amp;#39;,
 }
})
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="解説"&gt;解説&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;FirstScreen&lt;/code&gt;ではnavigation情報をpropsとして&lt;code&gt;{navigation}&lt;/code&gt;で参照しています。
一方、&lt;code&gt;SecondScreen&lt;/code&gt;と&lt;code&gt;ThirdScreen&lt;/code&gt;ではuseNavgationを利用した画面遷移を行っています。&lt;/p&gt;</description></item><item><title>【レビュー】ProBikeKitを初めて使ってみた話</title><link>https://t-pot.me/posts/daily/probikekit-review/</link><pubDate>Tue, 12 Oct 2021 22:06:43 +0900</pubDate><guid>https://t-pot.me/posts/daily/probikekit-review/</guid><description>&lt;h2 id="probikekitジャパンとの出会い"&gt;ProBikeKitジャパンとの出会い&lt;/h2&gt;
&lt;p&gt;夏に入って長距離のライドをすることがとても多くなってきたので、サドル・ボトル・フレームバッグ辺りを新調しようと思い色々なサイトを見回っていました。&lt;/p&gt;
&lt;p&gt;自転車パーツについてはあまり安いサイトなどを知らなかったので、以前まではよく&lt;code&gt;Amazon・楽天&lt;/code&gt;あたりを使っていました。が、今回たまたま&lt;code&gt;ProBikeKit&lt;/code&gt;さんに出会ってあの安さに衝撃を受けたので、多くのチャリダー・自転車乗りに&lt;code&gt;ProBikeKit&lt;/code&gt;さんを布教すべく記事にしましたw&lt;/p&gt;
&lt;h3 id="購入した商品"&gt;購入した商品&lt;/h3&gt;
&lt;p&gt;今回購入したのはこの7点です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;FIZIK ALIANTE R3 OPEN K:IUM（サドル）&lt;/li&gt;
&lt;li&gt;TOPEAK SIDEKICK WEDGE SADDLEBAG - MEDIUM（サドルバッグ）&lt;/li&gt;
&lt;li&gt;TOPEAK BACKLOADER 6L（サドルバッグ）&lt;/li&gt;
&lt;li&gt;CAMELBAK PODIUM CHILL（21オンスボトル）&lt;/li&gt;
&lt;li&gt;DEDA SQUALO（バーテープ）&lt;/li&gt;
&lt;li&gt;TOPEAK ROAD MORPH G（ポンプ）&lt;/li&gt;
&lt;li&gt;PBKブランドボトルケージ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;ProBikeKitさんを初めて使うということで、1回目はサドルだけを注文し、2回目に後の6点を注文しました。&lt;/p&gt;
&lt;h2 id="サドル購入時購入1回目"&gt;サドル購入時（購入1回目）&lt;/h2&gt;
&lt;p&gt;半信半疑でサドルだけを試しに購入したのですが、&lt;strong&gt;商品到着までに3週間かかりました&lt;/strong&gt;。購入時期がちょうどオリンピック開始直前の時期だったので、コロナの影響＋オリンピックによる日本への荷物輸送量の増加でめちゃくちゃ時間が掛かったみたいです。&lt;/p&gt;
&lt;p&gt;今回はサドルがいち早く必要だった、というわけではなかったので個人的には&lt;strong&gt;3週間かかっても全然平気でした&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;ちなみに到着時にはこんな感じで届きまして、&lt;em&gt;どこぞの〇mazonさんみたくクソデカ段ボールで中身スカスカみたいな事になってなくて好印象です。&lt;/em&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1634051897/NabeBlog/Inkedprobikekit_box_LI_j5r8cy.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="PBK_bix"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

中からサドルの箱を取り出しまして、
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634046278/NabeBlog/saddle_box_imualm.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1634046278/NabeBlog/saddle_box_imualm.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1634046278/NabeBlog/saddle_box_imualm.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1634046278/NabeBlog/saddle_box_imualm.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634046278/NabeBlog/saddle_box_imualm.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1634046278/NabeBlog/saddle_box_imualm.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1634046278/NabeBlog/saddle_box_imualm.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1634046278/NabeBlog/saddle_box_imualm.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="saddle_box"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

開封です。サドルに傷が付いてたりとかは全くなかったです。&lt;del&gt;それにしても良いデザインだ&amp;hellip;.。&lt;/del&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634046279/NabeBlog/saddle1_adsdkc.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1634046279/NabeBlog/saddle1_adsdkc.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1634046279/NabeBlog/saddle1_adsdkc.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1634046279/NabeBlog/saddle1_adsdkc.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634046279/NabeBlog/saddle1_adsdkc.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1634046279/NabeBlog/saddle1_adsdkc.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1634046279/NabeBlog/saddle1_adsdkc.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1634046279/NabeBlog/saddle1_adsdkc.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="saddle1"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634046277/NabeBlog/saddle2_nswer2.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1634046277/NabeBlog/saddle2_nswer2.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1634046277/NabeBlog/saddle2_nswer2.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1634046277/NabeBlog/saddle2_nswer2.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1634046277/NabeBlog/saddle2_nswer2.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1634046277/NabeBlog/saddle2_nswer2.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1634046277/NabeBlog/saddle2_nswer2.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1634046277/NabeBlog/saddle2_nswer2.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="saddle2"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Flatlist内でCheckBoxを使って複数選択する方法</title><link>https://t-pot.me/posts/tech/flatlist-checkbox-example/</link><pubDate>Tue, 05 Oct 2021 12:06:17 +0900</pubDate><guid>https://t-pot.me/posts/tech/flatlist-checkbox-example/</guid><description>&lt;h2 id="開発環境"&gt;開発環境&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Expo SDK 42&lt;/li&gt;
&lt;li&gt;React Native Elements 3.4.2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="実現したい動作"&gt;実現したい動作&lt;/h2&gt;
&lt;p&gt;今回実装しようとした動作は↓動画に示したものです。


&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe src="https://res.cloudinary.com/takenoko/video/upload/w_800,f_auto/v1631543025/NabeBlog/RN-flatlist-checkbox_tgmfyc.mp4" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="Video"&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;/p&gt;
&lt;p&gt;実際の動作は下のレポジトリの&lt;code&gt;installation&lt;/code&gt;の手順で試せます。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fgithub.com%2fhtnabe%2fReactNative-Flatlist-Chechbox-Example"
&gt;&lt;/iframe&gt;

&lt;h2 id="主要なモジュールと選考理由"&gt;主要なモジュールと選考理由&lt;/h2&gt;
&lt;p&gt;今回は&lt;code&gt;React Native Elements&lt;/code&gt;の&lt;code&gt;CheckBox&lt;/code&gt;を選びました。&lt;code&gt;CheckBox&lt;/code&gt;の候補としては&lt;a href="https://github.com/WrathChaos/react-native-bouncy-checkbox"&gt;react-native-bouncy-checkbox&lt;/a&gt;、&lt;a href="https://github.com/react-native-checkbox/react-native-checkbox"&gt;react-native-checkbox&lt;/a&gt;等が上がるのですが、今回は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;yarnでパッケージ管理が可能&lt;/li&gt;
&lt;li&gt;IOS, Android の両者で問題なく動作&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を確実に満たすモジュールとして&lt;code&gt;React Native Elements&lt;/code&gt;のものを選びました。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2freactnativeelements.com%2fdocs%2fcomponents%2fcheckbox"
&gt;&lt;/iframe&gt;

&lt;h2 id="実装方法について"&gt;実装方法について&lt;/h2&gt;
&lt;p&gt;実装方法を検索したところ、主に二つの方法があることが分かりました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;FlatListに渡っているJSONデータのid等を参照し、チェックマークを付けるデータを選択・再レンダーする方法&lt;/li&gt;
&lt;li&gt;渡ってくるデータに&lt;code&gt;checked&lt;/code&gt;などの項目を追加して&lt;code&gt;checked=true&lt;/code&gt;となった時点で再レンダーする方法&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一つ目の方法については下の動画が参考になると思います。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lFaklQ-7CXU?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;h3 id="採用した方法についてのおおまかな説明"&gt;採用した方法についてのおおまかな説明&lt;/h3&gt;
&lt;p&gt;今回は上記二つ目の方法を採用しました。例えば下のようなデータを用意し、&lt;/p&gt;</description></item><item><title>プライバシーポリシーおよび免責事項</title><link>https://t-pot.me/privacy/</link><pubDate>Sun, 05 Sep 2021 22:50:15 +0900</pubDate><guid>https://t-pot.me/privacy/</guid><description>&lt;h2 id="個人情報の利用目的"&gt;個人情報の利用目的&lt;/h2&gt;
&lt;p&gt;当ブログでは、お問い合わせの際、名前やメールアドレス等の個人情報を入力いただく場合がございます。
取得した個人情報は、お問い合わせに対する回答をご連絡する場合に利用させていただくものであり、この目的以外では利用いたしません。&lt;/p&gt;
&lt;h2 id="広告について"&gt;広告について&lt;/h2&gt;
&lt;p&gt;当ブログでは、以下の広告サービスを利用しています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Amazonアソシエイトプログラム&lt;br&gt;
本サイトは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイトプログラムの参加者です。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ValueCommerce（バリューコマース）アフィリエイトプログラム&lt;br&gt;
当サイトは、サイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、ValueCommerce（バリューコマース）アフィリエイトプログラムの参加者です。このプログラムにおいて取得・収集される情報等につきましては、バリューコマースのアフィリエイトプログラムにおける最新の&lt;a href="https://www.valuecommerce.co.jp/privacy_policy/"&gt;プライバシーポリシー&lt;/a&gt;をご確認ください。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="免責事項"&gt;免責事項&lt;/h2&gt;
&lt;p&gt;当ブログからのリンクやバナーなどで移動したサイトで提供される情報、サービス等について一切の責任を負いません。&lt;/p&gt;
&lt;p&gt;また当ブログのコンテンツ・情報について、可能な限り正確な情報を提供するように努めておりますが、正確性や安全性を保証するものではありません。情報が古くなっていることもございます。&lt;/p&gt;
&lt;p&gt;当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。&lt;/p&gt;</description></item><item><title>スマホアプリの作成に参考になったサイト一覧【React Native + Expo】</title><link>https://t-pot.me/posts/tech/react-native-references/</link><pubDate>Fri, 26 Mar 2021 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/tech/react-native-references/</guid><description>&lt;h2 id="追記2022年3月"&gt;追記（2022年3月）&lt;/h2&gt;
&lt;p&gt;2022年になってもまた参考になった記事が幾つか見つかったのでシェアしておきます。&lt;/p&gt;
&lt;h2 id="始めに"&gt;始めに&lt;/h2&gt;
&lt;p&gt;最近、自分が所属する学生向けにスマホアプリを作成しました。構成としてはTwitter API, Google Cloud Platform, Google Spreadsheet API, React Native, Expoです。&lt;/p&gt;
&lt;p&gt;周りにReact Native, Expoについて明るい方がいないので完全に独学になりました。が、その分2021年現在でも問題なく参考になるサイトを把握できたのと、お気に入りバーが狭くなってきたので自分の備忘録がてらシェアしときます。&lt;/p&gt;
&lt;h2 id="twitter-apiについて"&gt;Twitter APIについて&lt;/h2&gt;
&lt;p&gt;今回作成したアプリではTwitter APIとして&lt;code&gt;user_timeline&lt;/code&gt;APIと&lt;code&gt;oEmbed&lt;/code&gt;APIを用いました。それぞれ下記リンクの通りです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline" target="_blank" rel="noopener noreferrer"&gt;GET statuses/user_timeline | Twitter - Developer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/get-statuses-oembed" target="_blank" rel="noopener noreferrer"&gt;GET statuses/oembed | Twitter - Developer&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通常、&lt;strong&gt;Twitter APIを利用してツイートを外部のアプリケーションで表示する際にはTwitterの埋め込み機能が推奨されています&lt;/strong&gt;（Twitterの利用規約なども全て満たせています）。&lt;/p&gt;
&lt;p&gt;これはwebアプリケーションなどではそのままhtmlのタグを読み込むだけなので簡単に実装できますが、スマホアプリ、しかもReact Native+ Expoだと、ツイートの埋め込みは面倒な手順となります。特に、Flatlist内にhtmlタグを埋め込むにはサードパーティのライブラリをがっつり導入することになったり、そもそもExpoの&lt;code&gt;managed flow&lt;/code&gt;では実装できない可能性が高いです（私には実装方法が分からなかった）。&lt;/p&gt;
&lt;p&gt;そこでhtmlタグでの埋め込みを回避し、&lt;strong&gt;Twitterの利用規約や外部アプリでツイートを表示する際に必ず守らなければならないデザインの要綱&lt;/strong&gt;を全て満たし、React NativeのViewやTextタグにスタイルを付けて実装しました。&lt;/p&gt;
&lt;p&gt;ツイートを外部アプリで表示するためには下記の5～7番目などのTwitterの規約を守る必要があります。なかなか細かく決まっていますが根気よく読んで、違反箇所が無いように気を付けるしかかなさそうです。&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;a href="https://qiita.com/hitsumabushi845/items/f7fd87106381fc65fc86" target="_blank" rel="noopener noreferrer"&gt;140文字以上のツイートを取得する - Qiita&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://e-yota.com/webservice/post-2511/" target="_blank" rel="noopener noreferrer"&gt;Twitter APIのユーザータイムライン（GET statuses/user_timeline）をデータベースに切れ目なく保存する（その4~since_idとmax_idの組み合わせについて） &amp;#8211; エコテキブログ&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ailaby.com/twitter_api/" target="_blank" rel="noopener noreferrer"&gt;TwitterAPI でツイートを大量に取得。サーバー側エラーも考慮（pythonで） | コード７区&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.twitter.com/en/developer-terms/display-requirements" target="_blank" rel="noopener noreferrer"&gt;Display requirements – Twitter Developers | Twitter
 Developer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.twitter.com/en/developer-terms/more-on-restricted-use-cases" target="_blank" rel="noopener noreferrer"&gt;More on restricted use cases – Twitter Developers | Twitter
 Developer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.twitter.com/ja/developer-terms/agreement" target="_blank" rel="noopener noreferrer"&gt;開発者契約 − Twitter開発者 | Twitter
 Developer&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="react-nativeの各ライブラリについて"&gt;React Nativeの各ライブラリについて&lt;/h2&gt;
&lt;p&gt;全体に共通する基礎部分である、RNの構文についてよくまとめられています。&lt;/p&gt;</description></item><item><title>トランジスタ技術2019年7月号でカルマンフィルタ完全に理解した件</title><link>https://t-pot.me/posts/tech/kalman-filter/</link><pubDate>Tue, 16 Feb 2021 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/tech/kalman-filter/</guid><description>&lt;h2 id="この記事を書くに至った背景"&gt;この記事を書くに至った背景&lt;/h2&gt;
&lt;p&gt;2020/10始め～2021/01末まで制御工学の講義を通して&lt;em&gt;H∞制御&lt;/em&gt;や&lt;em&gt;最適レギュレータ問題&lt;/em&gt;についてシミュレーション＋座学を通して学んだのですが、そこで軽く扱ったカルマンフィルタが何者なのか当初はほとんど理解できませんでした。&lt;/p&gt;
&lt;p&gt;大学の蔵書からカルマンフィルタについて書かれた文献を探して読んでみたのですが、あまりにも難しく書かれたものと、詳しい記述がほぼスルーされたもので2極化しているような感じで中々自分にとってベストな文献が見つかりませんでした。&lt;/p&gt;
&lt;p&gt;そんな中、いつもの様にtwitterで独り言をつぶやいていると&amp;hellip;&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;2019年7月号のトランジスタ技術にすごくわかりやすく解説してあるよ&lt;/p&gt;&amp;mdash; ICデストロイヤー艹木 (@woxiaota) &lt;a href="https://x.com/woxiaota/status/1340907259161767936?ref_src=twsrc%5Etfw"&gt;December 21, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.x.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;


&lt;p&gt;と超絶ありがたいアドバイスをもらって早速Amazonでポチることに…&lt;/p&gt;
&lt;div class="card mb-3 border-0 bg-body-secondary shadow"&gt;
 &lt;div class="row g-0"&gt;
 &lt;div class="col-sm-3 d-flex align-items-center justify-content-center"&gt;
 &lt;img
 class="height-100px shadow-none rounded"
 src="https://images-na.ssl-images-amazon.com/images/P/B07RS8ZTJ3.09.LZZZZZZZ.jpg"
 loading="lazy"
 /&gt;
 &lt;/div&gt;
 &lt;div class="col-sm-9"&gt;
 &lt;div class="card-body"&gt;
 &lt;h5 class="card-title"&gt;
 &lt;a
 href="https://www.amazon.co.jp/gp/product/B07RS8ZTJ3/?tag=takenoko06b-22"
 target="_blank"
 rel="noopener noreferrer"
 &gt;
 &lt;i class="bi bi-box-arrow-up-right"&gt;&lt;/i&gt;&amp;nbsp;トランジスタ技術 2019年 07 月号
 &lt;/a&gt;
 &lt;/h5&gt;
 &lt;p class="card-text text-body-secondary"&gt;
 &lt;i class="bi bi-amazon"&gt;&lt;/i&gt;
 amazon.co.jp
 &lt;/p&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;※Amazonで売り切れになってましたら出版社の通販でも電子書籍版を購入できますので↓のリンクからどうぞ。&lt;/p&gt;
&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fcc.cqpub.co.jp%2flib%2fsystem%2fdoclib_item%2f1230%2f"
&gt;&lt;/iframe&gt;

&lt;h2 id="トランジスタ技術2019年7月号"&gt;トランジスタ技術2019年7月号&lt;/h2&gt;
&lt;p&gt;私自身は紹介されるまでこの雑誌のことを1ミリも知らなかったのですが、電気業界だとめちゃくちゃ老舗の有名な雑誌（&lt;a href="https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B8%E3%82%B9%E3%82%BF%E6%8A%80%E8%A1%93"&gt;1964年10月創刊&lt;/a&gt;）なんですね。&lt;/p&gt;
&lt;p&gt;ちなみに2019年7月号では月着陸船アポロに学ぶ確率統計コンピュータが特集されている他、カルマンフィルタを用いた倒立振子系の制御について細かいパーツの説明に至るまで丁寧にされており、&lt;strong&gt;これ1冊で理論と実験まで全て網羅できる内容&lt;/strong&gt;になっています。&lt;/p&gt;
&lt;p&gt;本記事でカルマンフィルタについて説明するのは知財権的に問題がありそうなのでやりませんが、個人的にはこの雑誌のおかげで人に説明できるくらいにはカルマンフィルタについての理解度を上げれたように感じています。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;そもそも&lt;strong&gt;カルマンフィルタについて平易に説明された文献が多くない&lt;/strong&gt;（少なくとも自分は出会えなかった）中で、日本語でここまで丁寧に必要な知識を全て説明されている文献は非常に貴重ではないでしょうか。&lt;/p&gt;
&lt;p&gt;おまけに送料抜き税込み1100円という超安価&amp;hellip;！ビギナーからベテランまでお勧めできる超良本です！&lt;/p&gt;</description></item><item><title>【初学者向け】グリーンのひずみテンソルと微小ひずみテンソル</title><link>https://t-pot.me/posts/math/straintensor/</link><pubDate>Tue, 26 Jan 2021 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/math/straintensor/</guid><description>&lt;h2 id="はじめに"&gt;はじめに&lt;/h2&gt;
&lt;p&gt;本記事ではベクトルと行列のそれぞれを明示するために行列Aの場合は$\left[A\right]$、ベクトルAの場合は$\{A\}$のように&lt;code&gt;[]&lt;/code&gt;と&lt;code&gt;{}&lt;/code&gt;を使い分けています。また、&lt;strong&gt;初学者の脳みそをパンクさせないためにラグランジュ法とオイラー法についての紹介は行っていません&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;本記事ではグリーンのひずみテンソルについて簡単な紹介しか行わないため、詳細を知りたい方はこちら↓の参考文献&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;などを参照してください&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;

&lt;div data-vc_mylinkbox_id="889166451"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889172147"&gt;&lt;/div&gt;


&lt;h2 id="この記事を書いた動機"&gt;この記事を書いた動機&lt;/h2&gt;
&lt;p&gt;昨年・一昨年と連続体力学（特に固体力学分野）の勉強をする機会があったのですが、主にテンソルの総和規約のせいで、とても難しく感じました。&lt;/p&gt;
&lt;p&gt;確かに、ある概念を数学的に無駄のない形で定義通り伝える重要性は理解できますが、非常に厳密な定義や抽象的な説明が初学者の理解度を深めるのに有効であるとは思いません。&lt;/p&gt;
&lt;p&gt;これを解決する方法として、少々時間のかかる方法ですが、&lt;strong&gt;初学者が従来学習してきた（はずの）応力・ひずみの概念、および行列・ベクトルの様々な計算とテンソルの演算方法を具体的に紐づける必要がある&lt;/strong&gt;と感じました（というよりも私はこれでようやく様々なテンソルの話を理解できるようになりました）。&lt;/p&gt;
&lt;p&gt;そこで、本記事では一例としてグリーンのひずみテンソルの定義式に着目し、その定義式に則りつつも、より具体的な行列・ベクトルの計算を介することでこれらの概念を少しでも理解しやすくしたいと思います&lt;sup id="fnref1:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;h2 id="グリーンのひずみテンソルとは"&gt;グリーンのひずみテンソルとは&lt;/h2&gt;
&lt;p&gt;大変形を意味する有限変形の概念を考える上でも重要なグリーンのひずみテンソルについて、日本機械学会の公式サイトが説明してくれています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.jsme.or.jp/jsme-medwiki/07:1003375"&gt;機械工学事典 グリーンのひずみテンソル&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jsme.or.jp/jsme-medwiki/07:1012904"&gt;機械工学事典 有限変形&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお、参考文献&lt;sup id="fnref1:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;においてグリーンのひずみテンソルは移動前の位置ベクトル$\boldsymbol{\it{A}}, \boldsymbol{\it{B}}$と移動後の位置ベクトル$\boldsymbol{\it{A&amp;rsquo;}}, \boldsymbol{\it{B&amp;rsquo;}}$を用いて次の通り定義されています&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;\begin{equation}
\boldsymbol{A&amp;rsquo;}\cdot\boldsymbol{B&amp;rsquo;}-\boldsymbol{A}\cdot\boldsymbol{B}=\rm{2\it{E_{ij}}\it{A_{i}}\it{B_{j}}}\\\
\end{equation}&lt;/p&gt;
&lt;p&gt;定義通り説明するとこの表現が奇麗な表現になります。ただし、初学者がこの式をただ眺めても
「良く分からない行列計算を良く分からない下付き文字（総和規約）を使って表現しているんだなぁ」くらいにしか分からないと思います。&lt;/p&gt;
&lt;h2 id="グリーンのひずみテンソルの導出のような何か"&gt;グリーンのひずみテンソルの導出のような何か&lt;/h2&gt;
&lt;p&gt;まず、下図の様に位置ベクトル$\{A\}$が変位$u, v, w$によってベクトル$\{A&amp;rsquo;\}$となる場合を考えます&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;。なお、ベクトル$\{A\}$は式(2)で表されるものとしています。&lt;/p&gt;
&lt;p&gt;\begin{equation}
\{A\}=
\begin{Bmatrix}\rm{d}x\\ \rm{d}y\\ \rm{d}z\end{Bmatrix}
\end{equation}&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1630548808/NabeBlog/deform_image_qhxczd.svg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1630548808/NabeBlog/deform_image_qhxczd.svg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1630548808/NabeBlog/deform_image_qhxczd.svg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1630548808/NabeBlog/deform_image_qhxczd.svg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1630548808/NabeBlog/deform_image_qhxczd.svg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1630548808/NabeBlog/deform_image_qhxczd.svg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1630548808/NabeBlog/deform_image_qhxczd.svg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1630548808/NabeBlog/deform_image_qhxczd.svg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="deformation"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;続いて次式を計算します&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;p&gt;\begin{equation}
\{A&amp;rsquo;\}\cdot\{A&amp;rsquo;\}-\{A\}\cdot\{A\}
\end{equation}&lt;/p&gt;
&lt;p&gt;なお、計算の際にはベクトル$\{A&amp;rsquo;\}$が変位勾配テンソル$\left[ \it{F}\rm~\right]$と$\{A\}$を用いて次式で表せることを用います。&lt;/p&gt;
&lt;p&gt;\begin{equation}
\{A&amp;rsquo;\}=\{A\}+\left[ \it{F}\rm~\right]\{A\}=\begin{Bmatrix}\rm{d}x\\ \rm{d}y\\ \rm{d}z\end{Bmatrix}+
\begin{bmatrix}
\frac{\partial u}{\partial x} &amp;amp; \frac{\partial u}{\partial y} &amp;amp; \frac{\partial u}{\partial z} \\\
\frac{\partial v}{\partial x} &amp;amp; \frac{\partial v}{\partial y} &amp;amp; \frac{\partial v}{\partial z} \\\
\frac{\partial w}{\partial x} &amp;amp; \frac{\partial w}{\partial y} &amp;amp; \frac{\partial w}{\partial z}
\end{bmatrix}\begin{Bmatrix}\rm{d}x\\ \rm{d}y\\ \rm{d}z\end{Bmatrix}
\end{equation}&lt;/p&gt;</description></item><item><title>【2021年】新年のご挨拶</title><link>https://t-pot.me/posts/daily/newyeargreeting/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/newyeargreeting/</guid><description>&lt;h2 id="新年のご挨拶"&gt;新年のご挨拶&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;2021年、明けましておめでとうございます。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;本年も当ブログならびに&lt;a href="https://twitter.com/n_a_b_e_t_a_s_o"&gt;Nabe-cyan&lt;/a&gt;をよろしくお願い申し上げます。&lt;/p&gt;
&lt;h2 id="昨年のブログ運営と本年の抱負"&gt;昨年のブログ運営と本年の抱負&lt;/h2&gt;
&lt;p&gt;昨年3/8日から開始した本ブログですが、昨年9か月の&lt;strong&gt;総ユーザー数は約1500人、つまり月当たり160人強となりました。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ブログを始めたばかりの頃は1日の訪問者数が2桁を超えた日には泣いて喜んだもんですが、今では平日の1日平均が簡単に10人を超えるようになりました。&lt;/p&gt;
&lt;p&gt;頻繁に読まれる記事としては以下のランキングとなっています。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;【Slack + GAS + Spreadsheetで作る備品管理システム】特定のチャンネルのログを取る感じでSlack API使ってみた&lt;/li&gt;
&lt;li&gt;GAS初学者がSESAMEを使った部屋予約システムを作ってみた話&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t-pot.me/posts/daily/hunivtest/"&gt;他大学から北海道大学工学院試を受けてみた&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Jekyll(Minimal Mistakes) + GitHub Pagesで個人Webサイト作ってみた話2&lt;/li&gt;
&lt;li&gt;&lt;a href="https://t-pot.me"&gt;Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;【Jekyll】日本語記事の「この記事は何分で読めます」を表示する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;（7位以下略）&lt;/p&gt;
&lt;p&gt;私がこのブログを始めた理由でもある、Slack + GAS + SpreadSheetの連携についての記事や GAS + SESAME の予約管理システムの記事が一番人気となりました（やったぜ）。&lt;/p&gt;
&lt;p&gt;一方で、&lt;strong&gt;北海道大学工学院に落ちた話は特にここ数か月で一気にユーザー数が伸びました&lt;/strong&gt;。&lt;del&gt;特に合格発表日前後で伸びるw&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;本年はニッチなTech系統の記事をより充実させつつ、日々の趣味に関する記事も増やしていきたいなと感じています。&lt;/p&gt;
&lt;p&gt;特に&lt;a href="https://t-pot.me/posts/daily/gasdesk/"&gt;ガス式昇降デスクの話&lt;/a&gt;については他に検索してもブロガーの感想記事が出てこないのと、約1年使ってみてのメリット・デメリットを新たに発見できたので、感想記事を新たに書いてみたいなと思っています。&lt;/p&gt;
&lt;p&gt;という感じで、本年の抱負ですが、&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ゆるーく更新 ＆ 広告付ける&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;でいこうと思います。無理のない範囲で更新して、そろそろ邪魔にならない程度に広告を付けようかなと思っています。&lt;/p&gt;
&lt;h2 id="私生活での抱負というかやりたい事興味ない方はスキップどうぞ"&gt;私生活での抱負というかやりたい事（興味ない方はスキップどうぞ）&lt;/h2&gt;
&lt;p&gt;今年やりたいことは幾つかあるのですが、特出したものを下にリストアップしました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;留学行く（夏以降の情勢に依りけり）&lt;/li&gt;
&lt;li&gt;スマホアプリケーションを一つ作成（ポートフォリオ代わり）&lt;/li&gt;
&lt;li&gt;春夏ごろに給付型奨学金を最低一つ取りに行く&lt;/li&gt;
&lt;li&gt;（可能であれば）就職希望先でバイトする&lt;/li&gt;
&lt;li&gt;機械学会で全国区の学会発表やる&lt;/li&gt;
&lt;li&gt;ブログの運営費を広告収入費でまかなう&lt;/li&gt;
&lt;li&gt;TOEIC 800 ~ 850点 + TOEFLリベンジ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本年も、地に足付けて色々と実績を詰んで行きたいと思います。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;長くなりましたが、本年も生暖かい目で当ブログをご利用ください。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;皆様にとっても実り多い年になるようアビスの底から少しだけ祈っています。&lt;/strong&gt;&lt;del&gt;んなぁ～&lt;/del&gt;&lt;/p&gt;</description></item><item><title>Robotics;Notes Dashレビュー【ロボットっていいよね &amp; ネタバレ注意】</title><link>https://t-pot.me/posts/daily/robonodashreview/</link><pubDate>Mon, 26 Oct 2020 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/robonodashreview/</guid><description>&lt;p&gt;この記事にはネタバレが多少なり含まれています。未プレイの方はブラウザバックをお勧めしますん☆&lt;/p&gt;
&lt;p&gt;&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=http%3a%2f%2froboticsnotes.jp%2f"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fstore.steampowered.com%2fapp%2f1111390%2fROBOTICSNOTES_DaSH%2f"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2 id="初めに"&gt;初めに&lt;/h2&gt;
&lt;p&gt;Robotics;Notes Dash Steam販売開始やったぜ！&amp;amp;おめでとう！&lt;/p&gt;
&lt;p&gt;ちなみに自分はSteam版の販売開始から10時間後くらいに購入、プレイ開始したんですけど、その時点で既に9件の高評価が入ってましたw&lt;/p&gt;
&lt;p&gt;海外ファンが多いゲームのあるあるですが、海外ニキたちが購入後プレイ以前に高評価押してる感じがすぐわかりましたwロボノ、愛されてます。&lt;/p&gt;
&lt;h2 id="ストーリー"&gt;ストーリー&lt;/h2&gt;
&lt;p&gt;OPから見ても分かる通り&lt;strong&gt;ダル+チュウタネロボ部 vs 君島コウ&lt;/strong&gt;って感じでした。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/kt76GWtOneA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;ストーリーだけに着目すると、正直Akiho Phase、Last Phase以外はしゃーなしで物語を継ぎ足された感が否めませんでした。シュタゲみたいな濃厚なストーリーギミックなどを期待してた方には本作は物足りなく感じられるかもしれません。&lt;/p&gt;
&lt;p&gt;自分の場合は単純にアニメからのロボノの結末がどうなるのか気になっていたので、色々なルートを普通に楽しめました。&lt;/p&gt;
&lt;p&gt;総評として、ロボットSFものとしては**そこまで悪くないんじゃね？**って思ってます。&lt;/p&gt;
&lt;p&gt;逆にアニメ版から入った方でもDaSHを違和感なくプレイできるのは良い点かもしれません（ゲーム操作性は正直微妙ですが）。&lt;/p&gt;
&lt;p&gt;ストーリー全体的には、良くも悪くも&lt;strong&gt;何が何でもハッピーエンドにしてやろう&lt;/strong&gt;という雰囲気がひしひしと伝わってくるものでした。本作に何を期待するかによってこの点についての評価が大きく変わるのではないかと思います。&lt;/p&gt;
&lt;p&gt;また、本作にはロボノELITE、シュタゲシリーズみたいなバッドエンドがないため、そこまで緊張感なくプレイできてしまう点や、比較的薄っぺらいストーリーに残念がる方も多いのではないかと思います。これからプレイする方は過大な期待をしない方が良いと思われまする。&lt;/p&gt;
&lt;p&gt;各ルートについての感想。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;淳和ルート&lt;/strong&gt;
ポンコツかわいいﾔｯﾀｰ。最後のvs昴戦だけは熱かった。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;昴ルート&lt;/strong&gt;
腐向け。俺は何を見せられてるんだ…と感じる部分が多くプレイヤーのコンテンツへの愛を試されるルート。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;愛理ルート&lt;/strong&gt;
ｲｲﾊﾅｼｶﾅｰ? 愛理たそprpr&amp;hellip;prprprprprprpr&amp;hellip;prprprpr&amp;hellip;&lt;del&gt;ふぅ&lt;/del&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;フラウルート&lt;/strong&gt;
えぇ…フラウたそはもっと幸せになっても良かったはず&amp;hellip;ぽやしみ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;あき穂ルート&lt;/strong&gt;
甘々。いいぞもっとやれ。圧倒的ヒロイン感。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;ダルルート&lt;/strong&gt;
良くあるご都合主義なストーリー。だがそれが良い！&lt;del&gt;って言える人は楽しめる&lt;/del&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;っていう感じですね。ダルルートの最後のシーンで、複製しては消えていく君島コウの姿が意味深に描かれてましたが、それが（あるか知らんが）次回作に繋がるのか、単なる演出かは気になるところ。&lt;/p&gt;</description></item><item><title>北海道大学工学院試を落ちた話</title><link>https://t-pot.me/posts/daily/hunivtest/</link><pubDate>Mon, 14 Sep 2020 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/hunivtest/</guid><description>&lt;p&gt;正直、試験内容は思い出したくないほど悲惨なので記録として残しておくか迷ったのですが、少しでも北海道大学工学院への進学を検討されている方の参考になれば良いなと思って残しておきます。&lt;/p&gt;
&lt;h2 id="なぜ北海道大学なのか"&gt;なぜ北海道大学なのか&lt;/h2&gt;
&lt;p&gt;理由はいくつかあるけど、一番大きなものは&lt;strong&gt;興味を持っている分野について先進的な研究を行える研究室があるから&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;島大でそれができるなら大学院も島大で良かった。&lt;/p&gt;
&lt;h2 id="院試に必要な知識と分野"&gt;院試に必要な知識と分野&lt;/h2&gt;
&lt;p&gt;北海道大学工学院への入試に必要とされる学問分野と大まかな各内容は以下の通りです。





&lt;table class="table"&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;学問&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;材料力学&lt;/td&gt;
 &lt;td&gt;引っ張り、曲げ、ねじり、&lt;strong&gt;3軸応力、ひずみエネルギー（カスティリアーノの定理&lt;/strong&gt;）など&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;機械力学・制御工学&lt;/td&gt;
 &lt;td&gt;制御工学と機械力学の基礎部分についての問題なので、島大生なら復習さえすれば満点取れます。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;熱力学&lt;/td&gt;
 &lt;td&gt;サイクル効率、湿り度・乾き度、&lt;strong&gt;エクセルギーについての応用問題&lt;/strong&gt;など&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;流体力学&lt;/td&gt;
 &lt;td&gt;非粘性・&lt;strong&gt;粘性&lt;/strong&gt;・非圧縮、&lt;strong&gt;NS方程式・境界層方程式&lt;/strong&gt;、ベルヌーイの定理の応用、複素速度ポテンシャルの応用問題など&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;英語&lt;/td&gt;
 &lt;td&gt;TOEIC or TOEFLスコアを求められる。工学院で用いられているTOEFLの点数換算方法が分からないので個人的には点の取りやすいTOEICをお勧めします。&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;


太字部分は島根大学で学ばなかった概念です。主にこれらの内容を3.5カ月間独学しました。&lt;/p&gt;
&lt;h2 id="勉強スケジュール"&gt;勉強スケジュール&lt;/h2&gt;
&lt;p&gt;今回の院試に向けて以下の通りスケジュールを組んで勉強しました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4~5月：TOEFL iBTに向けた勉強（オンライン英会話が主）&lt;/li&gt;
&lt;li&gt;5~7月：4力精選問題集で問題を解きながら基礎知識の習得&lt;/li&gt;
&lt;li&gt;8月：過去問を解いて実際のテストのシミュレーションを行う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちなみに、英語の勉強に関連した内容は以下の記事にまとめてあるので必要でしたら確認してください。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://t-pot.me/posts/daily/toefl1/"&gt;初TOEFL iBT(Special Home Edition)&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="機械系学科院試に必須の一冊"&gt;機械系学科院試に必須の一冊&lt;/h2&gt;


&lt;div data-vc_mylinkbox_id="889183738"&gt;&lt;/div&gt;


&lt;p&gt;正直、この本と各学問の便覧（JSMEシリーズ）などを参照すればしっかりと知識が身につくと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;この本にはたくさんの誤植があります。問題集としては優れていますが書籍としては&amp;hellip;&lt;/li&gt;
&lt;li&gt;自分は4月にこの本を購入しましたが、&lt;strong&gt;5月にはAmazonで高値で転売されてました&lt;/strong&gt;。早めの購入をお勧めします。&lt;/li&gt;
&lt;li&gt;また、購入する際は転売ヤーから購入することだけは避けましょう。&lt;/li&gt;
&lt;li&gt;（身内ネタになるのですが、この本で扱う熱力学・流体力学の内容は島根大学で学べる内容を超えています。&lt;del&gt;悲しみ&amp;hellip;&lt;/del&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="試験日程について"&gt;試験日程について&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;8/24：TOEFL ITP（受けたい人は受けれます）&lt;/li&gt;
&lt;li&gt;8/25：筆記試験&lt;/li&gt;
&lt;li&gt;8/26：面接（紙面上は一人5分）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今年はコロナの影響で英語について十分な点数を出せなかった学生を救済するためにTOEFL ITPが急遽設けられました。&lt;/p&gt;
&lt;p&gt;自分は5月に受けたTOEFL iBTよりもいい点が取れるとは思わなかったのですが、ワンチャンに掛けてITPも受けました。&lt;/p&gt;
&lt;p&gt;TOEFL ITPはこの記事の主役ではないので詳細は省きますが、&lt;strong&gt;正直かなり不幸でした&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="筆記試験"&gt;筆記試験&lt;/h2&gt;
&lt;p&gt;午前中に行われた材料力学・機械力学・制御工学の試験ですが、&lt;strong&gt;関数電卓忘れました&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;この正念場で電卓をホテルに忘れました&amp;hellip;（しかも得意の材力・機力・制御でこれをやってしまった）&lt;/p&gt;
&lt;p&gt;とは言っても電卓が無くても解ける問題がほとんどだったので、そこまで結果に影響はなかったと思います。&lt;/p&gt;
&lt;p&gt;午後の流体・熱力には電卓を用意できたのですが、恐らく流体6割、熱力3割くらいしか回答できなかった（これが落ちた一番大きな理由）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;絶望。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="面接"&gt;面接&lt;/h2&gt;
&lt;p&gt;「この筆記試験の結果じゃあ落ちたな（確信）」と思っていたので面接に行くのがかなり億劫でした。&lt;/p&gt;
&lt;p&gt;面接では以下を答えてくださいと言われました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;志望理由&lt;/li&gt;
&lt;li&gt;卒業研究（に着手しているのであれば）について&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;さらに質問としてあったのは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;合格した場合は必ず入学するのか&lt;/li&gt;
&lt;li&gt;希望先の教授とはすでにコンタクトを取ったか&lt;/li&gt;
&lt;li&gt;現在就活しているか・他の大学を受験中か&lt;/li&gt;
&lt;li&gt;北海道大学に落ちた場合はどうするのか&lt;/li&gt;
&lt;li&gt;前日の筆記試験についての手ごたえはどうか・どの教科が難しかったか&lt;/li&gt;
&lt;li&gt;北海道大学と島根大学のカリキュラムでは学習内容が全く異なると思うがどうか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;でした。&lt;/p&gt;
&lt;p&gt;以上について、流石に面接の&lt;strong&gt;時間が短すぎて卒業研究については説明する時間が無いと思い、一応前もって用意していた資料を渡しました&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>初TOEFL iBT(Special Home Edition)</title><link>https://t-pot.me/posts/daily/toefl1/</link><pubDate>Wed, 24 Jun 2020 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/toefl1/</guid><description>&lt;h2 id="追記2020年6月"&gt;追記（2020年6月）&lt;/h2&gt;
&lt;p&gt;TOEFLの結果が出ました。R:16, L:22, S:16, W:22の計76点でした。もう一回くらい受ければあと4点は全然何とかなるかも…？&lt;/p&gt;
&lt;h2 id="受けた理由"&gt;受けた理由&lt;/h2&gt;
&lt;p&gt;8月末にとある大学院入試に応募する際に、IELTS/TOEFL iBT/TOEFL iPT/TOEIC L&amp;amp;Rの中から提出できるスコアを出して欲しいとのことでした。&lt;/p&gt;
&lt;p&gt;本当は一番点数を取りやすいTOEICのスコアを提出したかったのですが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コロナウィルスの影響で当分TOEICを受けられないことになった&lt;/li&gt;
&lt;li&gt;ここ3年くらいTOEICを受けてなかった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というのが原因でTOEFLを受けることにしました。&lt;/p&gt;
&lt;h2 id="当日の様子"&gt;当日の様子&lt;/h2&gt;
&lt;p&gt;当日の朝から部屋を奇麗にして、机（ライト付き）とノートパソコン、パスポート、ホワイトボード（Eraserとペンも用意）の状態にしました。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;テストの流れとか準備については↓の動画が分かりやすいです。&lt;/em&gt;&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/3x5KUwNHjD8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;h2 id="reading"&gt;Reading&lt;/h2&gt;
&lt;p&gt;大爆死でした。&lt;/p&gt;
&lt;p&gt;今まで使ってた教材で、Readningは結構4セクションの中でも常に一番良いか、それなりに良い点数取れてたので先週あたりから&lt;em&gt;Readingは全く勉強しなかった&lt;/em&gt;し何とかなるやろって思ってました。&lt;/p&gt;
&lt;p&gt;実はReadingの大門の回答時間が1つあたり18分に変わったことを知らなくて、20分で解くペースで読み進めてたのが一番の問題でした。ほかに、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;最近、あまりにも長文読んでなかったせいで読む速さが遅くなってた&lt;/li&gt;
&lt;li&gt;段落からキーワードを見つけるのも遅かった&lt;/li&gt;
&lt;li&gt;分からない単語がめっちゃ出てきた&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;集中力切れ&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部屋の外の環境音でかなり気が散った&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;でした。&lt;/p&gt;
&lt;p&gt;特に1, 2, 3については「自分の力不足」＋「慢心」が原因だと思っています。&lt;/p&gt;
&lt;p&gt;4点目については、今までの自分の練習の仕方がまずかったと思います。普段&lt;strong&gt;Readingの問題を解くときは一問ずつ解いたり、多くて連続で二問ずつしか特練習をしてこなかった&lt;/strong&gt;ので、それが原因ですね。&lt;/p&gt;
&lt;p&gt;こうしたこともあって最初の2つの大問は何とか解けたのですが、3問目以降は定期的に集中が切れる場面が多くありました。勉強の仕方は要改善です。&lt;/p&gt;
&lt;h2 id="listening"&gt;Listening&lt;/h2&gt;
&lt;p&gt;Listeningは相変わらず集中力が途切れ途切れだったものの、何とか聞き取ってた感じですね。&lt;/p&gt;
&lt;p&gt;ただ、講義を聞いて問題に答えるタイプの問題の内一つがめちゃくちゃ難しかったです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;音だけ聞いても該当する単語が思いつかないという状態を（普段以上に）何度も体験しました&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;そのため、「話の流れは理解できたけど&amp;quot;仮説がどう提唱されて、その内容は○○で…&amp;ldquo;という説明ができない状態」になってしまいました。耳が慣れてないのもあるんですが、&lt;strong&gt;完全に語彙力不足&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;テストが終わって出た点数は割と納得のいく点数でした（悪くはなかった。むしろ良い）。&lt;/p&gt;
&lt;h2 id="speaking"&gt;Speaking&lt;/h2&gt;
&lt;p&gt;Speakingついては良くも悪くもいつも通りに話せました。&lt;/p&gt;
&lt;p&gt;ただ、自分の苦手な&lt;strong&gt;制限時間内に話を終わらせる&lt;/strong&gt;という点は完璧に意識して対応できていたので、自分の成長を感じられる良い時間でした。&lt;/p&gt;
&lt;p&gt;語彙力は相変わらず貧弱でしたが、自分の意見、その意見についての具体的な例とかまで話すことはできたのが良かった点でした。&lt;/p&gt;
&lt;p&gt;ただ、初めてのTOEFLっていうのもあってどのくらいの点数取れたのかは本当に分かりませんでした（テスト終了時は）。&lt;/p&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;p&gt;個人的には点数が一番気になるセクションでした。&lt;/p&gt;</description></item><item><title>【Windows10】gnuplotでの描画設定の保存方法</title><link>https://t-pot.me/posts/tech/gnuplot-settings/</link><pubDate>Tue, 02 Jun 2020 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/tech/gnuplot-settings/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;Gnuplotを研究で頻繁に使うようになって、様々なコマンドの組み合わせで描画設定を変更することに慣れてきました。&lt;/p&gt;
&lt;p&gt;しかしながら似たグラフを大量に作る際、起動時に毎回描画設定用のコマンドを打ち込むのってまあまあな手間ですよね…&lt;/p&gt;
&lt;p&gt;Windowsで使用できるソフトウェアには通常、起動時に読み込むファイルがあります（例：Visual Stdio Codeのsettings.json）。そこで、「Gnuplotにも起動時に読み込む設定ファイルがあるのでは？」と思いついて探してみました。&lt;/p&gt;
&lt;h2 id="gnuplotのバージョン"&gt;gnuplotのバージョン&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Version 5.2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="設定ファイルの作り方と配置場所"&gt;設定ファイルの作り方と配置場所&lt;/h2&gt;
&lt;p&gt;Gnuplotが起動時に読み込むファイルは通常、&lt;code&gt;gnuplot.ini&lt;/code&gt;という名前で&lt;code&gt;C:\Users\ユーザー名\AppData\Roaming&lt;/code&gt;下に保存されています。&lt;/p&gt;
&lt;p&gt;無い場合には上記のディレクトリに&lt;code&gt;gnuplot.ini&lt;/code&gt;を新規作成・保存してあげると良いです。&lt;/p&gt;
&lt;p&gt;使い方としては、gnuplotで用いられるコマンドをそのまま打ち込むだけで問題ありません。例えば、&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;set tics font &amp;#34;Arial, 25&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;と打ち込み保存してgnuplotを起動。何かしらプロットすると目盛りのフォントがArialで統一されているのを確認できます。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;本記事はWindows10のみを対象にしています。Mac、Linux系統での詳細は残念ながら分かりません。&lt;/p&gt;
&lt;p&gt;使ってるソフトウェアとか、研究室での研究資料の引継ぎが細かく成されていれば自分がこれを調べる必要も無かったのに…(´;ω;｀)&lt;/p&gt;</description></item><item><title>【レビュー】自宅作業が捗るガス式昇降デスク(gasdeskdr1ab)</title><link>https://t-pot.me/posts/daily/gasdesk/</link><pubDate>Sat, 02 May 2020 00:00:00 +0900</pubDate><guid>https://t-pot.me/posts/daily/gasdesk/</guid><description>&lt;h2 id="経緯"&gt;経緯&lt;/h2&gt;
&lt;p&gt;昨今の事情から、今年度半期は完全自宅ワークになることが決定しました。&lt;/p&gt;
&lt;p&gt;自宅にはPCゲーム用のデスクが一つあるだけで、&lt;strong&gt;ON/OFFの切り替えが不得意な自分にはON/OFFの空間を手っ取り早く分ける必要がある&lt;/strong&gt;と思い、PCゲーム用デスクと作業用デスクを分けることにしました。&lt;/p&gt;
&lt;p&gt;ついでに次の狙いもありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自宅ワークで運動不足対策をしたい&lt;/li&gt;
&lt;li&gt;色んな誘惑に負けたくない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と、いうことで &lt;del&gt;作業効率が上がると噂の&lt;/del&gt; 昇降式デスク導入してみるか…！（安直）&lt;/p&gt;
&lt;h2 id="電動-vs-ガス式"&gt;電動 vs ガス式&lt;/h2&gt;
&lt;p&gt;昇降式デスクには電動とガス式のモノがあるらしい…ということで調べてみたら色んなレビューがありました。&lt;/p&gt;
&lt;p&gt;&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.lifehacker.jp%2f2020%2f05%2fhomeoffice_remodel.html"
&gt;&lt;/iframe&gt;

&lt;iframe
 class="hatenablogcard rounded-2 w-100 p-1 me-1"
 src="https://hatenablog-parts.com/embed?url=https%3a%2f%2fwww.iscle.com%2flife%2fshoukoushiki-pc-desk.html"
&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;p&gt;う～ん、電動式デスクのレビューばっかだな…&lt;/p&gt;
&lt;p&gt;どうやら電動式でも27000円くらい（天板代金別）からあるらしく、手の出せない金額じゃないしなぁ～と最初は結構電動式にしようか迷ってました。なお電動昇降デスクの代表的なのは &lt;a href="https://flexispot.jp/"&gt;FlexiSpot&lt;/a&gt;さんみたいです。&lt;/p&gt;
&lt;p&gt;ただ、自分の場合は机の上に重いものを置かない + 安く済ませたいと思っていたので、ガス式昇降デスクの購入を検討することにしました。&lt;/p&gt;
&lt;h2 id="主なガス式昇降デスク"&gt;主なガス式昇降デスク&lt;/h2&gt;
&lt;p&gt;楽天市場さんでも今回紹介するデスク（gasdeskdr1ab）と同じものが安い価格であったのですがどうやら法人向けらしく、個人での注文の場合別途送料を請求される仕組みになっているようです（2020/5/2時点）。&lt;/p&gt;
&lt;p&gt;しかも&lt;strong&gt;送料がいくらになるのか注文後じゃないと分からない&lt;/strong&gt;みたいなので今回は保留。自分でそれなりに時間をかけて調べてみましたが、大体検索して出てくるガス式昇降デスクとしては以下の2点が主要なモノみたいです。


&lt;div data-vc_mylinkbox_id="889166436"&gt;&lt;/div&gt;
&lt;div data-vc_mylinkbox_id="889166449"&gt;&lt;/div&gt;

&lt;/p&gt;
&lt;p&gt;あとは&lt;a href="https://direct.sanwa.co.jp/ItemPage/ERD-GAK12060W?gclid=Cj0KCQiA5NSdBhDfARIsALzs2EBrAgN3asqaOvntdLlyLUKsLs0tpZn7TB9A1SvrTAKqaPwU33XMyk0aAvSEEALw_wcB&amp;amp;ef_id=Cj0KCQiA5NSdBhDfARIsALzs2EBrAgN3asqaOvntdLlyLUKsLs0tpZn7TB9A1SvrTAKqaPwU33XMyk0aAvSEEALw_wcB:G:s"&gt;これ&lt;/a&gt;とか。ただ、自宅ではデスクの移動がほぼ無いので「キャスター４つも要らないなぁ～」と思って良く分からないメーカーのヤツを購入しました。&lt;/p&gt;
&lt;h2 id="組み立て"&gt;組み立て&lt;/h2&gt;
&lt;p&gt;こんな感じで届きました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1672842774/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/package_kex8gm.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="届いた時の写真"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;総重量は32kg程度らしい。運送のお兄さんが凄い大変そうだった（ありがとう・・・！）。そんで開いてみて気付いたのですが、マニュアルが英語表記のみっぽい + 足の部分がすんごいどっしりしてました。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1672842387/daily/%E3%82%AC%E3%82%B9%E5%BC%8F%E6%98%87%E9%99%8D%E3%83%87%E3%82%B9%E3%82%AF/part2_rfrnpy.webp 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt="説明書"
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;包装から取り出して見てみると塗装はげ、傷、包装の破れを何個か確認できましたが、品質には大きな問題はなかったです。&lt;/p&gt;</description></item><item><title>About</title><link>https://t-pot.me/about/</link><pubDate>Mon, 01 Apr 2019 14:38:51 +0900</pubDate><guid>https://t-pot.me/about/</guid><description>&lt;h2 id="記事内容"&gt;記事内容&lt;/h2&gt;
&lt;p&gt;勉強中につまづいた点や個人的な趣味の話を書いています（不定期更新）。&lt;/p&gt;
&lt;h2 id="記事について注意とお願い"&gt;記事について注意とお願い&lt;/h2&gt;
&lt;p&gt;「もっと簡単な表現があるよ！」とか「それって誤った表現じゃない？」と思う部分などがあればご教示ください。可能な限り修正しようと思います。&lt;/p&gt;
&lt;p&gt;一部難解な表現を避け、概念をおおまかに理解できるよう表現しています。そういった点は訂正しないかもしれません。&lt;/p&gt;
&lt;p&gt;2025年11月30日より、一部の記事で生成AIによって生成された画像を載せています。生成された画像のに関する各種お問い合わせは&lt;a href="https://forms.gle/2Wm7B8PaRcZC43hr9"&gt;こちらのフォーム&lt;/a&gt;からご連絡をお願い致します。&lt;/p&gt;
&lt;h2 id="サイト内コンテンツの転載について"&gt;サイト内コンテンツの転載について&lt;/h2&gt;
&lt;h3 id="ライセンス"&gt;ライセンス&lt;/h3&gt;
&lt;p&gt;当サイトのコンテンツは、特に明記がない限り、CC BY-NC 4.0のもとで公開されています。&lt;/p&gt;
&lt;figure&gt;
 &lt;img
 src="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1725161838/LICENSE/by-nc_g3vdds.svg"
 srcset="https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_320/v1725161838/LICENSE/by-nc_g3vdds.svg 320w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_480/v1725161838/LICENSE/by-nc_g3vdds.svg 480w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_640/v1725161838/LICENSE/by-nc_g3vdds.svg 640w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_768/v1725161838/LICENSE/by-nc_g3vdds.svg 768w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_960/v1725161838/LICENSE/by-nc_g3vdds.svg 960w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1200/v1725161838/LICENSE/by-nc_g3vdds.svg 1200w , https://res.cloudinary.com/takenoko/image/upload/f_auto,q_auto,w_1600/v1725161838/LICENSE/by-nc_g3vdds.svg 1600w"
 sizes="(min-width: 1400px) 1320px, (min-width: 1200px) 1140px, (min-width: 992px) 960px, 100vw"
 alt=""
 class=""
 loading="lazy"
 decoding="async"
 /&gt;&lt;/figure&gt;

&lt;p&gt;当サイト内のほぼ全コンテンツ（記事内容ももちろん含みます）の著作権は特記なき限りサイト管理者が保有しています。引用や転載を行う場合は必ず下記を守ってください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;個人のブログやSNS（Twitter、Facebookなど）で紹介するのは自由です。&lt;/li&gt;
&lt;li&gt;引用する時は、必ず以下の情報を記載してください：
&lt;ul&gt;
&lt;li&gt;このサイトの名前&lt;/li&gt;
&lt;li&gt;引用した記事のタイトル&lt;/li&gt;
&lt;li&gt;記事のURL&lt;/li&gt;
&lt;li&gt;いつ見たか（閲覧日）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;少額の広告収入（Google AdSenseなど）を得るのは構いません。ただし、大きな利益を得る目的で当サイトの内容をそのまま使わないでください。
&lt;ul&gt;
&lt;li&gt;つまり、&lt;strong&gt;常識と良識を持って適切に引用してください&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AIの学習にこのサイトを利用することも禁止します&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="商用利用が目的で当サイトのコンテンツを転載する場合"&gt;商用利用が目的で当サイトのコンテンツを転載する場合&lt;/h3&gt;
&lt;p&gt;お手数ですが、&lt;a href="https://x.com/htnabe_me"&gt;x&lt;/a&gt;, &lt;a href="https://bsky.app/profile/htnabe.bsky.social"&gt;Bluesky&lt;/a&gt;または&lt;a href="https://forms.gle/2Wm7B8PaRcZC43hr9"&gt;こちらのフォーム&lt;/a&gt;から一度ご連絡をお願い致します。&lt;/p&gt;
&lt;p&gt;商用利用が目的の無断転載は「通常使用料の4倍以上」を請求いたします。請求後に削除した場合でも請求を取り下げることはありません。あまりにも悪質な場合、必ず法的措置を取るのでその時は震えて眠ってください。&lt;/p&gt;
&lt;h3 id="例外なく引用転載を禁止するケース"&gt;例外なく引用、転載を禁止するケース&lt;/h3&gt;
&lt;p&gt;上記の条件に関係なく&lt;strong&gt;下記サイトおよびサブドメインでの引用、転載を禁止&lt;/strong&gt;し、該当サイト管理者並びに執筆者が掲載を行える媒体全て（SNS、ブログ、書籍などを含む全て）への引用・転載も禁止します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jin115.com&lt;/li&gt;
&lt;li&gt;blog.esuteru.com&lt;/li&gt;
&lt;li&gt;dfnt.net&lt;/li&gt;
&lt;li&gt;yaraon.blog109.fc2.com&lt;/li&gt;
&lt;li&gt;その他公序良俗にするwebサイト&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Author</title><link>https://t-pot.me/author/</link><pubDate>Mon, 01 Apr 2019 14:38:51 +0900</pubDate><guid>https://t-pot.me/author/</guid><description>&lt;p&gt;神戸在住プログラマ / SE&lt;/p&gt;
&lt;h2 id="love_you_gesture-thanks"&gt;&amp;#x1f91f; Thanks!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2018: &lt;a href="https://www.shimanozaidan.jp/scholarship.html"&gt;公益財団シマノ財団奨学生&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="page_with_curl-発表論文"&gt;&amp;#x1f4c3; 発表・論文&lt;/h2&gt;
&lt;div class="timeline"&gt;
 
 
 &lt;div class="timeline-container"&gt;
 
 &lt;div class="timeline-item"&gt;
 &lt;div class="timeline-content card shadow-sm"&gt;
 &lt;div class="card-body"&gt;
 &lt;span class="timeline-year badge bg-primary"&gt;2020&lt;/span&gt;
 
 &lt;h4 class="timeline-title card-title mt-2 mb-0"&gt;
 日本機械学会 中国四国支部 第58期総会・講演会
 &lt;/h4&gt;
 
 &lt;p class="timeline-description text-muted mt-2 mb-0"&gt;
 &amp;#x1f449; &lt;a href="https://www.jstage.jst.go.jp/article/jsmecs/2020.58/0/2020.58_09c5/_article/-char/ja/"&gt;発表内容&lt;/a&gt;
 &lt;/p&gt;
 
 
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 
 &lt;div class="timeline-item"&gt;
 &lt;div class="timeline-content card shadow-sm"&gt;
 &lt;div class="card-body"&gt;
 &lt;span class="timeline-year badge bg-primary"&gt;2021&lt;/span&gt;
 
 &lt;h4 class="timeline-title card-title mt-2 mb-0"&gt;
 日本機械学会 D&amp;amp;D2021
 &lt;/h4&gt;
 
 &lt;p class="timeline-description text-muted mt-2 mb-0"&gt;
 &amp;#x1f449; &lt;a href="https://www.jstage.jst.go.jp/article/jsmedmc/2021/0/2021_143/_article/-char/ja/"&gt;発表内容&lt;/a&gt;
 &lt;/p&gt;
 
 
 &lt;/div&gt;
 &lt;/div&gt;
 &lt;/div&gt;
 
 &lt;div class="timeline-item"&gt;
 &lt;div class="timeline-content card shadow-sm"&gt;
 &lt;div class="card-body"&gt;
 &lt;span class="timeline-year badge bg-primary"&gt;2022&lt;/span&gt;
 
 &lt;ul class="timeline-events list-unstyled mt-2 mb-0"&gt;
 
 &lt;li class="timeline-event mb-2"&gt;
 &lt;h4 class="timeline-title card-title mt-2 mb-0"&gt;
 松江オープンソース活用ビジネスコンテスト2022 奨励賞
 &lt;/h4&gt;
 
 &lt;p class="timeline-description text-muted mt-2 mb-0"&gt;
 &amp;#x1f449; &lt;a href="https://www.shimane-oss.org/biz-contest2022/final.html"&gt;奨励賞&lt;/a&gt;
 &lt;/p&gt;
 
 &lt;/li&gt;
 
 &lt;li class="timeline-event mb-2"&gt;
 &lt;h4 class="timeline-title card-title mt-2 mb-0"&gt;
 日本機械学会 D&amp;amp;D2022
 &lt;/h4&gt;
 
 &lt;p class="timeline-description text-muted mt-2 mb-0"&gt;
 &amp;#x1f449; &lt;a href="https://www.jstage.jst.go.jp/article/jsmedmc/2022/0/2022_152/_article/-char/ja/"&gt;発表内容&lt;/a&gt;
 &lt;/p&gt;</description></item></channel></rss>