<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4314185722199117461</id><updated>2026-10-19T17:06:47.762+09:00</updated><category term="計算機"/><category term="プログラミング"/><category term="科学"/><category term="数学"/><category term="OpenCV"/><category term="python"/><category term="実話"/><category term="アウトドア"/><category term="Unity"/><category term="拡張現実感"/><category term="生活術"/><category term="C++"/><category term="Computer Vision"/><category term="問題提起"/><category term="OpenGL"/><category term="政治"/><category term="boost"/><category term="魚突き"/><category term="C#"/><category term="英語"/><category term="宗教"/><category term="映画"/><category term="フィクション"/><title type='text'>武相荘</title><subtitle type='html'>自分の話のネタ帳や画像処理関連の作業メモとして記憶・整理しておきたいことを掲載している．書くことによってはじめて考えが整理されると良く言うけど，公開することによってさらに中身が洗練されてるくようにも思う．ここではなるべく他ではあまり見ないオリジナルな情報や考え方を掲載したい．</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://buaiso.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>168</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-884604884357050379</id><published>2024-10-23T16:13:00.002+09:00</published><updated>2024-10-23T16:13:37.866+09:00</updated><title type='text'>HMDのPPD概算方法</title><content type='html'>&lt;p&gt;
ディスプレイの片眼用の画素数$d$と左右眼の全視野角$\theta$（図中の青）のみが判明している場合の角画素密度PPDの計算法をメモしておく．
一般に両眼視野角（左右片眼視野の論理積）は約120度と言われており，単眼視野角40度を加えたものが片眼の視野角100度（図中の緑と赤）となる．
ビデオ透過型のHMDでは，この片眼の視野の一部をカバーしており，両眼視野については完全にカバーされていると仮定する．
つまり片眼用のディスプレイがカバーする範囲は，
&lt;/p&gt;
\[
120/2+\theta/2
\]
&lt;p&gt;
であり，全視野の角画素密度が一様であるとするとそのディスプレイの角画素密度は
&lt;/p&gt;
\[
d/(120/2+\theta/2)=2d/(120+\theta)
\]
&lt;p&gt;
として算出できる．
&lt;/p&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhieZ_-7DDMeLI2TNZTWe5-5fIvivbZd90s6kp0aO7OET7YedjMKnmPiYYfWIJMgmyIGDuwhFkoYSyBso8xhE0szISCxTnrmpEjbKaBR2ZLwIjXv3s1bNGOR98hZbxIpk4gupo_tnhxT7B7ogsVvt94b9fjoNYFa5zx457blUfB7Me2xme-v_PlbKLgNYmr/s727/ppd.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;427&quot; data-original-width=&quot;727&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhieZ_-7DDMeLI2TNZTWe5-5fIvivbZd90s6kp0aO7OET7YedjMKnmPiYYfWIJMgmyIGDuwhFkoYSyBso8xhE0szISCxTnrmpEjbKaBR2ZLwIjXv3s1bNGOR98hZbxIpk4gupo_tnhxT7B7ogsVvt94b9fjoNYFa5zx457blUfB7Me2xme-v_PlbKLgNYmr/s320/ppd.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/884604884357050379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/884604884357050379'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2024/10/hmdppd.html' title='HMDのPPD概算方法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhieZ_-7DDMeLI2TNZTWe5-5fIvivbZd90s6kp0aO7OET7YedjMKnmPiYYfWIJMgmyIGDuwhFkoYSyBso8xhE0szISCxTnrmpEjbKaBR2ZLwIjXv3s1bNGOR98hZbxIpk4gupo_tnhxT7B7ogsVvt94b9fjoNYFa5zx457blUfB7Me2xme-v_PlbKLgNYmr/s72-c/ppd.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-8725259535163839310</id><published>2024-07-09T23:29:00.000+09:00</published><updated>2024-07-09T23:29:04.299+09:00</updated><title type='text'>Mega JulとMega Jul2の違い</title><content type='html'>&lt;p&gt;
EdelridのMega Julは駆動部分が無いにもかかわらず懸垂下降もできるオートロック式の軽量ビレイデバイス。Mega Jul→Mega Jul Sport→Mega Jul2と微妙な進化を遂げたけど、どこがどう変わったのかあまり情報がない、というか日本語ではMega Jul2の情報が殆どWebで見つけられない（2024年7月9日現在）ので分かる範囲内でまとめてみた。
&lt;/p&gt;

&lt;h1&gt;Mega jul2&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;シングル；8.6-10.0 [mm]&lt;/li&gt;
  &lt;li&gt;ダブル：7.8-10.0 [mm]&lt;/li&gt;
  &lt;li&gt;重さ：75 [g]&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Mega jul&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;シングル；8.9-10.5 [mm]&lt;/li&gt;
  &lt;li&gt;ダブル：7.9- [mm]&lt;/li&gt;
  &lt;li&gt;重さ：65 [g]&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;参考文献&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;User manual MegaJul II&lt;br/&gt;
    &lt;a href=&quot;https://edelrid.com/us-en/service/downloads&quot;&gt;https://edelrid.com/us-en/service/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8725259535163839310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8725259535163839310'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2024/07/mega-julmega-jul2.html' title='Mega JulとMega Jul2の違い'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-1433417426738453672</id><published>2024-05-25T16:38:00.004+09:00</published><updated>2024-05-25T16:38:17.897+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="問題提起"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>Pythonスクリプトでファイル名を置換する</title><content type='html'>&lt;h1&gt;ファイル名の一部を移動させて変換する&lt;/h1&gt;
&lt;p&gt;
Pythonスクリプト「報告書_20240523.pdf」
のようなファイル名を
「20240523_報告書.pdf」
に変換するスクリプトをChatGPT-4oに相談して作り理解したのでメモ．
シェルスクリプトよりも理解し易い気がする．
&lt;/p&gt;

&lt;h1&gt;スクリプト&lt;/h1&gt;

&lt;p&gt;

&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;
import os
import re

# 変更したいファイルが存在するディレクトリを指定
directory = &#39;./&#39;  # カレントディレクトリを指定

# ファイル名のパターンを定義
pattern = re.compile(r&#39;(.+)\_([0-9]{8})(.*)(\.pdf)&#39;)

# ディレクトリ内のすべてのファイルをループ
for filename in os.listdir(directory):
    # ファイル名がパターンに一致するか確認
    print(filename)
    match = pattern.match(filename)
    if match:
        # 新しいファイル名を構築
        new_name = f&amp;quot;{match.group(2)}_{match.group(1)}{match.group(3)}.pdf&amp;quot;
        # ファイルのパスを構築
        old_file = os.path.join(directory, filename)
        new_file = os.path.join(directory, new_name)
        # ファイル名を変更
        os.rename(old_file, new_file)
        print(f&amp;quot;-&amp;gt; {new_name}&amp;quot;)

&lt;/code&gt;&lt;/pre&gt;

&lt;h1&gt;解説&lt;/h1&gt;
&lt;p&gt;
ファイル名は次のように分解できる。
&lt;/p&gt;
&lt;p&gt;
（部分A）_（部分B）.（拡張子）  
&lt;/p&gt;
&lt;p&gt;
これを
&lt;/p&gt;
&lt;p&gt;
（部分B）_（部分A）.（拡張子）  
&lt;/p&gt;
&lt;p&gt;
に変換したいだけだけど、（部分B）が「20240525」のような数字8文字だということを利用する。
（部分Aは）「(.+)」、（部分B）は「([0-9]{8})」でマッチさせる。どちらも丸括弧()で囲うことで、キャプチャグループという単位にすることができて、後でmatch.group(1)のように再利用できる。
&lt;/p&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/1433417426738453672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/1433417426738453672'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2024/05/python.html' title='Pythonスクリプトでファイル名を置換する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-1286200122470734843</id><published>2023-11-10T17:28:00.011+09:00</published><updated>2023-11-13T13:55:13.773+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>Matplotlibのカラーマップに例外値を加える方法</title><content type='html'>&lt;p&gt;
Matplotlibのカラーマップ(Colormap）は便利で連続的な数値を滑らかに変化する色（疑似カラー）で可視化することができる．
ただ，例外的な値（NaNや-1）の時だけ別の色で描きたいときはどうすれば良いのか？実はMatplotlibの標準的な機能で実現できる．実際に使ってみたのでソースコードをメモしておく．
&lt;/p&gt;

&lt;p&gt;
その方法のポイントは，既存のカラーマップ（ここではjet）を少し変更することと，numpyのndarrayではなくてMaskedArrayというクラスに変換してplt.imshowに渡すこと．
Colormapクラスを操作するのでそれに必要なモジュールやクラスをimportしておく．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
&lt;/pre&gt;


&lt;p&gt;
次に描画する対象の配列を準備する．
ここではnpzで保存された271$\times$271の画像で，各画素には正の実数が格納されているとする．
確認のためshapeとtypeをprintしておく．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
array = np.load(&quot;positive.npz&quot;)[&quot;arr_0&quot;]
print(array.shape)
print(type(array))
&lt;/pre&gt;
&lt;pre&gt;
(271, 271, 1)
&amp;lt;class &#39;numpy.ndarray&#39;&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
ただし，この正方形の画像の右上半分には有効な値は入っておらず，ここでは便宜的に0が格納されている．
これを実数値を虹色で表すカラーマップjetを使って描画するとこうなる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
plt.imshow(array, cmap = &quot;jet&quot;)
&lt;/pre&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Qa4_wgQbXxQBf2HI2jGRJljWVjIwsk6UgM4t3oujQJrppzmq-bxY0kXqC0myUqkvzgJ_CCyD_GLKnU0jpcY7b2u5pdulM1NlBNrRdZHBqDALjmu59z_m7iAeVsCipMa8BTjNMj94RmNYpGN9YL9A-0YFFLGFI_M5xSsSdxk-8pFljHkO0R5jhLgWk8B_/s257/wo_exception.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;252&quot; data-original-width=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Qa4_wgQbXxQBf2HI2jGRJljWVjIwsk6UgM4t3oujQJrppzmq-bxY0kXqC0myUqkvzgJ_CCyD_GLKnU0jpcY7b2u5pdulM1NlBNrRdZHBqDALjmu59z_m7iAeVsCipMa8BTjNMj94RmNYpGN9YL9A-0YFFLGFI_M5xSsSdxk-8pFljHkO0R5jhLgWk8B_/s320/wo_exception.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;p&gt;
ただ，これだと0付近の値（青）と値が無いことを意味する数値ラベル0が殆ど同じ色になってしまう．そこで値が無い箇所だけグレーで表すことを考える．
そのためにMaskedArrayというクラスを使ってarrayの値が0のときだけ無効であるという情報を保持させる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
marray = np.ma.array(array, mask=array == 0)
type(marray)
&lt;/pre&gt;
&lt;pre&gt;
(271, 271, 1)
&amp;lt;class &#39;numpy.ma.core.MaskedArray&#39;&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
mask=array == 0の部分が解りにくいので詳しく説明する．arrayが27$\times$27の2次元配列なのでarray == 0とするとbroadcastの効果によりスカラーの0が全要素0の27$\times$27配列に変換される．
==の演算子によってarrayの要素が0のときだけTrue，そうでないときがFalseの値を要素に持つ27$\times$27の配列が生成される．maskにはそれが代入されている．
&lt;/p&gt;

&lt;p&gt;
カラーマップjetを少し改造して，無効な値のときの色をset_bad関数でグレーに設定した上で，
ndarrayの代わりにこのMaskedArray型の画像marrayをimshowに代入すると自動的に色分けしてくれる．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
jet = plt.get_cmap(&quot;jet&quot;).copy()
jet.set_bad(&quot;gray&quot;)
plt.imshow(marray, cmap = jet)
&lt;/pre&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguGAvOZi-ryMAlr-hGez7oQjmuzTu_PmO8mUsDnj_2s_B98WFr_M2f46Zp_3UUkFgf2K6M3aLXY_cFtnc1fWvXBz0lwv6hewriy5V3g3_EXGy2AsHIxIh9dzMcjjlCmZUrCLqN7MkhDtywXBU6zjETv7T2ae79Xx1uaTLy-s1Z5cWuUHhg3ojVZ0cbCKdF/s257/w_exception.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;252&quot; data-original-width=&quot;257&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguGAvOZi-ryMAlr-hGez7oQjmuzTu_PmO8mUsDnj_2s_B98WFr_M2f46Zp_3UUkFgf2K6M3aLXY_cFtnc1fWvXBz0lwv6hewriy5V3g3_EXGy2AsHIxIh9dzMcjjlCmZUrCLqN7MkhDtywXBU6zjETv7T2ae79Xx1uaTLy-s1Z5cWuUHhg3ojVZ0cbCKdF/s320/w_exception.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/1286200122470734843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/1286200122470734843'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2023/11/matplotlib.html' title='Matplotlibのカラーマップに例外値を加える方法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Qa4_wgQbXxQBf2HI2jGRJljWVjIwsk6UgM4t3oujQJrppzmq-bxY0kXqC0myUqkvzgJ_CCyD_GLKnU0jpcY7b2u5pdulM1NlBNrRdZHBqDALjmu59z_m7iAeVsCipMa8BTjNMj94RmNYpGN9YL9A-0YFFLGFI_M5xSsSdxk-8pFljHkO0R5jhLgWk8B_/s72-c/wo_exception.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-6757048787604977712</id><published>2023-01-05T19:04:00.007+09:00</published><updated>2023-01-05T19:08:30.986+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OpenCV"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>MP4動画から撮影日時入りのJPEG画像を作成する方法</title><content type='html'>&lt;p&gt;
GoProのようなアクションカムで動画撮影した場合，そのひとコマを写真として保存して残しておきたいことが良くある．
大抵両手が塞がってるのでカメラのシャッターを押せないことが多いから．
  でも，殆どのアプリでは&lt;strong&gt;動画から静止画を保存していくと撮影日時を埋め込んでくれない&lt;/strong&gt;ので，ファイル名順になり順番はめちゃくちゃになる．
&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;動画の撮影日時にそのフレームまでの再生時間を足して静止画の撮影日時とする&lt;/strong&gt;プログラムがあれば，順番がめちゃくちゃにならずに済む．
MP4動画には撮影日時が埋め込まれており，JPEG画像にもExifという撮影に関する情報を埋め込むことができる．
そこでPythonで動画を再生しながら適当な箇所で一時停止して撮影日時付きの画像を保存できるツールを作ったので紹介する．
&lt;/p&gt;


&lt;h2&gt;ソースコード解説&lt;/h2&gt;

&lt;p&gt;
このプログラムのポイントは，MP4の撮影日時情報の取得にffmpegのprobeという機能を使い，
JPEG保存後にExif情報だけをpiexifというライブラリで上書きするところ．
それ以外は基本的なライブラリしか使わない．ここでは動画ファイルをtest.mp4としておく．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
import sys
import cv2
import piexif
import datetime as dt
import ffmpeg

fname = &amp;quot;test.mp4&amp;quot;
&lt;/pre&gt;

&lt;p&gt;
次は動画キャプチャの骨格部分．main関数になってるので最下部のmain関数の実行部分がこのソースの本体．
基本的にOpenCVで動画再生して必要な箇所をキーボード入力で一時停止，キャプチャなどするための機能だけ．
もう少しシンプルにしたかったけど一応動作してるのであきらめた．
  重要な箇所は「&lt;strong&gt;# MP4の撮影日時取得&lt;/strong&gt;」，「&lt;strong&gt;# 動画再生時間の取得&lt;/strong&gt;」，「&lt;strong&gt;# JPEG保存とExif情報の上書き&lt;/strong&gt;」の部分だけ．ここだけ簡単に解説．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
def main(argv):
    # MP4の撮影日時取得
    video_info = ffmpeg.probe(fname)
    date_time = dt.datetime.strptime(video_info[&amp;#039;format&amp;#039;][&amp;#039;tags&amp;#039;][&amp;#039;creation_time&amp;#039;],&amp;quot;%Y-%m-%dT%H:%M:%S.%fZ&amp;quot;)
    print(&amp;quot;creation_time: &amp;quot; + date_time.strftime(&amp;quot;%Y:%m:%d %H:%M:%S&amp;quot;))

    cap = cv2.VideoCapture(fname)
    n_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)
    ret, frame = cap.read()
    print(&amp;quot;number of frames: &amp;quot;+ str(n_frames))

    is_playing = True
    cv2.namedWindow(&amp;quot;win&amp;quot;)

    while True:
        # 動画再生時間の取得
        play_time = int(cap.get(cv2.CAP_PROP_POS_MSEC))
        frame_id = cap.get(cv2.CAP_PROP_POS_FRAMES)
        play_datetime = date_time + dt.timedelta(microseconds=play_time*1000)

        # key input
        key = cv2.waitKey(1)
        # ESC
        if key == 27:
            break
        elif key == 13: # Enter
            is_playing = not is_playing
        elif key == 32: # space
            frame_id += 1
            is_playing = False
        elif key == 8: # back space
            frame_id -= 1
            is_playing = False
        elif key == ord(&amp;#039;c&amp;#039;): # capture !!
            # JPEG保存とExif情報の上書き
            cv2.imwrite(&amp;quot;%06d.jpg&amp;quot; % frame_id, frame)
            insertTime(&amp;quot;%06d.jpg&amp;quot; % frame_id, play_datetime)

        if is_playing:
            if 0 &amp;lt;= frame_id and frame_id &amp;lt; n_frames:
                ret, frame = cap.read()
            else:       
                cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
                ret = True
        else:
            if 0 &amp;lt;= frame_id-1 and frame_id &amp;lt; n_frames:
                cap.set(cv2.CAP_PROP_POS_FRAMES, frame_id-1)
                ret, frame = cap.read()
            ret = True

        if ret:
            showFrame(&amp;quot;win&amp;quot;, frame, is_playing, frame_id, play_time, play_datetime)
        else:
            break
            
    cap.release()
    cv2.destroyWindow(&amp;quot;win&amp;quot;)
&lt;/pre&gt;

&lt;p&gt;
  まず「&lt;strong&gt;# MP4の撮影日時取得&lt;/strong&gt;」の部分．
ffmpeg.probe関数でファイル名を直接していすると必要な情報が取得できる．
ただ，撮影日時以外の様々な情報が階層構造をもつ辞書形式になっているのでvideo_info[&#39;format&#39;][&#39;tags&#39;][&#39;creation_time&#39;]で取得すると中身が文字列として得られる．それをdatetime.datetime.strptime関数で指定した書式として解釈して日時情報に変換している．これで動画の撮影日時が得られた．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
# MP4の撮影日時取得
video_info = ffmpeg.probe(fname)
date_time = dt.datetime.strptime(video_info[&amp;#039;format&amp;#039;][&amp;#039;tags&amp;#039;][&amp;#039;creation_time&amp;#039;],&amp;quot;%Y-%m-%dT%H:%M:%S.%fZ&amp;quot;)
&lt;/pre&gt;

&lt;p&gt;
  次に「&lt;strong&gt;# 動画再生時間の取得&lt;/strong&gt;」の部分．
ここではOpenCVのcv2.VideoCapture.get関数で現在のフレームの再生時間を取得している．
この時間をさっき取得した動画撮影日時date_timeに加えることで動画の各フレームの撮影日時を計算している．
ミリ秒とマイクロ秒の変換を間違えないように．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
# 動画再生時間の取得
play_time = int(cap.get(cv2.CAP_PROP_POS_MSEC))
frame_id = cap.get(cv2.CAP_PROP_POS_FRAMES)
play_datetime = date_time + dt.timedelta(microseconds=play_time*1000)
&lt;/pre&gt;


&lt;p&gt;
最後は「&lt;strong&gt;# JPEG保存とExif情報の上書き&lt;/strong&gt;」の部分．
写真の保存は単純に現在のフレームをcv2.imwriteで保存するだけ．
その直後にその画像ファイルに対して自作のinsertTime関数を使ってExif情報を加えている．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
# JPEG保存とExif情報の上書き
cv2.imwrite(&amp;quot;%06d.jpg&amp;quot; % frame_id, frame)
insertTime(&amp;quot;%06d.jpg&amp;quot; % frame_id, play_datetime)
&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;insertTime関数&lt;/strong&gt;は次のとおり．
piexif.load関数で直接JPEGファイル名を指定して一旦Exif情報を取り出して，その必要箇所だけ変更して再度保存する方法をとっている．piexif.ExifIFD.DateTimeOriginalには，Exif情報の中のDateTimeOriginalという撮影日時を表す項目のIDで36867が入ってる．
piexif.ExifIFD.SubSecTimeOriginalには，SubSecTimeOriginalという撮影日時の秒単位よりも小さい時間を表す項目のIDで37521が入っている．
この2つの情報をdate_time.strftimeで指定された書式にして追加している．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
def insertTime(fname, date_time):
    exif_dict = piexif.load(fname)
    exif_ifd = {piexif.ExifIFD.DateTimeOriginal: date_time.strftime(&amp;quot;%Y:%m:%d %H:%M:%S&amp;quot;),
                piexif.ExifIFD.SubSecTimeOriginal: date_time.strftime(&amp;quot;%f&amp;quot;),
                }
    exif_dict[&amp;#039;Exif&amp;#039;]=exif_ifd
    exif_bytes = piexif.dump(exif_dict)
    piexif.insert(exif_bytes, fname)
&lt;/pre&gt;

&lt;p&gt;
&lt;strong&gt;showFrame関数&lt;/strong&gt;は現在のフレームを表示する関数．
cv2.putTextで各種情報を同時に表示している．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
def showFrame(wname, frame, is_playing, frame_id, play_time, date_time):
    dsp = cv2.resize(frame, (frame.shape[1]//2, frame.shape[0]//2))
    cv2.putText(dsp,
        text=str(&amp;quot;%s: %06d-th frame, %06d msec, %s&amp;quot;  
            % (&amp;quot;play&amp;quot; if is_playing else &amp;quot;pause&amp;quot;, frame_id, play_time, date_time.strftime(&amp;quot;%Y:%m:%d %H:%M:%S.%f&amp;quot;))),
        org=(20, 20),
        fontFace=cv2.FONT_HERSHEY_SIMPLEX,
        fontScale=0.5,
        color=(255, 255, 255),
        thickness=1,
        lineType=cv2.LINE_4)

    cv2.imshow(wname, dsp)
&lt;/pre&gt;

&lt;p&gt;
プログラム本体をmain関数化しておくための行．
これのおかげで関数の定義順序を自由にできる．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
if __name__ == &amp;quot;__main__&amp;quot;:
    sys.exit(main(sys.argv))
&lt;/pre&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6757048787604977712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6757048787604977712'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2023/01/mp4jpeg.html' title='MP4動画から撮影日時入りのJPEG画像を作成する方法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-5778470959658914411</id><published>2022-12-29T20:14:00.003+09:00</published><updated>2022-12-31T12:06:46.701+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>Pythonでラベル付きの数直線を描く</title><content type='html'>&lt;div style=&quot;display:none;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi16KaCBYK3TE71jtaR-2CsdSJBb9ETCs0MmeSkUHFHP5nS_BlSVGU49pKw8SeT8B5P0upJq68_RTQWAbFM_vZIo2uqK5oqrMpWbb2KZlgdV7jHbsBPKAOkSJ7kJ2jbFcG6HWjNUX-RVIxMxXZcA7uas-Hj18YJrkAISHw5DTfJ8-gGTzaF91whuyLAnw/s424/plot_out.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;111&quot; data-original-width=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi16KaCBYK3TE71jtaR-2CsdSJBb9ETCs0MmeSkUHFHP5nS_BlSVGU49pKw8SeT8B5P0upJq68_RTQWAbFM_vZIo2uqK5oqrMpWbb2KZlgdV7jHbsBPKAOkSJ7kJ2jbFcG6HWjNUX-RVIxMxXZcA7uas-Hj18YJrkAISHw5DTfJ8-gGTzaF91whuyLAnw/s320/plot_out.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
意外とサンプルが存在しないmatplotlibを使った数直線の描き方．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
import numpy as np
import matplotlib.pyplot as plt
&lt;/pre&gt;
&lt;p&gt;
必要なライブラリはこれだけ．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
b = np.array([&amp;quot;$B_1$&amp;quot;, &amp;quot;$B_2$&amp;quot;, &amp;quot;$B_3$&amp;quot;, &amp;quot;$B_4$&amp;quot;, &amp;quot;$B_5$&amp;quot;, ])
x = np.array([-0.86, 0.90, -0.88, -0.27, 1.10])
y = np.zeros_like(x)
x_ano = x + 15
x_ano[0] += 10 # B1
x_ano[2] -= 10 # B3
&lt;/pre&gt;

&lt;p&gt;
B_1，B_2はデータ点につけるラベル．x_anoはラベルの水平位置で$B_1$と$B_3$の位置（b[0]とb[2]）だけ重なってしまうので手動で左右にずらしている．
こういうのを自動でやってくれるとありがたいけどそういう機能は見当たらないのであきらめた．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
#数直線
figsize_px = np.array([1024, 102])
dpi = 200
figsize_inch = figsize_px / dpi
fig,ax=plt.subplots(figsize=figsize_inch,dpi=dpi)
&lt;/pre&gt;

&lt;p&gt;
ここは普通にplt.subplotsを読んで問題ない．画素数をしていしたかったのでこんな感じに．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
# メモリと枠線を消す
ax.tick_params(labelbottom=True, bottom=False)
ax.tick_params(labelleft=False, left=False)
plt.gca().spines[&amp;#039;right&amp;#039;].set_visible(False)
plt.gca().spines[&amp;#039;top&amp;#039;].set_visible(False)
plt.gca().spines[&amp;#039;bottom&amp;#039;].set_visible(False)
plt.gca().spines[&amp;#039;left&amp;#039;].set_visible(False)
&lt;/pre&gt;

&lt;p&gt;
数直線を描くためにmatplotlibデフォルトの枠線とメモリを全部消去する．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
# 自前でメモリと水平軸を描画
xmin, xmax= -1.2,1.2
ys = 0.005
yl = 0.01
xs = np.linspace(int(xmin),int(xmax), int(xmax)-int(xmin)+1)
xl = np.linspace(int(xmin),int(xmax), (int(xmax)-int(xmin))*10+1)
plt.hlines(y=0, xmin=xmin, xmax=xmax, zorder=1) #横軸
plt.vlines(x=xs, ymin=-yl,ymax=yl, zorder=1) #目盛り大
plt.vlines(x=xl, ymin=-ys, ymax=ys, zorder=1) #目盛り小
&lt;/pre&gt;
&lt;p&gt;
ここが数直線のほぼすべて．水平線と垂直線の組み合わせ手で自前で軸を描いている．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
# データ点と注釈を描画
plt.scatter(x,y,c=&amp;#039;r&amp;#039;) #散布図
for i in range(x.shape[0]):
    ax.annotate(&amp;#039;%s&amp;#039; % b[i],
                 size=12,
                 xy=(x[i],y[i]),
                 xytext=(x_ano[i], y[i]+25.0),
                 textcoords=&amp;#039;offset points&amp;#039;,
                 arrowprops=dict(arrowstyle=&amp;quot;-&amp;gt;&amp;quot;,connectionstyle=&amp;quot;arc3,rad=.3&amp;quot;)
                )
plt.savefig(&amp;#039;plot_out.png&amp;#039;, bbox_inches=&amp;quot;tight&amp;quot;, transparent=True)
&lt;/pre&gt;
&lt;p&gt;
データ点はscatterで注釈はannotateで描くだけ．
&lt;/p&gt;
&lt;div style=&quot;text-align:center;&quot;&gt;&lt;a href=&quot;https://r168xr169.github.io/img/numberline.svg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot;src=&quot;https://r168xr169.github.io/img/numberline.svg&quot;style=&quot;text-align:center;background-color: lightgray;&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5778470959658914411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5778470959658914411'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/12/numberline.html' title='Pythonでラベル付きの数直線を描く'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi16KaCBYK3TE71jtaR-2CsdSJBb9ETCs0MmeSkUHFHP5nS_BlSVGU49pKw8SeT8B5P0upJq68_RTQWAbFM_vZIo2uqK5oqrMpWbb2KZlgdV7jHbsBPKAOkSJ7kJ2jbFcG6HWjNUX-RVIxMxXZcA7uas-Hj18YJrkAISHw5DTfJ8-gGTzaF91whuyLAnw/s72-c/plot_out.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-6034963330258837201</id><published>2022-12-27T12:10:00.001+09:00</published><updated>2023-01-11T09:25:52.007+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>サーストンの一対比較法でのデータ収集方法と解析方法</title><content type='html'>&lt;p&gt;
  「&lt;a href=&quot;https://buaiso.blogspot.com/p/blog-page_30.html&quot;&gt;サーストンの一対比較法を理解する&lt;/a&gt;」シリーズ．
  前回「&lt;a href=&quot;https://buaiso.blogspot.com/p/blog-page_30.html&quot;&gt;サーストンの一対比較法って何？&lt;/a&gt;」で，サーストンの一対比較法がどんな手法なのか，他の方法との違いとか欠点とか説明したので，
  今回は具体的にサーストンの一対比較法でどのようにデータを収集して，解析するか説明する．
&lt;/p&gt;

&lt;h1&gt;データの収集方法&lt;/h1&gt;

&lt;p&gt;  
5種類のビール（ビール1～ビール5）の「キレ」を数値化するために100人の被験者にアンケートを取ってみたとする．
アンケート方法は，2種類のビールを飲み比べて『ビール1よりビール2の方がキレが高いですか？』と問うもの．
  &lt;strong&gt;どちらも同じとか，回答拒否とかの選択肢はない&lt;/strong&gt;．必ずどちらが「キレ」が高いかを回答しないといけない．
だから『ビール1よりビール2の方がキレが高いですか？』と聞かれたらYesかNoのどちらかを回答する．
Yesは「「ビール1よりビール2の方がキレが高い」という意味になり，
  Noは「ビール2よりビール1の方がキレが高い」という意味という意味になる．
&lt;/p&gt;

\[
\def\S#1#2{\small B_{#1}\gt B_{#2}}
\begin{array}{ccccc}
\hline
\hline
           &amp; \S{1}{2} &amp; \S{1}{3}&amp; \S{1}{4}&amp; \S{1}{5}&amp; \S{2}{3}&amp; \S{2}{4}&amp; \S{2}{5}&amp; \S{3}{4}&amp; \S{3}{5}&amp; \S{4}{5}\\
\hline
\rm 被験者1&amp; \rm No   &amp; \rm Yes &amp; \rm Yes &amp; \rm No  &amp; \rm No  &amp; \rm Yes &amp; \rm Yes &amp; \rm Yes &amp; \rm No  &amp; \rm No\\
\rm 被験者2&amp; \rm Yes  &amp; \rm No  &amp; \rm Yes &amp; \rm No  &amp; \rm Yes &amp; \rm Yes &amp; \rm No  &amp; \rm Yes &amp; \rm No &amp; \rm Yes\\
\rm 被験者3&amp; \rm No   &amp; \rm Yes &amp; \rm No  &amp; \rm No  &amp; \rm Yes &amp; \rm Yes &amp; \rm Yes &amp; \rm Yes &amp; \rm No  &amp; \rm No\\
\rm \vdots&amp;  \vdots   &amp; \vdots  &amp; \vdots  &amp; \vdots  &amp; \vdots  &amp; \vdots  &amp; \vdots  &amp; \vdots  &amp; \vdots  &amp; \vdots\\
\rm 被験者100&amp; \rm No &amp; \rm Yes &amp; \rm No  &amp; \rm No &amp; \rm No  &amp; \rm Yes &amp; \rm No  &amp; \rm No  &amp; \rm No  &amp; \rm No\\
\hline
\rm Yesの数&amp; 6        &amp; 46      &amp; 28      &amp; 2       &amp; 99      &amp; 87      &amp; 31      &amp; 27      &amp; 6       &amp; 8\\
\rm Yesの割合&amp;0.06    &amp; 0.46    &amp; 0.28    &amp; 0.02    &amp; 0.99    &amp; 0.87    &amp; 0.31    &amp; 0.27    &amp; 0.06    &amp; 0.08\\
\hline
\end{array}
\]

&lt;p&gt;
この表は，集めたデータ例．「$\S{1}{2}$」は「ビール1はビール2よりキレが良い」という意味．それに同意すれば「Yes」となる．
「ビール2はビール1よりキレが良い」は「ビール1はビール2よりキレが良い」という問の逆なので省略している．
だから，ビール5種類から2種類を抽出する組み合わせ数が$_{5}C_{2}=10$なので10列のデータになっている．
行数は，被験者数分だけある．
&lt;/p&gt;


&lt;p&gt;
  サーストンの一対比較法で&lt;strong&gt;直接用いるのは，各問いに対する「Yesの割合」だけ&lt;/strong&gt;．誰がどう回答したかは関係ない．
だから順序効果を考慮して問いの順序を無作為にするとか，あえて逆の質問をして逆にカウントするとか，工夫をする余地がある．
&lt;/p&gt;

&lt;h1&gt;データの解析方法&lt;/h1&gt;
&lt;h2&gt;STEP1: $\S{j}{k}$となる確率$P(\S{j}{k})$の表を作る&lt;/h2&gt;
&lt;p&gt;
得られたデータの解析法は3ステップ．
まず上で計算した「Yesの割合」を使って次の表を作る．
この表は「ビール$j$はビール$k$よりキレが良い」と回答する割りあい（確率）を表している．
  ちょうど&lt;strong&gt;リーグ戦の勝率表に似ている&lt;/strong&gt;．
&lt;/p&gt;

\[
\begin{array}{rrrrr}
\hline
\hline
j \backslash k &amp; 1&amp; 2&amp;  3&amp;  4&amp;5\\
\hline
1&amp; 0.50&amp; 0.06&amp; 0.46&amp; 0.28&amp; 0.02\\
2&amp; 0.94&amp; 0.50&amp; 0.99&amp; 0.87&amp; 0.31\\
3&amp; 0.54&amp; 0.01&amp; 0.50&amp; 0.27&amp; 0.06\\
4&amp; 0.72&amp; 0.13&amp; 0.73&amp; 0.50&amp; 0.08\\
5&amp; 0.98&amp; 0.69&amp; 0.94&amp; 0.92&amp; 0.50\\
\hline
\hline
\end{array}
\]
&lt;p&gt;
この表を作るときには，$j$と$k$には1から5の整数を一通り入れて考えて，値は「Yesの割合」からもってくればいい．
そうやって数値を入れていくと対角成分よりも上がわの三角の範囲しか値が入らないことが分る．
実は上の三角形部分は，$j\lt k$の場合だけで$j\gt k$の場合はない．つまり「$\S{1}{2}$」は有っても「$\S{2}{1}$」はない．
$j\gt k$は下の三角形部分にいれるべきだけどこの部分のアンケートを取らなかったのは$\S{j}{k}$がYesとなる確率が分れば，
$\S{k}{j}$がYesとなる確率は次の式で自動的に分かるから．
&lt;/p&gt;
\[
P(\S{k}{j}) = 1 - P(\S{j}{k})
\]

&lt;p&gt;
例えば，「ビール1はビール2よりキレが良い」がYesである確率は$P(\S{1}{2})=0.29$だけど，
  「ビール2はビール1よりキレが良い」がYesである確率は自動的に$P(\S{2}{1})=1 - 0.29=0.71$になる．
 これはアンケートで「Yes」か「No」以外の回答を許さないから必ずそうなる．
&lt;/p&gt;
&lt;p&gt;
もう一つデータが無い箇所があり，それは対角成分である$j=k$の場合．
例えば「ビール1よりビール1はキレが良い」と言われてもYesでもNoでもないからそもそもそういうアンケートに含めていない．
この場合の確率は，無理やりにでも「Yes」か「No」どちらか答えろと言われたら「Yes」の割合は半分になるはずなので0.50とする．
だから対角成分には全部0.50が埋まっている．
&lt;/p&gt;

&lt;h2&gt;STEP2: 標準正規分布の下側$P(\S{j}{k})$パーセント点を求める&lt;/h2&gt;

&lt;p&gt;
ここまではアンケート結果から確率を求めたりして何となく何がしたいのか想像できたかもしれないけど，次の手順は理論を知らないと意味不明かもしれない．
  でもとりあえずここでは理論は無視してどう計算するかだけ説明する．&lt;strong&gt;手順自体はエクセル等を使えば簡単&lt;/strong&gt;．
  何をするか一言で言うと&lt;strong&gt;標準正規分布の累積確率$\Phi(z)$が$\Phi(z)=P(\S{j}{k})$となる$z=z_{jk}$を求める&lt;/strong&gt;ということ．
つまり標準正規分布の累積確率密度関数を$\Phi(z)$は
&lt;/p&gt;
\[
\Phi(z)=\int_{-\infty}^{z} \frac{1}{\sqrt{2\pi}} \exp^{-\frac{x^2}{2}}dx
\]
と表せる．この積分の中が標準正規分布．標準正規分布とは正規分布の関数に$\mu=0$と$\sigma=1$を代入したもの．
累積確率とは確率密度関数を積分したものだけど「下側」とは$-\infty$から$z$まで積分したもの．下のグラフで言えば青い部分の面積にあたる．
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnFX6k_DBETGsB4_Jy55mbZJKjlXoiicHOXG1_ujxaDrAeghGUiq_HT7axznF_389KZLFZpWR0K3_n2MUxtewWydrfvBkuSRJzekQgwD6x5aWO1Grdw59L5vo3OWU12gZibtcXynh_S8ihIltGyHnhXQZHABkVHnF6DycNEUTJtz6q7vBPihkzkzVczw/s288/plot_out.png&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;288&quot; data-original-width=&quot;288&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnFX6k_DBETGsB4_Jy55mbZJKjlXoiicHOXG1_ujxaDrAeghGUiq_HT7axznF_389KZLFZpWR0K3_n2MUxtewWydrfvBkuSRJzekQgwD6x5aWO1Grdw59L5vo3OWU12gZibtcXynh_S8ihIltGyHnhXQZHABkVHnF6DycNEUTJtz6q7vBPihkzkzVczw/s320/plot_out.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
確率密度関数を積分した面積は確率そのものになる．ここではこの確率が$P(\S{j}{k})$となるような$z$を$z_{jk}$として，この$z_{jk}$を求める．
&lt;/p&gt;
\[
\Phi(z_{jk})=P(\S{j}{k})
\]
&lt;p&gt;
この計算はエクセルやGoogleスプレッドシートのnorm.s.inv()関数を使うと簡単に計算できる．
例えばnorm.s.inv(1-0.06)=1.55と計算できる．
セル全部を計算した結果がこれ．
&lt;/p&gt;

\[

\begin{array}{rrrrr}
\hline
\hline
j \backslash k &amp; 1&amp; 2&amp;  3&amp;  4&amp;5\\
\hline
1&amp;  0.00&amp;  1.55&amp;  0.10&amp;  0.58&amp; 2.05\\
2&amp; -1.55&amp;  0.00&amp; -2.33&amp; -1.13&amp; 0.50\\
3&amp;  0.10&amp;  2.33&amp;  0.00&amp;  0.61&amp; 1.55\\
4&amp; -0.58&amp; -1.13&amp; -0.61&amp;  0.00&amp; 1.41\\
5&amp;  2.05&amp; -0.50&amp; -1.55&amp; -1.41&amp; 0.00\\
\hline
\hline
\end{array}
\]

&lt;p&gt;
計算結果をよく見ると対角成分（$j=k$）は0で，対角成分を挟んで反対側は正負反対になっている．
これは標準正規分布が原点に対して左右対称だから．
&lt;/p&gt;

&lt;h2&gt;STEP3: 各列を平均する&lt;/h2&gt;

&lt;p&gt;
最後はさらに理論を知らなければ意味不明だけど，計算は簡単．
上の表の各行を平均するだけ．
ちなみに添字がいつのまにか$i$になっているのは理論の方と整合とってて多少の理由がある．
&lt;/p&gt;
\[
\hat{\mu}_i=\displaystyle\frac{1}{5}\sum_{j=1}^5 \hat{z}_{ji}
\]

&lt;p&gt;
この計算によってこの数直線のような解析結果が得られる．
  ここで注意が必要なのはこの&lt;strong&gt;データ点の重心が原点，分散が1になるように数値が決まっている&lt;/strong&gt;のでデータ点1点の数値そのものには意味がない．
データ点どうしの大小比較や2組以上のデータ点間の距離の比については意味がある数値になっている（グラフの描き方は「&lt;a href=&quot;https://buaiso.blogspot.com/2022/12/numberline.html&quot;&gt;Pythonでラベル付きの数直線を描く&lt;/a&gt;」を参照）．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3DVS3pm-zLQ-XsXlZUJ9pIBH7Xbh2dGEVG0Fhf9a3NwBdrmTT1O2YvmDQgrDSUexU34YqR7RQnjZ1IethPj6jhqJ3qPZmHA8uibfTRsvs6oJw3nVgIrpiQrxCUKy6jHNK2JDhvew51oICq0H6XbxxjWlyepu7z0Z-QE-8iYTM-ZfunwSjrgvc6y1QlA/s849/numberline.jpg.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;360&quot; data-original-height=&quot;221&quot; data-original-width=&quot;849&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3DVS3pm-zLQ-XsXlZUJ9pIBH7Xbh2dGEVG0Fhf9a3NwBdrmTT1O2YvmDQgrDSUexU34YqR7RQnjZ1IethPj6jhqJ3qPZmHA8uibfTRsvs6oJw3nVgIrpiQrxCUKy6jHNK2JDhvew51oICq0H6XbxxjWlyepu7z0Z-QE-8iYTM-ZfunwSjrgvc6y1QlA/s360/numberline.jpg.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6034963330258837201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6034963330258837201'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/11/Thurstones-Paired-Comparison-HowTo.html' title='サーストンの一対比較法でのデータ収集方法と解析方法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnFX6k_DBETGsB4_Jy55mbZJKjlXoiicHOXG1_ujxaDrAeghGUiq_HT7axznF_389KZLFZpWR0K3_n2MUxtewWydrfvBkuSRJzekQgwD6x5aWO1Grdw59L5vo3OWU12gZibtcXynh_S8ihIltGyHnhXQZHABkVHnF6DycNEUTJtz6q7vBPihkzkzVczw/s72-c/plot_out.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-7775968612031023462</id><published>2022-12-02T12:53:00.003+09:00</published><updated>2022-12-02T20:48:03.231+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>サーストンの一対比較法って何？</title><content type='html'>&lt;style&gt;
.div-equal-box{
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  margin:40px 0px;
}
.div-equal-box div{
  text-align: center;
  font-size: 12px; 
  border-radius: 0px; 
  border: 0px solid #444444; 
}
&lt;/style&gt;

&lt;p&gt;
「&lt;a href=&quot;https://buaiso.blogspot.com/p/blog-page_30.html&quot;&gt;サーストンの一対比較法を理解する&lt;/a&gt;」シリーズとして今回はサーストンの一対比較法がどんな手法なのか，他の方法との違いや欠点はどんなものなのか解説する．
サーストンの一対比較法は，&lt;strong&gt;感覚を数値化する方法&lt;/strong&gt;．
感覚とは，例えば，「イケメン度合い」とか「美味さ」，「肌触り」とか一見，数値化が難しそうな感覚のこと．
そんな曖昧で抽象的な感覚の優劣を数値化できる方法がある．
&lt;/p&gt;


&lt;h2&gt;5段階評価じゃダメなのか？&lt;/h2&gt;
&lt;p&gt;
感覚の数値化と聞いてすぐに思いつくのは5段階評価．
例えば，10種類のビールの「キレ」の良さを評価したいなら「このビールはキレが良い」のような説明文を設けて，
その文に同意できるか否かを次の1～5の選択肢から回答するというもの．
&lt;/p&gt;
&lt;div class=&quot;div-equal-box&quot;&gt;
 &lt;div style=&quot;width:15%&quot;&gt;1. 全く同意できない&lt;/div&gt;
 &lt;div style=&quot;width:15%&quot;&gt;2. 同意できない&lt;/div&gt;
 &lt;div style=&quot;width:15%&quot;&gt;3. どちらともいえない&lt;/div&gt;
 &lt;div style=&quot;width:15%&quot;&gt;4. 同意できる&lt;/div&gt;
 &lt;div style=&quot;width:15%&quot;&gt;5. 非常に同意できる&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
  この数値を&lt;strong&gt;リッカート尺度&lt;/strong&gt;という．こうすると複数の異なる説明文に対して同じ基準で感覚を数値化できる．
多数の被験者の回答を平均すれば1.0～5.0の実数値で各ビールの「キレ度」が得られる．
ただ，尺度を求めるべく実際に被験者にアンケートしようとすると結構難しい．
というのも一本目を試飲した段階でキレが良いか回答するのは難しく，他のものを飲んで比べてみたくなる．
何らかの基準となるビールが用意されているか，全てのビールの「キレ」のおおよその分布を知らない段階で，最初に試したビールがどのくらい「キレ」が良いのか判断しずらい．
というのも，こうした&lt;strong&gt;感覚量は相対的なもの&lt;/strong&gt;だから．
でも，2つビールを比べてどちらがよりキレが良いかなら答えやすい．
全体に対して今試飲しているビールがどの位置にあるのかなどとは考えなくても良いから．
&lt;/p&gt;


&lt;h2&gt;比較するだけで数値化される一対比較法&lt;/h2&gt;

&lt;p&gt;
そんなときに使える方法がサーストンの一対比較．
  一対比較法は「AよりBの方が良い」などと&lt;strong&gt;優劣を答えるだけで&lt;/strong&gt;Aのキレ度は1.5などの&lt;strong&gt;感覚量を数値化できる手法&lt;/strong&gt;．
  ただし，&lt;strong&gt;得られる数値の原点（0をどこにするか）や単位には意味がない&lt;/strong&gt;（どのようにも設定できる）ので注意が必要．
  意味があるのは「AよりBの方が良い」とか「AとBの差よりもBとCの差の方が2倍ある」など相対的なもの．
&lt;/p&gt;

&lt;div style=&quot;text-align: center; &quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqd15kGoCwzeICREfED57jqrHwZlq07tu2wZMBqNJJLjxgYMyrYP_9wF0-wQXtfwNuBExlX_OxH3KUvQIYEaujpLs3uz67En4a92ccDdaPrpj519lVm0h7sTmitVxJJATuEl68rBsdeTLQbijloDWhxEGFVv9mJbIrCxW5c6IQfYsvqjRxWqmgW6PEmQ/s2169/bears.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;640&quot; data-original-height=&quot;497&quot; data-original-width=&quot;2169&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqd15kGoCwzeICREfED57jqrHwZlq07tu2wZMBqNJJLjxgYMyrYP_9wF0-wQXtfwNuBExlX_OxH3KUvQIYEaujpLs3uz67En4a92ccDdaPrpj519lVm0h7sTmitVxJJATuEl68rBsdeTLQbijloDWhxEGFVv9mJbIrCxW5c6IQfYsvqjRxWqmgW6PEmQ/s640/bears.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;h2&gt;サーストンの一対比較法の欠点&lt;/h2&gt;

&lt;p&gt;
  サーストンの一対比較法にも欠点がある．致命的な欠点は，&lt;strong&gt;全員が同じ回答する程2つの優劣が明らかな場合計算できない&lt;/strong&gt;こと．ちょっとした対処法で計算できなくなる事態は回避できるけど理論的な正しさはなくなってしまう．
&lt;/p&gt;

&lt;p&gt;
  もう一つの欠点も結構致命的．&lt;strong&gt;比べるものが多くなると被験者の回答時間が急激に増加してしまう&lt;/strong&gt;ってこと．
例えば，ビール10種類の場合は，$_{10}C_{2}=45$回も2杯のビールを飲まないといけない．
リッカート尺度を使う場合は10杯で済む．
&lt;/p&gt;


&lt;h2&gt;なぜ比較するだけで数値化できるのか？&lt;/h2&gt;

&lt;p&gt;
ところで，なぜ2つを比較するだけで数値化できるのか？不思議じゃないですか？
それを理解するためには理論を理解しないといけない．
幸い，この手法の理論は，&lt;strong&gt;大学の教養で習う統計の知識があれば理解できる&lt;/strong&gt;．
このシリーズでは「統計」も忘れちゃってる（授業中寝てた）人にも分かるように説明するつもり．
そのために，まず「&lt;a href=&quot;https://buaiso.blogspot.com/2022/11/Thurstones-Paired-Comparison-HowTo.html&quot;&gt;サーストンの一対比較法でのデータ収集方法と解析方法&lt;/a&gt;」で，どうやってサーストンの一対比較を使うのかデータの集め方や解析方法を説明してみる．
その後，「&lt;a href=&quot;Thurstones-Paired-Comparison-Theory.html&quot;&gt;サーストンの一対比較法の理論を理解する&lt;/a&gt;」で，なんでその方法で数値化できるのか理論の部分を説明してみる．
&lt;/p&gt;


&lt;h2&gt;参考文献&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;佐藤 信: &quot;統計的官能検査法&quot; 21章「サーストンの一対比較法」, 日科技連, pp.271-280, 1985.&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/7775968612031023462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/7775968612031023462'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/11/Thurstones-Paired-Comparison-What.html' title='サーストンの一対比較法って何？'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqd15kGoCwzeICREfED57jqrHwZlq07tu2wZMBqNJJLjxgYMyrYP_9wF0-wQXtfwNuBExlX_OxH3KUvQIYEaujpLs3uz67En4a92ccDdaPrpj519lVm0h7sTmitVxJJATuEl68rBsdeTLQbijloDWhxEGFVv9mJbIrCxW5c6IQfYsvqjRxWqmgW6PEmQ/s72-c/bears.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-5184745296823421510</id><published>2022-11-29T14:50:00.489+09:00</published><updated>2023-01-10T13:38:35.379+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="実話"/><category scheme="http://www.blogger.com/atom/ns#" term="生活術"/><title type='text'>クライミング初心者に伝えるべき事</title><content type='html'>&lt;p&gt;
クライミングは危険を伴うスポーツです．殆どの事故は広く知られた安全な手順を間違えたり忘れていたり伝えられていなかったりすることで起きています．
特に，初心者に伝えるべき事は多いので，経験者が伝え忘れに注意しなければなりません．
最近まで初心者だった自分が初心者の気持ちを忘れないうちに伝えるべき事，自分が疑問に思ったことをメモしています．
チェックリストは伝えるべき順に配置しています．
特に始めて一緒に登るけれど，何度か経験があるという人が要注意です．
このチェックリストにより事故が減ることを願います．
&lt;/p&gt;

&lt;h2&gt;クライミング概要&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;トップロープ・リード・ボルダリングの違い&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;インドアとアウトドアの違い&lt;/strong&gt;：アプローチ，現地の環境，雨，落石&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;インドアに最低限必要な物&lt;/strong&gt;：クライミングシューズ（レンタルの場合は靴下も），ハーネス，ビレイ器，環付きカラビナ，チョーク&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;アウトドアで最低限必要な物&lt;/strong&gt;：インドアに最低限必要な物 + ヘルメット，ザック，アプローチシューズ，昼食・水&lt;/div&gt;


&lt;h2&gt;トップロープ・クライミング（回収なし）&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;二重八の字結び&lt;/strong&gt;：半ひろのところに結び目，団子結びとの比較，フォロースルー&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ビレイループかタイインループか&lt;/strong&gt;：直接ロープを掛ける場合はタイインループ&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;カラビナの外し方&lt;/strong&gt;：手がとどく時点で外す，ロープ側を外す，外し方のコツ&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;終了点についたら&lt;/strong&gt;：テンション→テンションOK→ダウン，終了点は触らない，8の字結びは解かない&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ロワーダウンの姿勢&lt;/strong&gt;：岩から手を離す，ロープを持たない&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;テンション・ロワーダウンの体験&lt;/strong&gt;：実際に登る前に数m登って落ちたり，テンションを張って歩いて降りてみる&lt;/div&gt;

&lt;h2&gt;トップロープ・クライミング（回収あり）&lt;/h2&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;終了点の回収（終了点がカラビナの場合）&lt;/strong&gt;：終了点側にロープを掛ける→テンション→ヌンチャク回収→ロワーダウン&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;終了点の回収（終了点がリング状の場合）&lt;/strong&gt;：セルフビレイ→ロープの架替え→テンション→セルフビレイ解除→ロワーダウン&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;中間支点の回収&lt;/strong&gt;：ロープ側から外すかボルト側から外すか，ルートが斜めの場合はヌンチャクでガイドする&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ロープの回収&lt;/strong&gt;：ロープダウン，8の字の結び目を解き忘れないように，落石注意&lt;/div&gt;


&lt;h2&gt;トップロープ・ビレイ&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ビレイ器制動の仕組み&lt;/strong&gt;：ロープを引く向きを変えると制動力が変わる，ビレイヤ側を引く，クライマ側は引かない&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ビレイ器のロープの通し方&lt;/strong&gt;：クライマ側とビレイヤ側&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ロープの張りぐあい&lt;/strong&gt;：引けなくなるまでロープを引く，張りすぎると登りにくい&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;制動側の手を離さない工夫&lt;/strong&gt;：制動側の手を離さないために一時的に両手で持つ&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;落下体験&lt;/strong&gt;：実際に登る前に数m登って落ちたときの制動と衝撃を体験させる&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;テンションコール時の動作&lt;/strong&gt;：ロープのたるみを無くす，更に体重をかけて引く&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ロワーダウン時の制動方法&lt;/strong&gt;：制動側の手の位置（前後）で速度を制御する&lt;/div&gt;

&lt;h2&gt;リード・クライミング（ヌンチャク設置済み）&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;リードクライミングの手順と仕組み&lt;/strong&gt;：&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;リードクライミングの難しさ&lt;/strong&gt;：クリップ動作の分だけ時間が長い，トップロープより落下距離が長い&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;クリップ方法&lt;/strong&gt;：カラビナの向きとクリップ方法の違い，ヌンチャクのカラビナに手が届けばクリップ可&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;クリップ方法（肩より上の場合）&lt;/strong&gt;：口でくわえてロープを伸ばす&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;逆クリップとZクリップ&lt;/strong&gt;：クライマー側のロープが手前，ロープは8の字結びからたぐる&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;たぐり落ちの危険性&lt;/strong&gt;：3ピン目までは肩より上にはクリップしない&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ロープと足の位置&lt;/strong&gt;：落下時にロープが足に引っかからないように足を置く&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;落下時の注意&lt;/strong&gt;：ビレイや側のロープを持つと火傷する，壁面への衝突に備える&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;敗退方法&lt;/strong&gt;：テンション→ロワーダウン&lt;/div&gt;

&lt;h2&gt;リード・クライミング（ヌンチャク未設置）&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ヌンチャクの必要本数&lt;/strong&gt;：ボルトの数＋終了点用2つ＋α&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ヌンチャクの上下&lt;/strong&gt;：カラビナが固定されていない方がボルト側&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ヌンチャクの左右の向き&lt;/strong&gt;：進行方向にスパインを向ける&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;終了点の構築方法&lt;/strong&gt;：カラビナが互い違いになるようにヌンチャク2本を掛ける&lt;/div&gt;


&lt;h2&gt;リード・ビレイ&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;リード・ビレイの難しさ&lt;/strong&gt;：落下時のビレイヤへの衝撃が大きい，ロープをタイミングよく出したり引いたりする必要がある&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;グローブの必要性&lt;/strong&gt;：落下時の衝撃が大きいので火傷する可能性がある&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;1ピン目掛けるまで&lt;/strong&gt;：両手をクライマを受け止める体勢に，ロープは長めに出しておく／クライマの肩に掛ける&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;2ピン目以降&lt;/strong&gt;：ボルトを通過するまではロープを引く，ボルトを通過したらロープを出す&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;クリップ動作時のロープ出し&lt;/strong&gt;：大きくロープを出す，肩から上のクリップの場合は2，3回ロープを出す，遅いと怒られる&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;足場が悪いところではセルフビレイを&lt;/strong&gt;：1ピン目掛ける前にクライマが落ちたらビレイヤと共に滑落する&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;クライマとの衝突の危険性&lt;/strong&gt;：クライマが滑落した際にビレイヤに衝突する可能性を考えて立ち位置を決める&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;岩壁との衝突の危険性&lt;/strong&gt;：クライマが滑落した1ピン目の方向にビレイヤの体が飛ばされることを考えて立ち位置を決める&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;ロープが絡む危険性&lt;/strong&gt;：ビレイ中にロープが絡む危険性について，ロープのどちらの末端をクライマ側にすべきか&lt;/div&gt;


&lt;h2&gt;リード・敗退方法&lt;/h2&gt;

&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;捨てカラビナによる敗退&lt;/strong&gt;：いつでも捨てても良いカラビナを1つ準備しておく必要がある&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;スリングによる残置なし敗退&lt;/strong&gt;：ロープの1/3しか下れない&lt;/div&gt;


&lt;!--&lt;h2&gt;アルパインリード・敗退方法&lt;/h2&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;クライムダウンによる残置なし敗退&lt;/strong&gt;：両手をクライマを受け止める体勢に，ロープは長めに出しておく／クライマの肩に掛ける&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;checkbox&quot;&gt;&lt;strong&gt;敗退時のバックアップシステム&lt;/strong&gt;：支点が信頼できない場合の方法．アッセンダー&lt;/div&gt;--&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5184745296823421510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5184745296823421510'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/11/forbeginnerclimbers.html' title='クライミング初心者に伝えるべき事'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-4207194198152570994</id><published>2022-06-22T16:58:00.004+09:00</published><updated>2022-06-27T07:59:11.800+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>【滝】 台高 蓮川水系 唐谷川 一ノ滝</title><content type='html'>&lt;div class=&quot;sketchfab-embed-wrapper&quot;&gt; &lt;iframe title=&quot;台高 蓮川水系 唐谷川 一ノ滝&quot; frameborder=&quot;0&quot; allowfullscreen mozallowfullscreen=&quot;true&quot; webkitallowfullscreen=&quot;true&quot; allow=&quot;autoplay; fullscreen; xr-spatial-tracking&quot; xr-spatial-tracking execution-while-out-of-viewport execution-while-not-rendered web-share width=&quot;800&quot; height=&quot;600&quot; src=&quot;https://sketchfab.com/models/336ccce3b70342fead46799bdf2db2b1/embed&quot;&gt; &lt;/iframe&gt; &lt;p style=&quot;font-size: 13px; font-weight: normal; margin: 5px; color: #4A4A4A;&quot;&gt; &lt;a href=&quot;https://sketchfab.com/3d-models/336ccce3b70342fead46799bdf2db2b1?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=336ccce3b70342fead46799bdf2db2b1&quot; target=&quot;_blank&quot; style=&quot;font-weight: bold; color: #1CAAD9;&quot;&gt; 台高 蓮川水系 唐谷川 一ノ滝 &lt;/a&gt; by &lt;a href=&quot;https://sketchfab.com/r168xr169?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=336ccce3b70342fead46799bdf2db2b1&quot; target=&quot;_blank&quot; style=&quot;font-weight: bold; color: #1CAAD9;&quot;&gt; r168xr169 &lt;/a&gt; on &lt;a href=&quot;https://sketchfab.com?utm_medium=embed&amp;utm_campaign=share-popup&amp;utm_content=336ccce3b70342fead46799bdf2db2b1&quot; target=&quot;_blank&quot; style=&quot;font-weight: bold; color: #1CAAD9;&quot;&gt;Sketchfab&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/4207194198152570994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/4207194198152570994'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/06/blog-post.html' title='【滝】 台高 蓮川水系 唐谷川 一ノ滝'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-411102146952858305</id><published>2022-05-25T13:28:00.392+09:00</published><updated>2022-05-30T13:17:46.813+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Unity"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="拡張現実感"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>光学透過型のARディスプレイっぽく表示するUnityシェーダ</title><content type='html'>&lt;div style=&quot;display:none; text-align: center;&quot;&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s240/screen.png&quot;/&gt;
&lt;/div&gt;

&lt;p&gt;
光学透過型ディスプレイで提示したCGの仮想物体をUnity内で再現するには，単にオブジェクトを半透明するだけではダメで，
背景像に仮想物体の輝度が加算されないといけない．
  それを簡単に再現するUnity用シェーダを作ったので忘れないように重要な部分だけメモしておく．
&lt;/p&gt;

&lt;h2&gt;必要な特徴&lt;/h2&gt;
&lt;p&gt;
Unity上では全部CGだけど，不透明なオブジェクトを実物体，光学透過型ディスプレイで提示されたつもりの半透明なオブジェクトを仮想物体と呼んでおく．
&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;/ol&gt;
&lt;p&gt;
今回紹介する方法では，上の特徴全部を再現できる．
&lt;/p&gt;


&lt;h2&gt;ソースコード&lt;/h2&gt;
&lt;p&gt;
このシェーダを光学透過型ディスプレイで表示されたようにしたい物体にアタッチするだけ．
このシェーダはUnlitシェーダを数行改変しただけ．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
Shader &quot;Unlit/OstDisplay&quot;
{
    Properties
    {
        _MainTex (&quot;Texture&quot;, 2D) = &quot;black&quot; {}
        _Luminance (&quot;Luminance&quot;, Range(0.0, 1.0)) = 1.0
    }
    SubShader
    {
        Cull Back ZWrite On ZTest Less
        Blend One One
        Tags {
            &quot;Queue&quot;=&quot;AlphaTest&quot;
            &quot;IgnoreProjector&quot;=&quot;True&quot;
            &quot;RenderType&quot;=&quot;Transparent&quot;
            &quot;PreviewType&quot;=&quot;Plane&quot;
        }       
        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include &quot;UnityCG.cginc&quot;
            
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }
            sampler2D _MainTex;
            float _Luminance;
            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.uv);
                return col*_Luminance;
            }
            ENDCG
        }
    }
}
&lt;/pre&gt;

&lt;div style=&quot;text-align: center;&quot;&gt; &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwl4uEcUq_Kwi0HSt0VCFHT3basO_YK7EvD8f0Kgy-0LkGB8F0M1I0RAtuUDZxWjaZplXfKzlLqxNV-c3ZzFM4_V-_wYH_4rKqlhjeqBfAC5qKqMhiXmOOI8iV_w2_VoqPbfEArlvouNiudjqRjV9FWatC_MtgF9sQBAahB2H8ybU-elJd3ffKfNAlfg/s1134/%E3%81%82.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;1134&quot; data-original-width=&quot;1134&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwl4uEcUq_Kwi0HSt0VCFHT3basO_YK7EvD8f0Kgy-0LkGB8F0M1I0RAtuUDZxWjaZplXfKzlLqxNV-c3ZzFM4_V-_wYH_4rKqlhjeqBfAC5qKqMhiXmOOI8iV_w2_VoqPbfEArlvouNiudjqRjV9FWatC_MtgF9sQBAahB2H8ybU-elJd3ffKfNAlfg/s240/%E3%81%82.png&quot;/&gt;&lt;/a&gt;

 
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s320/screen.png&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
左が実際に使用したテクスチャで右がレンダリング結果．
  結果をみると分かるようにチェスボード模様の黒い部分は完全に透明になっていて背景をそのまま透過させている（&lt;strong&gt;特徴1&lt;/strong&gt;）．
黒じゃない部分は背景色に白や緑が加算されている（&lt;strong&gt;特徴1&lt;/strong&gt;）．
青い球と後ろにある仮想物体を見てみるとちゃんと仮想物体が実物体に遮蔽されている（&lt;strong&gt;特徴2&lt;/strong&gt;）．
一方，仮想物体どうしの重なりを見ると後ろの仮想物体の「あ」の一部は描画されていないので仮想物体どうしでも遮蔽が実現できている（&lt;strong&gt;特徴3&lt;/strong&gt;）．
一つの仮想物体だけに注目すると立方体の3面しか見えていないので単一の仮想物体の背面が前面に遮蔽されているのも分かる（&lt;strong&gt;特徴4&lt;/strong&gt;）．
ということで必要な全ての特徴を満たすことができた．
だからこのシェーダは提示する仮想物体の幾何学的整合性が全部満たされたときに，光学透過型ディスプレイでどのように見えるかを再現していると言える．
&lt;/p&gt;


&lt;h2&gt;解説&lt;/h2&gt;

&lt;h3&gt;初期値&lt;/h3&gt;
&lt;p&gt;
まずこの部分．この部分はディスプレイに表示するテクスチャ（_MainTex）とディスプレイの輝度（_Luminance）の初期化に関する部分．
Properties内に変数と初期値を定義するとインスペクタ上で選択できる．初期値はデフォルトの値となる．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
    Properties
    {
        _MainTex (&quot;Texture&quot;, 2D) = &quot;black&quot; {}
        _Luminance (&quot;Luminance&quot;, Range(0.0, 1.0)) = 1.0
    }
&lt;/pre&gt;
&lt;p&gt;
インスペクタ上で設定した値はこの変数に代入される．
これを定義していないとコンパイルエラーになる．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
            sampler2D _MainTex;
            float _Luminance;
&lt;/pre&gt;


&lt;h3&gt;遮蔽&lt;/h3&gt;
&lt;p&gt;
次にこの部分．透明な物体を描く上で遮蔽関係は重要．ディスプレイにどのように3D CGを表示したいかによるけど，
  ここでは3Dオブジェクトでも一旦は普通に描画してその結果が光学透過型ディスプレイに表示されている，という感じにしたい．
  だから，背面は普通にカリングされて表示されないようにした上で，後ろの物体とブレンドされないといけえない．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
        Cull Back ZWrite On ZTest Less
&lt;/pre&gt;
&lt;p&gt;
&lt;strong&gt;Cull Back&lt;/strong&gt;はカリング（Cull）される対象が物体の背面（Back）という意味．左がCull Back，中央がCull Off，右がCull Frontの結果．
  各オブジェクト内のポリゴンで背面を描かないという設定で&lt;strong&gt;特徴4&lt;/strong&gt;に対応．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s240/screen.png&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6pXNUSBXhcNBgcPMMTPlSZdYder_egqkmd_gwY0pYwuctlsbbiiuAiPGSkjoRvUXsrbhaq7YNoAK6E0SG82btg4bRs2YWy6FyvsG_Nm4VZ3vtw1DBNx0Ccp4mOW9v-hhcSYfGHyBRtGjJ8t1InD52CwMvuF7wlGgAeN6ekykifjfTh0MyNlKP6mh9rQ/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6pXNUSBXhcNBgcPMMTPlSZdYder_egqkmd_gwY0pYwuctlsbbiiuAiPGSkjoRvUXsrbhaq7YNoAK6E0SG82btg4bRs2YWy6FyvsG_Nm4VZ3vtw1DBNx0Ccp4mOW9v-hhcSYfGHyBRtGjJ8t1InD52CwMvuF7wlGgAeN6ekykifjfTh0MyNlKP6mh9rQ/s240/screen.png&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhta79l8-SGbo74mvfl2ti4hkRnEU1k5rdAnOIcM-Km_6GH5HJxrDhP3YBuWBezV387S2_AdDNwqExU-QoSyZ151TJBTbrZJNhht7IGIacJR0boQxMZ6T5DGBCqdjvzbOEedMGT5MX5rXJgu1YR_CRohMFjsJOUQLtx4lOhjKaZtCNCTaOwSmPmqse2vQ/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhta79l8-SGbo74mvfl2ti4hkRnEU1k5rdAnOIcM-Km_6GH5HJxrDhP3YBuWBezV387S2_AdDNwqExU-QoSyZ151TJBTbrZJNhht7IGIacJR0boQxMZ6T5DGBCqdjvzbOEedMGT5MX5rXJgu1YR_CRohMFjsJOUQLtx4lOhjKaZtCNCTaOwSmPmqse2vQ/s240/screen.png&quot;/&gt;&lt;/a&gt;
  &lt;p&gt;左：Cull Back，中央：Cull Off．右：Cull Front．&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;strong&gt;ZWrite On&lt;/strong&gt;はこの仮想物体のデプスをzバッファに書き込むかどうかを指定している．
左がZWrite On，右がOff．透明な仮想物体（QueueがAlphaTestやTransparent）は，不透明な物体の描画が終わってから描かれる．
だから仮想物体自体のデプスが影響するのは別の仮想物体．右図では，後ろの仮想物体のZバッファないため，どちらの仮想物体を描くときも実物体の奥行きと仮想物体の奥行きが比較されて，実物体より手前にある部分が描画されている．そのため仮想物体どうし重なる部分の画素が2重に描かれてしまっている．
&lt;/p&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s240/screen.png&quot;/&gt;&lt;/a&gt;
  
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYvt-aEW1iqm9DHSGdLuUgEKu952mu2hCs1l8tlkXRnN1Vi_EkIsV3vcj5oLRGatmbE5pPpS_km5MUj6fxYG96nizwktuKEn71Kk45QU4InwPNffH42SypLEDpTTCtP32-hIy_6Fxt6YLnTsHtp8QyFbdq5o7tLGKQC1gcMIu4JiPG2eLuXUhbkS_Bfg/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYvt-aEW1iqm9DHSGdLuUgEKu952mu2hCs1l8tlkXRnN1Vi_EkIsV3vcj5oLRGatmbE5pPpS_km5MUj6fxYG96nizwktuKEn71Kk45QU4InwPNffH42SypLEDpTTCtP32-hIy_6Fxt6YLnTsHtp8QyFbdq5o7tLGKQC1gcMIu4JiPG2eLuXUhbkS_Bfg/s240/screen.png&quot;/&gt;&lt;/a&gt;
  &lt;p&gt;左：ZWrite On，右：ZWrite Off．&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
&lt;strong&gt;ZTest Less&lt;/strong&gt;は，既に描かれたzバッファに対してこの仮想物体のポリゴンの奥行きが手前（Less）にあるときのみ描画することを意味している．下図の通りZTest Less（左）のときは正常に描画されているけど，ZTest Greater（右）のときは描画された実物体のzバッファの値よりも奥（Greater）にある透明物体のポリゴンだけが描かれる．&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s240/screen.png&quot;/&gt;&lt;/a&gt;  
  
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDUv_9ps4uID5x_5X6ebqRChDxfb_NEv2G6RFYAhEFeiAcAOlxsZtk9-BDYfaC91qvgsvm48fVISu5mroeVLK30nF0C5HYNJgT_4WvfTe9k7GDQQCSdOzpEkAPLe0VTQed8uSGk5ADmUJkpTBf9_fE0VT5NB3j-sRiv9M58eF8kvEcXCrhdi6VZNccxw/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDUv_9ps4uID5x_5X6ebqRChDxfb_NEv2G6RFYAhEFeiAcAOlxsZtk9-BDYfaC91qvgsvm48fVISu5mroeVLK30nF0C5HYNJgT_4WvfTe9k7GDQQCSdOzpEkAPLe0VTQed8uSGk5ADmUJkpTBf9_fE0VT5NB3j-sRiv9M58eF8kvEcXCrhdi6VZNccxw/s240/screen.png&quot;/&gt;&lt;/a&gt;
  &lt;p&gt;左：ZTest Less，右：ZTest Greater．&lt;/p&gt;
&lt;/div&gt;

&lt;h3&gt;ブレンディング&lt;/h3&gt;

&lt;p&gt;
透明な物体を描くということは前景と背景が混ぜるということなので，ここが一番重要．
光学透過型ディスプレイでは，実シーンからの光に，ディスプレイの光が加算される．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
        Blend One One
&lt;/pre&gt;

&lt;p&gt;
左のOneが手前の物体のアルファ値で，後ろのOneが背景のアルファ値と考えればいい．
Unityのマニュアルでは左がsource，右がdestinationとなっているけどそのネーミングが分かりにくい．
数式で表せば分かりやすい．透明な物体は，不透明な物体が全部描き終えてから，一番奥の透明物体から手前の透明物体へ順に描画される．
$i$番目の透明物体（もしくは最後の不透明物体）が描かれた時点での画素値を$C_{i}$，今から描画しようとする透明物体の画素値を$C_{\rm obj}とすると，その物体の描画結果$C_{i+i}$は次式で表すことができる．
&lt;/p&gt;
\[
C_{i+1} =  w_{\rm obj} C_{\rm obj} + w_{i} C_{i}
\]
&lt;p&gt;
$w_{\rm obj}$と$w_{i}$は重みでこれが左のOne（$w_{\rm obj}=1$）と右のOne（$w_{i}=1$）に対応している．
この結果$C_{i+1}$は次の物体を描画する際には右辺に入ることになる．
この重みを変えてみた結果が下の図．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s240/screen.png&quot;/&gt;&lt;/a&gt; 
  
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlHjhDyeu7CbUtQ3YFA5uSlTKcUmMvIRWhI8HdanGdLvpEtmA0Qy6UytEs2QUiq5UchoGP_O-UswBJG4JsXUviFETsVsX8QLkZtE26MoH9YOw8DaqCh-iK9js6ZLLGbl0Xd_yin1BmBkQCJOljHSKk9sHLeVQx90lO7UCZtCuYkpbhxUBFdBt0Ryl4KQ/s630/screen.png&quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlHjhDyeu7CbUtQ3YFA5uSlTKcUmMvIRWhI8HdanGdLvpEtmA0Qy6UytEs2QUiq5UchoGP_O-UswBJG4JsXUviFETsVsX8QLkZtE26MoH9YOw8DaqCh-iK9js6ZLLGbl0Xd_yin1BmBkQCJOljHSKk9sHLeVQx90lO7UCZtCuYkpbhxUBFdBt0Ryl4KQ/s240/screen.png&quot;/&gt;&lt;/a&gt;
  &lt;p&gt;左：Blend One  One．右：Blend Zero Zero．&lt;/p&gt;  
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8xIwRtTX5QD5qSV5QZIUTcXuQPQsyZWc_pkkij6gyb8wDMRerdqWRlWcyrNAxAT5EUKgyxijGKaI_PBvmiP1uBZ8J0nYgsh0vKBJ_RZWh1pSYcG4J7jxy5HqOhibEXHoQcPB7ZzehLzkowqtngteVVeaw7kLVK575Hr4J-cqsEhL30zYdTPp9OB9fdw/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8xIwRtTX5QD5qSV5QZIUTcXuQPQsyZWc_pkkij6gyb8wDMRerdqWRlWcyrNAxAT5EUKgyxijGKaI_PBvmiP1uBZ8J0nYgsh0vKBJ_RZWh1pSYcG4J7jxy5HqOhibEXHoQcPB7ZzehLzkowqtngteVVeaw7kLVK575Hr4J-cqsEhL30zYdTPp9OB9fdw/s240/screen.png&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqgpmvtMkfkOYmDM48oPFjVJ751-7DDUw0C1qRPWMP6QbRHtLRJzY8Zsd-aA6-zLXlQuVx9n-WNdaapnUJy75vMmhceMBMJoS5L4v1ZgIpqrqs91zdRj1V_bRP7IK6i5M04s-0Qp51w1Pbrh6OT44y3sGTQjUrgkIRpkDcCGKfmUfsRngfGfQQJT-w2w/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqgpmvtMkfkOYmDM48oPFjVJ751-7DDUw0C1qRPWMP6QbRHtLRJzY8Zsd-aA6-zLXlQuVx9n-WNdaapnUJy75vMmhceMBMJoS5L4v1ZgIpqrqs91zdRj1V_bRP7IK6i5M04s-0Qp51w1Pbrh6OT44y3sGTQjUrgkIRpkDcCGKfmUfsRngfGfQQJT-w2w/s240/screen.png&quot;/&gt;&lt;/a&gt;

  &lt;p&gt;左：Blend Zero One．右：Blend One  Zero．&lt;/p&gt;
&lt;/div&gt;


&lt;h3&gt;Tag&lt;/h3&gt;
&lt;p&gt;
Tagはシェーダの動作を切り替える役割を持っている．
デフォルトのUnlitシェーダからの変更点は，1行目と3行目．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
        Tags {
            &quot;Queue&quot;=&quot;AlphaTest&quot;
            &quot;IgnoreProjector&quot;=&quot;True&quot;
            &quot;RenderType&quot;=&quot;Transparent&quot;
            &quot;PreviewType&quot;=&quot;Plane&quot;
        }
&lt;/pre&gt;
&lt;p&gt;
  &lt;strong&gt;Queue&lt;/strong&gt;は，描画順序を決めるタグ．
  透明物体に関するタグはAlphaTestとTransparentがあり，不透明物体はGeometry．他にもあるけどこの3つなら
  Geometry→Transparent→AlphaTestの順に描画される．
&lt;/p&gt;

&lt;p&gt;
次の図はこの3つのタグを試してみた結果．
  AlphaTestとGeometryが全く同じ結果に見えるし，TransparentはZWriteをOffにしたときの結果と結果と全く同じに見える．
描画順序だけの問題ならこうはならないように思えるのでこのタグによって何が変化するのか理解できていないかも．
  &lt;a href=&quot;https://docs.unity3d.com/ja/2020.2/Manual/SL-CullAndDepth.html&quot;&gt;マニュアル&lt;/a&gt;を読んだだけでは理解できなかった．
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s630/screen.png&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s240/screen.png&quot;/&gt;
  &lt;/a&gt;  
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxzA19xuzA5BBHAQNkYo_6lMNYEVub5swAtvWyihhvssxBaEAEram9N3RO18MuqgAL0qxKlFTu71Go440UR6H3Vfibk4NbfFYXwS1q-bRoRpN2m18NM2sxL8-3MZyc7s2Da0JyWq9AunV_YKo0xfL5mW2TIUmAdU9HfoRFhw0BMbMABc5SGYw__US5iA/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxzA19xuzA5BBHAQNkYo_6lMNYEVub5swAtvWyihhvssxBaEAEram9N3RO18MuqgAL0qxKlFTu71Go440UR6H3Vfibk4NbfFYXwS1q-bRoRpN2m18NM2sxL8-3MZyc7s2Da0JyWq9AunV_YKo0xfL5mW2TIUmAdU9HfoRFhw0BMbMABc5SGYw__US5iA/s250/screen.png&quot;/&gt;&lt;/a&gt;

  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLoMGoLq-RHbJmwh1i6O4ccbQgcOltBW4qrHSQerNK5GAEHeZ40tr37jj9uZccLCG1no_UnBqNIib2kA9T5ISELGF16evqWEwBwKp3HljZnaYYm2TADsywM1Cq1d7IL-bhng9JrRn6seMF-CNMl4Sz3EiukNKKTjh7xadUZxvyU-5QgRFRRrQLtHaEww/s630/screen.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;240&quot; data-original-height=&quot;537&quot; data-original-width=&quot;630&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLoMGoLq-RHbJmwh1i6O4ccbQgcOltBW4qrHSQerNK5GAEHeZ40tr37jj9uZccLCG1no_UnBqNIib2kA9T5ISELGF16evqWEwBwKp3HljZnaYYm2TADsywM1Cq1d7IL-bhng9JrRn6seMF-CNMl4Sz3EiukNKKTjh7xadUZxvyU-5QgRFRRrQLtHaEww/s240/screen.png&quot;/&gt;&lt;/a&gt;
  &lt;p&gt;左：AlphaTest．中央：Transparent．右：Geometry．&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;RenderType&lt;/strong&gt;は，特定のオブジェクトだけシェーダを切り替えるためのタグ．
  これはOpaqueに変えようがTransparentに変えようが結果に変化なかった．今回は関係なさそう．
&lt;/p&gt;

&lt;h3&gt;仮想物体の輝度&lt;/h3&gt;

&lt;p&gt;
最後は仮想物体の輝度を反映させる部分．
インスペクターで設定した輝度（Luminance）を描画結果の輝度に掛け算する．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
                fixed4 col = tex2D(_MainTex, i.uv);
                return col*_Luminance;
&lt;/pre&gt;


&lt;h2&gt;参考&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;ShaderLab ：Culling と Depth Testing&lt;br/&gt;
    &lt;a href=&quot;https://docs.unity3d.com/ja/2018.4/Manual/SL-CullAndDepth.html&quot; target=&quot;_blank&quot;&gt;
    https://docs.unity3d.com/ja/2020.2/Manual/SL-CullAndDepth.html&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;ビルトインのシェーダー include ファイル&lt;br/&gt;
    &lt;a href=&quot;https://docs.unity3d.com/ja/2019.4/Manual/SL-BuiltinIncludes.html&quot; target=&quot;_blank&quot;&gt;
    https://docs.unity3d.com/ja/2022.1/Manual/SL-BuiltinIncludes.html&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;ShaderLab: SubShader 内のタグ&lt;br/&gt;
    &lt;a href=&quot;https://docs.unity3d.com/ja/2022.1/Manual/SL-SubShaderTags.html&quot; target=&quot;_blank&quot;&gt;
    https://docs.unity3d.com/ja/2022.1/Manual/SL-SubShaderTags.html&lt;/a&gt;&lt;/li&gt;  
  &lt;li&gt;FreeStockTextures ― Rough Wall The Color Of Siena Texture&lt;br/&gt;
    &lt;a href=&quot;https://freestocktextures.com/texture/rough-wall-the-color-of-siena,1544.html&quot; target=&quot;_blank&quot;&gt;
    https://freestocktextures.com/texture/rough-wall-the-color-of-siena,1544.html&lt;/a&gt;&lt;/li&gt;  
  &lt;li&gt;
  &lt;/li&gt;
&lt;/ul&gt;




</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/411102146952858305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/411102146952858305'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/05/unityshaderostardisplay.html' title='光学透過型のARディスプレイっぽく表示するUnityシェーダ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLXKGKEfccuoTIhtsa9Ncgu6LZ01eP46Vn8oCE_pShQP1EpnR9DJwbt1Md3ijZIz9gUFBSa-wRtJauWoZmDlalnVBTuSc1WDRvB_SsApFummD5L2xJwavsgpLqFyGQdKphtnvAWtY5EgLQEqYlyu_9vKkkzEk8yvhxOWdsOk28c1dHrQA27fH-rHChhw/s72-c/screen.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-6697729465337071220</id><published>2022-05-18T20:59:00.010+09:00</published><updated>2022-05-31T10:55:48.777+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="生活術"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>沢登り用の防水デジタル簡易無線</title><content type='html'>&lt;h1&gt;滝登り時のコミュニケーションは難しい&lt;/h1&gt;
&lt;p&gt;
沢登りをしていて滝の上下に分かれたときにコミュニケーション手段がなくて困ることが良くある．
例えば，リードで滝を登る人（リーダ）とそれに続く人（フォロア），ビレイをする人（ビレイヤ）との間の会話を
&lt;/p&gt;
&lt;ol&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;li&gt;&lt;strong&gt;ビレイヤ：&lt;/strong&gt;
	ビレイが解除できたら「OK」&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;li&gt;&lt;strong&gt;リーダ：&lt;/strong&gt;
	「はーい」&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
みたいなやりとりをする．このやりとりはフリークライミングなどでは成り立っても，滝の音がごうごうと鳴り響く沢では，殆どまともにできないことが多い．
これらのコールの多くはそのタイミングが伝わればいいだけなので，作業が順調なら笛で代用できるけれども，ちょっとしたトラブルがあるともう何の笛なのか分からなくなる．
&lt;/p&gt;

&lt;h1&gt;沢登り用の無線&lt;/h1&gt;
&lt;p&gt;
そこで沢登り用に無線機を持っていけば良いと考えるけど沢登りの特殊な環境を考えると要求される機能がある．
デジタル簡易無線なら出力も大きく免許不要でクリアな音になるということで比較してみたい．
&lt;/p&gt;
&lt;h2&gt;防水性能&lt;/h2&gt;
&lt;p&gt;
まず当たり前だけど防水性能が高くないといけない．
防水袋に入れておけば良いと考えるかもしれないけど，袋の上からでは操作しにくく袋から出したりすると濡れた手で触らないといけないかもしれない．
それに防水袋でも浸水することは良くあること．
&lt;/p&gt;
&lt;h2&gt;VOX&lt;/h2&gt;
&lt;p&gt;
普通無線は自分が発話するときだけボタンを押すPPT (Push to Talk)という使い方をする．
ただ，滝を登っている最中にボタンを押すことは難しい場合もあるので，発話しているときだけボタンを押したことにしてくれるVOX (Voice Operated Transmit)の機能があると良い．実際に滝の音がごうごうと鳴り響く状況下で機能するかどうかは不明．ノイズキャンセル機能のあるインカムも
  あるのでちょっと期待．
&lt;/p&gt;

&lt;h2&gt;Bluetooth&lt;/h2&gt;
&lt;p&gt;
無線機本体は厳重に防水したいのでBluetoothでインカムと本体とを分離できたら浸水したときにも被害がインカムだけになる．
マイク付きのイヤホンは無線用途に限らずスマホでの会話用にも売られているので比較的安いというのもある．
&lt;/p&gt;

&lt;h2&gt;有線マイクも防水&lt;/h2&gt;
&lt;p&gt;
市販のBluetoothマイクが完全防水ならいいんだけど，滝の水しぶきを浴びながらVOXが機能するのかあやしい．
そこで有線マイクも装備しておきたいのでマイクも防水であるべき．
本体は防水しておいてマイクだけ外にだして別途防水して使う．もちろん水が侵入する可能性があるのでもともと防水であることが望ましい．
&lt;/p&gt;


&lt;h1&gt;沢登り用のデジタル簡易無線&lt;/h1&gt;
&lt;p&gt;
代表的な無線機メーカーは，ICOM，ALINCO，KENWOOD，八重洲無線．
この中から上の条件を満たすものをピックアップして比較してみる．
重量は全て付属のバッテリを装着したときのもので，使用時間は各社のバッテーリーセーブ機能ONの時の値．
全て取り扱い説明書を確認の上，Bluetooth接続時にVOX機能が使えることを確認済み．
&lt;/p&gt;

&lt;table class=&quot;tb01&quot;&gt;
  &lt;tr class=&quot;head&quot;&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;tr&gt;
    &lt;th&gt;&lt;a href=&quot;https://www.icom.co.jp/lineup/products/IC-DPR7S/&quot; target=&quot;_blank&quot;&gt;ICOM IC-DPR7SBT&lt;/a&gt;&lt;/th&gt;
    &lt;td&gt;245g&lt;/td&gt;
    &lt;td&gt;13時間&lt;/td&gt;
    &lt;td&gt;IP67&lt;/td&gt;
    &lt;td&gt;HM-159FS/SJ***&lt;/td&gt;
  &lt;/tr&gt;

    &lt;tr&gt;
      &lt;th&gt;&lt;a href=&quot;https://www.alinco.co.jp/product/electron/detail/id=djdps71&quot; target=&quot;_blank&quot;&gt;ALINCO DJ-DPS71&lt;/a&gt;*&lt;/th&gt;
    &lt;td&gt;244g&lt;/td&gt;
    &lt;td&gt;15時間&lt;/td&gt;
    &lt;td&gt;&lt;strong&gt;IP68&lt;/strong&gt;&lt;/td&gt;
    &lt;td&gt;EME-80BMA87B (IP67)**&lt;/td&gt;
  &lt;/tr&gt;

    &lt;tr&gt;
      &lt;th&gt;&lt;a href=&quot;https://www.kenwood.com/jp/com/license-free-high-power/products/tpz-d563bt_tpz-d563/&quot; target=&quot;_blank&quot;&gt;KENWOOD TPZ-D563BT&lt;/a&gt;&lt;/th&gt;
    &lt;td&gt;247g&lt;/td&gt;
    &lt;td&gt;15時間&lt;/td&gt;
    &lt;td&gt;&lt;strong&gt;IP68&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;KMC-55 (IP67)&lt;/strong&gt;&lt;/td&gt;
  &lt;/tr&gt;
 
  &lt;tr&gt;
    &lt;th&gt;&lt;a href=&quot;https://www.yaesu.com/jp/dt_index/sr730sr740/detail.html&quot; target=&quot;_blank&quot;&gt;八重洲無線 SR740&lt;/a&gt;&lt;/th&gt;
    &lt;td&gt;&lt;strong&gt;237g&lt;/strong&gt;&lt;/td&gt;
    &lt;td&gt;&lt;strong&gt;16時間&lt;/strong&gt;&lt;/td&gt;
    &lt;td&gt;&lt;strong&gt;IP68&lt;/strong&gt;&lt;/td&gt;
    &lt;td&gt;SSM-10C (IP57)&lt;/td&gt;
  &lt;/tr&gt;
  
  &lt;tr&gt;
    &lt;th&gt;&lt;a href=&quot;https://www.yaesu.com/jp/business_index/product/sr741/&quot; target=&quot;_blank&quot;&gt;八重洲無線 SR741&lt;/a&gt;&lt;/th&gt;
    &lt;td&gt;248g&lt;/td&gt;
    &lt;td&gt;&lt;strong&gt;16時間&lt;/strong&gt;&lt;/td&gt;
    &lt;td&gt;&lt;strong&gt;IP68&lt;/strong&gt;&lt;/td&gt;
    &lt;td&gt;SSM-10C (IP57)&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;
* 取り扱い説明書にBluetooth使用時にVOX機能が動作するか，明確な記載がなかった．「VOX 動作レベル」の設定の説明項目にBluetooth非対応のマークが無いのでBluetooth対応と読み取れる．&lt;br/&gt;
&lt;!--** 純正マイク使用時のみ機能する旨の記載があるが市販のBluetoothヘッドホンで動作するとの報告がある．&lt;br/&gt;--&gt;
** Bluetooth接続（他は有線）&lt;br/&gt;
***防水性能は本体に準じる
&lt;/p&gt;


&lt;h1&gt;結局&lt;/h1&gt;
&lt;p&gt;
結局どれがいいのだろう？
現状，沢登りに十分耐えうる性能を取説で保証している製品はない．
市販BluetoothヘッドセットでもVOX機能がノイズに反応せずに機能するのかはかなり怪しい．
そうかと思って純正マイクを取り付けようとしてもマイクが本体よりも防水性能が低いものばかり．なんで？
純正のBluetoothマイクヘッドホンはそもそも防水でもない．
どうして無線という極めてアウトドア向きな製品なのに防水性能を軽視するのだろう？
重さや動作時間は僅かな差なので，この表ではKENWOOD TPZ-D563BTが一番ましなのかもしれない．
&lt;/p&gt;





&lt;h1&gt;参考&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;
    アイコムIC-DPR7BTに市販のスマホ用イヤフォンマイクをBluetooth接続してみた！　デジタル簡易無線&lt;br/&gt;
    &lt;a href=&quot;https://www.youtube.com/watch?v=eSWSDAksfsM&quot;&gt;https://www.youtube.com/watch?v=eSWSDAksfsM&lt;/a&gt;&lt;/li&gt;
  
  &lt;li&gt;デジタル簡易無線Bluetoothマイク比較　騒音の中で使ってみた&lt;br/&gt;
    &lt;a href=&quot;https://www.youtube.com/watch?v=7Dl2joqKT54&quot;&gt;https://www.youtube.com/watch?v=7Dl2joqKT54&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6697729465337071220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6697729465337071220'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/05/blog-post.html' title='沢登り用の防水デジタル簡易無線'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-3674163559370406946</id><published>2022-03-29T12:45:00.007+09:00</published><updated>2023-11-10T13:41:02.661+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>diag関数なしで高速な多次元ガウス関数を実装する</title><content type='html'>
&lt;p&gt;
この式で表される多次元ガウス関数をscikit-learnなど使わずに自分で実装したい．
下の通りだけど実装するにあたりWeb上のいろんな解説を見ていると
ガウス関数のPythonコードみたいに何故かexp関数に代入する前にdiag関数を呼んでいる．
なんでdiag関数が必要なのか？これが本当にいい方法なのか？実はこのdiag関数を使うと異常にメモリを消費して計算速度が遅くなる．
今回はそれらを確認してみた．
&lt;/p&gt;

\begin{equation}
\newcommand{\vec}{\boldsymbol}
f(\vec{x}) = \frac{1}{\sqrt{(2\pi)^n \left|\Sigma\right|}}\exp 
	\left \{-\frac{1}{2}{} \vec{d}^T\,{\Sigma}^{-1} \vec{d} \right\},\ \ \vec{d}=\vec{x}-\vec{\mu}
\end{equation}

&lt;pre class=&quot;prettyprint&quot;&gt;
import numpy as np
def gaussian(x,mu,sigma):
    det = np.linalg.det(sigma)
    inv = np.linalg.inv(sigma)
    d = x - mu
    n = x.ndim
    norm = (np.sqrt((2 * np.pi) ** n * det))
    return np.exp(-np.diag(d@inv@d.T)/2.0) / norm
&lt;/pre&gt;

&lt;h2&gt;そもそもの疑問&lt;/h2&gt;
&lt;p&gt;
そもそも何が疑問なのかというと，exp関数の入力はスカラーなのだからnp.diagなんて要らないのでは？というもの．
diag関数は行列が入力されたときに対角成分を出力する関数で例えば次のような行列Aに対してはベクトルが出力になる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
A = np.array([
    [1, 2],
    [3, 4]])
print(np.diag(A))
&lt;/pre&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
[1 4]
&lt;/pre&gt;

&lt;p&gt;
そこでdiagにどのような次元の行列が入力されることになるのかを見てみる．
多次元ガウス関数は入力が多次元なのであって，出力は1次元．
なのでexp関数は，いわゆる高校数学で習う指数関数なので入力も出力も1次元．
指数部分を見ると
&lt;/p&gt; 
&lt;pre class=&quot;prettyprint&quot;&gt;
diff@inv@diff.T
&lt;/pre&gt;
&lt;p&gt;
は数式では$\vec{d}^T\,{\Sigma}^{-1} \vec{d}$．
$\vec{d}=\vec{x}-\vec{\mu}$は$n\times 1$のベクトルどうしの引き算なのでその結果も$n\times 1$のベクトル．
${\Sigma}^{-1}$は分散共分散行列であり$n\times n$の対称行列．
$n\times 1$ベクトルと$n\times n$行列の積は$n\times 1$ベクトル．つまり${\Sigma}^{-1}\vec{d}$は$n\times 1$ベクトル．
それと$\vec{d}^T$の積は，内積そのものだから$\vec{d}^T\,{\Sigma}^{-1} \vec{d}$はスカラーになる．
つまり，行列を入力とするdiag関数なんて不要じゃねーか？というのが疑問．
&lt;/p&gt;

&lt;h2&gt;diag関数の意味&lt;/h2&gt;

&lt;p&gt;
実際にdiag関数はスカラーでは次のようなエラーがでる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
np.diag(100)
&lt;/pre&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
ValueError: Input must be 1- or 2-d.
&lt;/pre&gt;  

&lt;p&gt;
そのため上のガウス関数gaussianはデータ点1つでは正しく動作しない．
やはりdiag関数にスカラーを入力したときと同じエラーがでる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
mu = np.array([10,10])
sigma = np.array([
    [4**2, 2],
    [2, 3**2]])
x = np.array([1,1])
gaussian(x, mu, sigma)
&lt;/pre&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
ValueError: Input must be 1- or 2-d.
&lt;/pre&gt;  

&lt;p&gt;
要するにgaussian関数は，入力のベクトルが多次元というだけでなく，
そのベクトルが多数ある場合のbroadcastを前提とした設計だった．
そこで2次元んベクトルが3つの場合を確認してみる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
x = np.array([
    [1,1],
    [2,2],
    [3,3])
diff@inv@dif.T
&lt;/pre&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
[[12.15 10.8   9.45]
 [10.8   9.6   8.4 ]
 [ 9.45  8.4   7.35]]
&lt;/pre&gt;
&lt;p&gt;
なんと$3\times 3$の行列になってしまう．
gaussian関数の入力が2次元ベクトルのとき結果がスカラーなら，
入力が2次元bベクトル3個分の$3\times 2$行列なら結果は，スカラー3個分の$3\times 1$などになりそうなものだけどそうではなかった．
&lt;/p&gt;

&lt;p&gt;
一体どうなっているか考えてみた．まず$\vec{d}^T\Sigma^{-1}\vec{d}$の部分を成分表示してみる．
&lt;/p&gt;

\begin{eqnarray}
\vec{d}^T\Sigma^{-1}\vec{d} &amp;=&amp; 
\left[
\begin{array}{cc}
d_{11} &amp; d_{12}\\
\end{array}\right]
\left[
\begin{array}{ccc}
\sigma_{11} &amp; \sigma_{21}\\
\sigma_{21} &amp; \sigma_{22}\\
\end{array}\right]
\left[
\begin{array}{c}
d_{11} \\
d_{12} \\
\end{array}\right]
\end{eqnarray}

&lt;p&gt;

&lt;p&gt;
変数の中身はともかくこんな形になっているはず．データ点が3つあれば変数d（つまり数式上の$d^T$）は3行になるので↓のようになるはず．
&lt;/p&gt;
  
&lt;/p&gt;
\begin{eqnarray}
\left[
\begin{array}{cc}
d_{11} &amp; d_{12}\\
d_{21} &amp; d_{22}\\
d_{31} &amp; d_{32}\\
\end{array}\right]
\left[
\begin{array}{cc}
\sigma_{11} &amp; \sigma_{21}\\
\sigma_{21} &amp; \sigma_{22}\\
\end{array}\right]
\left[
\begin{array}{c}
d_{11} &amp; d_{21} &amp; d_{31}\\
d_{12} &amp; d_{22} &amp; d_{32}\\
\end{array}\right]
\end{eqnarray}

&lt;p&gt;
この行列のまま計算すると数式が複雑になりすぎるので成分のみの計算にする．
 左2つのベクトルの積を$\vec{b}=d^T\Sigma^{-1}$とすると，その成分は
&lt;/p&gt;
\begin{eqnarray}
b_{ij} &amp;=&amp;\sum_l d_{il}\,\sigma_{lj}
\end{eqnarray}

&lt;p&gt;
と表せる．これは行列の積の公式そのもの．これを用いて残りも含めてた全体を成分で表示してみる．
$\vec{a}=d^T\Sigma^{-1}\vec{d}=\vec{b}\vec{d}$とすると，
&lt;/p&gt;
\begin{eqnarray}
a_{ij} &amp;=&amp;\sum_k b_{ik}\,d_{jk}\\
       &amp;=&amp;\sum_k \sum_l d_{il}\,\sigma_{lk}\,d_{jk}\label{tensor}\\
\end{eqnarray}
&lt;p&gt;
と表せる．この成分をよく見ると$d_{ik}$の$i$がデータ数に対応する．
最後の式で$d_{il}$と$d_{jk}$とあるけど，もしデータが1つしか無かったら$i=1$の一行だけになりこのとき$d_{1x}$の形の成分しか存在しない．
ということは$i=j=1$に限られることになる．2つ目のデータしかないときは$i=j=2$に限られ，以下同様．
結局$a_{ij}$の対角成分が$d^T\Sigma^{-1}\vec{d}$の結果を表していることになる．
&lt;/p&gt;
\begin{eqnarray}
\left[
\begin{array}{ccc}
a_{11} &amp;  &amp; \\
 &amp; a_{22} &amp; \\
 &amp;  &amp; a_{33}\\
\end{array}\right]
\end{eqnarray}

&lt;p&gt;
だからdiag関数が必要だった．ブロードキャストが原因だった．
&lt;/p&gt;

&lt;h2&gt;diag関数は非効率？&lt;/h2&gt;

&lt;p&gt;
ここまで見てすぐに分かるのは行列$a_{ij}$の対角成分以外は必要ない．
なのにデータが$N$個ある場合，一旦$N\times N$行列が生成されていることになる．
これはデータ数が多いとすぐに破綻するメモリ的にも計算時間的にも無駄が多い．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
def gaussian2(x, mu, sigma):
    det = np.linalg.det(sigma)
    inv = np.linalg.inv(sigma)
    d = x - mu
    n = x.ndim
    norm = np.sqrt((2 * np.pi) ** n * det)
    power = - np.einsum(&#39;il,lk,ik-&gt;i&#39;, d, inv, d) /2.0
    return np.exp(power) / norm
&lt;/pre&gt;  

&lt;p&gt;
einsum関数は，添え字を指定するだけでの行列（テンソル）どおしの必要な積が定義できる関数．
式$\ref{tensor}$の添え字をそのまま記入すればいい．$i=j$なので$j$は$i$に置き換えられている．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
x = np.linspace(0, 40,40)
y = np.linspace(0, 40,40)
X, Y = np.meshgrid(x, y)
XY = np.c_[X.ravel(), Y.ravel()]

mu = np.array([10,10])
sigma = np.array([
    [4**2, 2],
    [2, 3**2]])
&lt;/pre&gt;

&lt;p&gt;
これらのパラメータでgaussianとgaussian2の計算時間をテストしてみた．&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
timeit gaussian(XY, mu, sigma)
&lt;/pre&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
16.5 ms ± 207 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
&lt;/pre&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
timeit gaussian2(XY, mu, sigma)
&lt;/pre&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
198 µs ± 1.29 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
&lt;/pre&gt;

&lt;p&gt;
0.198/16.5=0.012とおよそ100倍のスピード．
loopの回数は自動的に決まるみたい．  
とにかく圧倒的にdiag関数は無駄無駄無駄．&lt;/p&gt;


</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/3674163559370406946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/3674163559370406946'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/03/diag.html' title='diag関数なしで高速な多次元ガウス関数を実装する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-5501514673680526509</id><published>2022-03-23T16:22:00.073+09:00</published><updated>2023-05-08T17:51:39.293+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>二次元ガウス関数の最小二乗法</title><content type='html'>&lt;!--サムネ用画像--&gt;
&lt;img style=&quot;display:none;&quot; alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyOvsvW6VeyTvOxJDDE8HZkPFSyLH7Ti08ANyRaMuNkWG0c3EZv1n0xGd08fkqZ1EyYqCmdnTzeikQhNGFeq_uMXccTs4kzgvpBc6-3WVwQhV7jF7U7B0xmSYF9vtweLEZdcloGyXdfa5-xlZ32KcwdLNEtmhgv4f00e_FVFt1i9ZVjA_4DeJIfwM6Q/s120/gauss_data.png&quot;/&gt;



&lt;p&gt;
共分散行列に全部値が詰まった一般の二次元ガウス関数の最小二乗法の実装メモ．
scikit-learnのsklearn.mixture.GaussianMixtureを用いてEMアルゴリズムにより混合ガウス分布を推定するプログラムのサンプルはあちこちで見かけるけど最小二乗法が意外と無い．
EMアルゴリズムと最小二乗法の違いは，EMアルゴリズムはデータ点$(x_i, y_i)$からガウス分布のパラメータを推定するのに対して，最小二乗法はデータ点$(x_i, y_i, z_i)$からガウス分布のパラメータを推定する部分．
最小二乗法の関数scipy.optimize.leastsqの使い方とか独特なのでちょっと手こずったから忘れないように．
&lt;/p&gt;

&lt;h1&gt;二次元ガウス関数を描画&lt;/h1&gt;
&lt;h2&gt;二次元ガウス関数の定義&lt;/h2&gt;
&lt;p&gt;
まずは肝心のガウス関数．
  ベクトル・行列の表記だけを見ると二次元でも多次元でも同じなので，とりあえず多次元版を載せておく．
&lt;/p&gt;
\begin{equation}
\newcommand{\vec}{\boldsymbol}
f(\vec{x}) = \frac{1}{\sqrt{(2\pi)^n \left|\Sigma\right|}}\exp 
	\left \{-\frac{1}{2}{} (\vec{x}-\vec{\mu})^T\,{\Sigma}^{-1} (\vec{x}-\vec{\mu}) \right\}
\end{equation}

&lt;p&gt;
でもやっぱり成分表記しないとイメージしにくいので二次元版（$n=2$）のために成分も載せておく，
ちなみに$\sigma_{xy}=0$のときは，$x$軸か$y$軸方向にガウス関数が広がりを持っていて，$\sigma_{xy}\neq 0$の時はそれが回転したような形になっている．
 &lt;/p&gt;

\begin{equation}
\vec{\mu}=
\left[
\begin{array}{c}
\mu_x  \\
\mu_y
\end{array}
\right]
,\ \ \ 
\Sigma = \left[
\begin{array}{cc}
\sigma_x^2 &amp; \sigma_{xy} \\
\sigma_{xy} &amp; \sigma_y^2
\end{array}\right]
\end{equation}

&lt;p&gt;
これをPythonコード化したものがこれ↓↓．
leastsqをが最小二乗法の関数．
  「＠」は数学で習う行列とベクトルの積．横ベクトルと縦ベクトルを内積とって左辺の要素を計算するあれ．
A @ Bを別の表記にすればnp.dot(A, B)です．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
&lt;/pre&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
def gaussian(x,mu,sigma):
    det = np.linalg.det(sigma)
    inv = np.linalg.inv(sigma)
    n = x.ndim
    return np.exp(-np.diag((x - mu)@inv@(x - mu).T)/2.0) / (np.sqrt((2 * np.pi) ** n * det))
&lt;/pre&gt;

&lt;h2&gt;二次元ガウス関数の計算&lt;/h2&gt;

&lt;p&gt;
この関数が正しく実装できているか確認するために可視化する．
可視化するためにmeshgridによって$(x,y)$の密な点配列を生成する．
XYは$40\times40=1600\,$個の二次元座標列を$1600\times2$の行列として成形されている．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
x = np.linspace(0, 40,40)
y = np.linspace(0, 40,40)
X, Y = np.meshgrid(x, y)
XY = np.c_[X.ravel(), Y.ravel()]
&lt;/pre&gt;

&lt;p&gt;
これが関数本体の計算部分．
  最初に適当なパラメータ$\vec{\mu}$や$\Sigma$の値を設定している．
  gaussian関数の戻り値Zは，$1600\times1$のベクトルなので，描画用に元の$40\times40$の行列に戻している．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
# パラメータ設定
mu = np.array([25,15])
sigma_x = 8.0
sigma_xy = 3.0
sigma_y = 3.0
sigma = np.array([
    [sigma_x**2, sigma_xy],
    [sigma_xy, sigma_y**2]])

# ガウス関数の計算
Z = gaussian(XY, mu, sigma)
z = Z.reshape(X.shape)

# ガウス関数の計算
max = np.max(Z)
min = np.min(Z)
print(&quot;min: %f, max: %f&quot; % (min, max))
&lt;/pre&gt;

&lt;p&gt;
最大値，最小値の結果は次のとおり．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
min: 0.000000, max: 0.006615
&lt;/pre&gt;


&lt;h2&gt;二次元ガウス関数の描画&lt;/h2&gt;

&lt;p&gt;
ここは普通のグラフの描画と同じなので特に説明の必要はないかも．
x軸，y軸の範囲を[0, 39]しているのは40を最大にすると空白の1画素ができてしまったから．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
fig = plt.figure(figsize = (6, 6))
plt.xlim([0, 39])
plt.ylim([0, 39])
plt.imshow(z, cmap=&quot;jet&quot;, vmin=min, vmax=max)
plt.subplots_adjust(left=0.04, right=1, bottom=0.04, top=1)
plt.savefig(&quot;gauss.png&quot;)
plt.show()
&lt;/pre&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeulkUg-70jL4gNwXtPv5IRA6bw--nQjEnnybcYQuLOywInsYn4twVliNSwqib-f5h6mdcr8cVZMM0G9-0YDYNVcRqdA_yN2k6kXrOKItgP74XWu_h-cpFhCOV4Cp3_WqBq8HzL01HCT-dwxx637xmSWdBwxCYYQf8EVOj9aLeBSMbvHxz_ZlZodR33g/s504/gauss.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;504&quot; data-original-width=&quot;504&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeulkUg-70jL4gNwXtPv5IRA6bw--nQjEnnybcYQuLOywInsYn4twVliNSwqib-f5h6mdcr8cVZMM0G9-0YDYNVcRqdA_yN2k6kXrOKItgP74XWu_h-cpFhCOV4Cp3_WqBq8HzL01HCT-dwxx637xmSWdBwxCYYQf8EVOj9aLeBSMbvHxz_ZlZodR33g/s320/gauss.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;h1&gt;二次元ガウス関数の最小二乗法&lt;/h1&gt;

&lt;h2&gt;データ点の生成&lt;/h2&gt;

&lt;p&gt;
データ点は乱数で生成してみる．素なグリッドでも良い．
$(x,y)$だけ乱数でテータ点$(x_i,y_i)$を生成して，各点に対して$f(x_i,y_i)$を計算してそこに正規分布の誤差を加えてみる．正規分布の分散はかなり小さい値にしないといけない．そもそも，二次元ガウス関数の最大値もかなり小さいので．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
n = 1024*768//2**8
x_rand = np.random.random_sample(n)*40
y_rand = np.random.random_sample(n)*40
xy_rand = np.c_[x_rand.ravel(), y_rand.ravel()]

z_rand = gaussian(xy_rand, mu, sigma)+ np.random.normal(0.0, 0.0001, xy_rand.shape[0])
&lt;/pre&gt;

&lt;p&gt;
ここが可視化部分．分かりやすいように上の画像をα値0.5の半透明な背景としている．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
fig = plt.figure(figsize = (6, 6))
plt.xlim([0, 39])
plt.ylim([0, 39])
plt.imshow(z, cmap=&quot;jet&quot;, alpha=0.5)
plt.scatter(x_rand, y_rand, c = z_rand, cmap=&quot;jet&quot;, edgecolors=&quot;black&quot;)
plt.subplots_adjust(left=0.04, right=1, bottom=0.04, top=1)
plt.savefig(&quot;gauss_data.png&quot;)
&lt;/pre&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyOvsvW6VeyTvOxJDDE8HZkPFSyLH7Ti08ANyRaMuNkWG0c3EZv1n0xGd08fkqZ1EyYqCmdnTzeikQhNGFeq_uMXccTs4kzgvpBc6-3WVwQhV7jF7U7B0xmSYF9vtweLEZdcloGyXdfa5-xlZ32KcwdLNEtmhgv4f00e_FVFt1i9ZVjA_4DeJIfwM6Q/s432/gauss_data.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;432&quot; data-original-width=&quot;432&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyOvsvW6VeyTvOxJDDE8HZkPFSyLH7Ti08ANyRaMuNkWG0c3EZv1n0xGd08fkqZ1EyYqCmdnTzeikQhNGFeq_uMXccTs4kzgvpBc6-3WVwQhV7jF7U7B0xmSYF9vtweLEZdcloGyXdfa5-xlZ32KcwdLNEtmhgv4f00e_FVFt1i9ZVjA_4DeJIfwM6Q/s320/gauss_data.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;最小二乗法&lt;/h2&gt;

&lt;p&gt;
最小二乗法には評価関数を定義しないといけない．
評価関数はデータ$z_i$とデータ点$(x_i,y_i)$でのガウス関数の値$f(x_i, y_i)$の差の二乗和．
ただし，leastsqではLevenberg-Marquardt法が使われているので与える必要があるのは$\epsilon_i = z_i -  f(x_i, y_i)$の部分だけ．
これがn個あるのでxdataにはn$\times$2の行列が，zdataにはn$\times$1の行列が与えられるはず．
paramsは5次元ベクトルで，前の2要素に[$\mu_x, \mu_y$]，後の3要素[$\sigma_x, \sigma_xy, \sigma_y$]が格納されているとする．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
#評価関数定義
def error(params, xdata, zdata):
    mu = params[0:2]
    sigma = np.array([
        [params[2], params[3]],
        [params[3], params[4]]
    ])
    return zdata - gaussian(xdata, mu, sigma)
&lt;/pre&gt;


&lt;p&gt;
最小二乗法のleastsq関数に与えるのは評価関数errorだけでなく初期パラメータx0，データargsを与えないといけない．
初期パラメータは上でテストしたときの値（真値）に適当な誤差2.0と1.5を加えて代入．
データはn$\times$2のxy_randとn$\times$1のz_randを与えてそれぞれxdata，zdataに代入させる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
# パラメータを1次元ベクトル化
mu_init = mu+2
sigma_init = sigma.reshape(4)+1.5
params = np.array(empty(5)
params[0:2] = mu_init
params[2:] = np.array([sigma[0,0], sigma[0, 1], sigma[1, 1]])

# 最小二乗法
results = leastsq(error, x0=params, args = (xy_rand, z_rand))
print(results[0])
&lt;/pre&gt;


&lt;p&gt;
これが結果．&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
[25.04568978 14.93655215 61.81134792 -1.25051091  5.7730626   9.1594342 ]
&lt;/pre&gt;

&lt;p&gt;
分かりにくいので$\vec{\mu}$と$\sigma_x, \sigma_y$に分けて表示してみる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
mu_est = params_est[0:2]
sigma_est = params_est[2:].reshape(2,2)
print(&amp;quot;mu:&amp;quot;)
print(mu_est)
print(&amp;quot;sigma:&amp;quot;)
print(sigma_est)
print(&amp;quot;sigma_x: %f&amp;quot; % np.sqrt(sigma_est[0,0]))
print(&amp;quot;sigma_y; %f&amp;quot; % np.sqrt(sigma_est[1,1]))
&lt;/pre&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
mu:
[25.11389534 14.9731751 ]
sigma:
[[66.22148794  3.23015128]
 [ 3.23015128  9.05173089]]
sigma_x: 8.137659
sigma_y: 3.008609
sigma_xy: 3.230151
&lt;/pre&gt;

&lt;p&gt;
真値は$\vec{\mu}=[25, 15]^T$なの中心位置は大体あってる．
$(\sigma_x, \sigma_{xy}, \sigma_y)=(8.0, 3.0, 3.0)$についてもおおよそ正しい．
&lt;/p&gt;

&lt;h2&gt;描画して確認&lt;/h2&gt;

&lt;p&gt;
ここからは最初の繰り返し．
  求まったパラメータを使って再度ガウス関数を描画するだけ．
  XYだけは使い回せる．ぱっと見近い結果だし問題ないかな．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
param_est = results[0]

# 推定されたパラメータをセットする
mu_est = params_est[0:2].reshape(2)
sigma_est = params_est[2:6].reshape(2,2)

# ガウス関数計算
Z_est = gaussian(XY, mu_est, sigma_est)
z_est = Z_est.reshape(X.shape)

# 描画
fig = plt.figure(figsize = (6, 6))
plt.xlim([0, 39])
plt.ylim([0, 39])
plt.imshow(z_est, cmap=&quot;jet&quot;, vmin=min, vmax=max)
plt.subplots_adjust(left=0.04, right=1, bottom=0.04, top=1)
plt.savefig(&quot;gauss_est.png&quot;)
plt.show()
&lt;/pre&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2mjbgPaIsUyVVyFt7dhJw3ilkEfCw2MHpdBQzg7KFW5lBT3ge4KbhA-_AmanzcsImFl2SH7O80llmOI3fc7qZI2WTgmTPUym-R9O-QOXKay5NafpzTcix1VT0W6tW2LbR_4dsJ2wJ7oIqqm4vj1sugjbOw62dLZsY78-wpxc0aj10xUV0nmgEtzMG4A/s432/gauss_est.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;432&quot; data-original-width=&quot;432&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2mjbgPaIsUyVVyFt7dhJw3ilkEfCw2MHpdBQzg7KFW5lBT3ge4KbhA-_AmanzcsImFl2SH7O80llmOI3fc7qZI2WTgmTPUym-R9O-QOXKay5NafpzTcix1VT0W6tW2LbR_4dsJ2wJ7oIqqm4vj1sugjbOw62dLZsY78-wpxc0aj10xUV0nmgEtzMG4A/s320/gauss_est.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;推定結果の誤差評価&lt;/h2&gt;
&lt;p&gt;
真の分布zと推定されたガウス分布z_estとの差を調べてみる．
これには単純に二つの差の画像を作って二乗和を計算してみる．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
E = np.abs(z_est - z)

fig = plt.figure(figsize = (6, 6))
plt.xlim([0, 39])
plt.ylim([0, 39])
plt.subplots_adjust(left=0.04, right=1, bottom=0.04, top=1)
plt.imshow(E, cmap=&quot;jet&quot;)
&lt;/pre&gt;

&lt;div style=&quot;text-align:center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmIHSTEl78Y9Tdx7NpdvTjIsTE_vXlkpKf063k-UGwsyiRKayZpFsI_iAiPsnrP-TxD8QjcEdL7yLbeSi9HE3WfzPkw10g8hY2zC8ymrZjWlre2PJ2jvSG28UgRLrBZ33UbwoICweYJHSCtd-GFX19uyRadorNCRpGaYPvk0gE4Q3yMMyxtFdg2t93bg/s432/gauss_err.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;432&quot; data-original-width=&quot;432&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmIHSTEl78Y9Tdx7NpdvTjIsTE_vXlkpKf063k-UGwsyiRKayZpFsI_iAiPsnrP-TxD8QjcEdL7yLbeSi9HE3WfzPkw10g8hY2zC8ymrZjWlre2PJ2jvSG28UgRLrBZ33UbwoICweYJHSCtd-GFX19uyRadorNCRpGaYPvk0gE4Q3yMMyxtFdg2t93bg/s320/gauss_err.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
誤差の分布が変な形になっているけど，平均値は1.109483e-05であり，加えた誤差の標準偏差0.0001=(1.0e-04)よりも小さい．なので上手くいったということにしておく．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
e = np.sum(E)/E.size
print(e)
&lt;/pre&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
1.1094833018535245e-05
&lt;/pre&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5501514673680526509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5501514673680526509'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/03/blog-post_23.html' title='二次元ガウス関数の最小二乗法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFyOvsvW6VeyTvOxJDDE8HZkPFSyLH7Ti08ANyRaMuNkWG0c3EZv1n0xGd08fkqZ1EyYqCmdnTzeikQhNGFeq_uMXccTs4kzgvpBc6-3WVwQhV7jF7U7B0xmSYF9vtweLEZdcloGyXdfa5-xlZ32KcwdLNEtmhgv4f00e_FVFt1i9ZVjA_4DeJIfwM6Q/s72-c/gauss_data.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-8919690640989845990</id><published>2022-03-16T12:20:00.175+09:00</published><updated>2022-03-23T11:48:05.183+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computer Vision"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenCV"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>二次元の任意確率密度分布に従う乱数の生成法</title><content type='html'>&lt;!--サムネ用画像非表示--&gt;
&lt;img style=&quot;display: none;&quot; alt=&quot;&quot; width=&quot;120&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjAhn8m6DK3NObHZnWcIKVBYobdxQFpXeihYHwiLpdlr4TWLKIVHLFDZOvxGLpRXDsURGuif8u2AmcUk7t8ssPkqYAzjFtr2nnfUxAbH-BKY3FuCJi58NURRRHJvbfUJ4IdrnFUtxs9SzigdPFeUx5fZovqEOG7cMMWGBKzHwYSrf0Y9o6foCCM3oaSUg=s120&quot;/&gt;

&lt;style&gt;
/*写真の枠を消す*/
.post-body img{
  padding: none !important;
  margin: none !important;
  border:1px solid #ffffff !important;
  background: none !important;
  -moz-box-shadow: 0px 0px 0px transparent !important;
  -webkit-box-shadow: 0px 0px 0px transparent !important;
  box-shadow: 0px 0px 0px transparent !important;
}
&lt;/style&gt;

&lt;p&gt;
二次元の確率密度分布$f(x,y)$が与えられているとする．三次元空間$(x,y,z)$内に一様分布の乱数点$(x_i,y_i,z_i)$を生成し，次式を満たす箇所のみ点$(x_i,y_i)$を残すことで目的の乱数が得られる．一様分布を生成する$z$の範囲は$f(x,y)$の最大値$z_{\rm max}$を用いて$0 \leq z &amp;lt; z_{\rm max}$とすれば，$0\leq z &amp;lt; 1$としたときと等価な乱数が得られる．
&lt;/p&gt;

\begin{eqnarray}
z_i &amp;lt; f(x_i,y_i) 
\end{eqnarray}


&lt;h2&gt;準備&lt;/h2&gt;
&lt;p&gt;
必要なパッケージのimportとよく使う関数を定義しておく．
plt.imshowとplt.savefigで画像を保存しても良かったけど画像サイズが変わってしまうのでcv2.imwriteを使うことにした．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
import cv2
import numpy as np

def jet(img):
    img_norm = np.zeros_like(img)
    cv2.normalize(img, img_norm, 0, 255, cv2.NORM_MINMAX);
    img_jet = cv2.applyColorMap(img_norm.astype(np.uint8), cv2.COLORMAP_JET)
    return img_jet
&lt;/pre&gt;

&lt;h2&gt;確率密度分布を画像で表す&lt;/h2&gt;
&lt;p&gt;
まずは，二次元の確率密度分布$f(x,y)$を画像として表す．
単純な発想では顕著性マップは注視位置の確率分布と考えられるので，適当な画像から顕著性マップ作ってみる．
ここでは結果だけ載せておくけど使用したのはDeepGaze II．入力画像はDeepGaze IIの入力画像サイズに合わせて1024$\times$576を1024$\times$768にしてあるので少し縦に伸びている．
ここでは入力画像も顕著性マップも何でもいいのでこれで良しとする．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
sal = np.load(&quot;keiba_sal.npy&quot;)
norm = np.linalg.norm(sal, axis=None)
sal = sal/norm
cv2.imwrite(&quot;keiba_sal.png&quot;, jet(sal))
&lt;/pre&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhVWjSjxY5FwVCyC3au7i8_N-nschHdnkhWTBy01cXGv28SiHlmF_8MkJiGzVKSGRC4aNrIdIBqbeupoLMdXofwT-LXo4rUj_RH1KxnQ616_03knNbtmszlraxkT5v295RtTW5Hh6r4DCq2r1gjEoZ1glsFbog38f21ONKJiI4zuHidtt1AnijjYJdjNg=s1024&quot;&gt;
  &lt;img alt=&quot;&quot; width=&quot;320&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhVWjSjxY5FwVCyC3au7i8_N-nschHdnkhWTBy01cXGv28SiHlmF_8MkJiGzVKSGRC4aNrIdIBqbeupoLMdXofwT-LXo4rUj_RH1KxnQ616_03knNbtmszlraxkT5v295RtTW5Hh6r4DCq2r1gjEoZ1glsFbog38f21ONKJiI4zuHidtt1AnijjYJdjNg=s320&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjAhn8m6DK3NObHZnWcIKVBYobdxQFpXeihYHwiLpdlr4TWLKIVHLFDZOvxGLpRXDsURGuif8u2AmcUk7t8ssPkqYAzjFtr2nnfUxAbH-BKY3FuCJi58NURRRHJvbfUJ4IdrnFUtxs9SzigdPFeUx5fZovqEOG7cMMWGBKzHwYSrf0Y9o6foCCM3oaSUg=s1024&quot;&gt;
    &lt;img alt=&quot;&quot; width=&quot;320&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEjAhn8m6DK3NObHZnWcIKVBYobdxQFpXeihYHwiLpdlr4TWLKIVHLFDZOvxGLpRXDsURGuif8u2AmcUk7t8ssPkqYAzjFtr2nnfUxAbH-BKY3FuCJi58NURRRHJvbfUJ4IdrnFUtxs9SzigdPFeUx5fZovqEOG7cMMWGBKzHwYSrf0Y9o6foCCM3oaSUg=s320&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;h2&gt;一様乱数の生成&lt;/h2&gt;

&lt;p&gt;
$(x,y,z)$の各変数で独立に一様乱数を発生させれば$(x,y,z)$の一様乱数ができるけど，$(x,y)$に関しては画像の座標なので整数値に限定した．
ここでは10000個の乱数点を発生させる．といっても，x,y,zにそれぞれ座標（乱数列）が代入されるだけ．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
max = np.max(sal)
n = 10000
x = np.random.randint(0,sal.shape[1],n)
y = np.random.randint(0,sal.shape[0],n)
z = np.random.rand(n)*max
&lt;/pre&gt;


&lt;p&gt;
これは結果の確認のためのコード無くても問題ない．画像uniは後で使わない．点かなり多め．．．
&lt;/p&gt;


&lt;pre class=&quot;prettyprint&quot;&gt;
uni = np.zeros(shape = sal.shape, dtype=&quot;int8&quot;)
uni[y,x] = 1
plt.imshow(uni, cmap=&quot;gray&quot;)
plt.axis(&#39;off&#39;);
plt.subplots_adjust(left=0, right=1, bottom=0, top=1)
cv2.imwrite(&quot;uniform.png&quot;, rnd)
&lt;/pre&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiTnwcJ049w6xYpTxW_IbGlOO7S0MGCWsq7Ub7-AxA6M6bbd07cvH19-K4j7rVAOo4Pm2F0PVpSrwZOaqcbfCAtBUuTWG2rNMCkILKnmmfQFJOv4T0v_JWLVJl1TxOtvcVGPD9eVQO3s4CaJR6MH1ShlVexOeGqSsHR3zTv8Cn10EGdzZUtSds8QatMkQ=s1024&quot; style=&quot;display: block; padding: 1em 0; text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiTnwcJ049w6xYpTxW_IbGlOO7S0MGCWsq7Ub7-AxA6M6bbd07cvH19-K4j7rVAOo4Pm2F0PVpSrwZOaqcbfCAtBUuTWG2rNMCkILKnmmfQFJOv4T0v_JWLVJl1TxOtvcVGPD9eVQO3s4CaJR6MH1ShlVexOeGqSsHR3zTv8Cn10EGdzZUtSds8QatMkQ=s320&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;確率分布関数以上の点を削除&lt;/h2&gt;

&lt;p&gt;
この記事の一番肝のコードがこれ．
1行目でrndには画像と同じサイズの中身が0の画像が作製される．int8型にしたのは後でor演算して画像に収めるため．
2行目では，$z &amp;lt; f(x,y) $を満たすとき1，満たさないとき0を，x,yのデータ数（ベクトルの次元数）分だけpntに代入している．
なのでpntはxやyと同じshapeになる．
3行目では，画像rndの各画素$(x,y)$にpntの1か0が代入される．
&lt;/p&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
rnd = np.zeros(shape = sal.shape, dtype=&quot;int8&quot;)
pnt = np.where(z &lt; sal[y,x], 1, 0)
rnd[y,x] = rnd[y,x] | pnt
&lt;/pre&gt;


&lt;p&gt;
左が結果．なんか点が少ない．確かに$z_i &amp;lt; f(x_i,y_i) $を満たす点だけに絞られるので数がかなり減る．$z_{\rm max}$付近の値をとるのは$(x,y)$空間中のごく一部だけ．その他の点は殆ど無駄になる．これがこのアルゴリズムの難点．
nを100倍のn = 10000000にして再実行すると次が得られる．それっぽい結果（右）が得られた．もっと効率の良い方法があると思う．
&lt;/p&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhejQM-FpCDUWp-vHxQkdO4fECJGXTax6V-H9tnYEw4JCReguKpt_N3Ihe2ZQcNEtIAMw_ozAF3EjIrDJydsXB7bWgfT2GGKJFGnhtLJcojzAvNFeAW5z2Do1lBBR10vCJA_BiQOUrj2kwBm0cnxscD09MZo78meSHOmNvO1lltbyLlAbwSPSGk569o9A=s1024&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEhejQM-FpCDUWp-vHxQkdO4fECJGXTax6V-H9tnYEw4JCReguKpt_N3Ihe2ZQcNEtIAMw_ozAF3EjIrDJydsXB7bWgfT2GGKJFGnhtLJcojzAvNFeAW5z2Do1lBBR10vCJA_BiQOUrj2kwBm0cnxscD09MZo78meSHOmNvO1lltbyLlAbwSPSGk569o9A=s320&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgP_nd9qK0vQPl0fM8ulxCA57FxvvULM3axWOzGfDtpnNtIVnndBlMJJCq9BwOQgfY3DIP8fp7FZj7EdP0JczqHC8SDzFA0viVKy82IZdR9CMhzAiRcxZWZ1LDhNIIMPLBYOo8zmtOt3cX8tbyihU_3VS8DZrzPwKadMdHa4uUsWKQBAVY3Cjl9DEH07A=s1024&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1024&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEgP_nd9qK0vQPl0fM8ulxCA57FxvvULM3axWOzGfDtpnNtIVnndBlMJJCq9BwOQgfY3DIP8fp7FZj7EdP0JczqHC8SDzFA0viVKy82IZdR9CMhzAiRcxZWZ1LDhNIIMPLBYOo8zmtOt3cX8tbyihU_3VS8DZrzPwKadMdHa4uUsWKQBAVY3Cjl9DEH07A=s320&quot;/&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8919690640989845990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8919690640989845990'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/03/blog-post.html' title='二次元の任意確率密度分布に従う乱数の生成法'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEjAhn8m6DK3NObHZnWcIKVBYobdxQFpXeihYHwiLpdlr4TWLKIVHLFDZOvxGLpRXDsURGuif8u2AmcUk7t8ssPkqYAzjFtr2nnfUxAbH-BKY3FuCJi58NURRRHJvbfUJ4IdrnFUtxs9SzigdPFeUx5fZovqEOG7cMMWGBKzHwYSrf0Y9o6foCCM3oaSUg=s72-c" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-8591584377656969690</id><published>2022-02-16T12:56:00.009+09:00</published><updated>2022-03-28T18:29:14.342+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Computer Vision"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="拡張現実感"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>視線推定に関するデータセット</title><content type='html'>&lt;h2&gt;RT-GENE&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;
&lt;a href=&quot;https://zenodo.org/record/2529036#.YkFwQOdBxD8&quot;&gt;
  https://zenodo.org/record/2529036#.YkFwQOdBxD8&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://github.com/Tobias-Fischer/rt_gene&quot;&gt;
  https://github.com/Tobias-Fischer/rt_gene&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
  
  

&lt;h2&gt;PARKS-Gaze&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;
&lt;a href=&quot;https://tinyurl.com/2nhpz22b&quot;&gt;
  https://tinyurl.com/2nhpz22b&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;
&lt;a href=&quot;https://dl.acm.org/doi/pdf/10.1145/3490100.3516467&quot;&gt;
  https://dl.acm.org/doi/pdf/10.1145/3490100.3516467&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;Columbia Gaze Dataset&lt;/h2&gt;
&lt;a href=&quot;https://www.cs.columbia.edu/CAVE/databases/columbia_gaze/&quot;&gt;
  https://www.cs.columbia.edu/CAVE/databases/columbia_gaze/&lt;/a&gt;

&lt;h2&gt;Gi4E Database&lt;/h2&gt;
&lt;a href=&quot;https://www.unavarra.es/gi4e/databases/gi4e/&quot;&gt;
  https://www.unavarra.es/gi4e/databases/gi4e/
&lt;/a&gt;

&lt;h2&gt;MPIIGaze&lt;/h2&gt;
&lt;a href=&quot;
https://www.mpi-inf.mpg.de/departments/computer-vision-and-machine-learning/research/gaze-based-human-computer-interaction/appearance-based-gaze-estimation-in-the-wild&quot;&gt;
  https://www.mpi-inf.mpg.de/departments/computer-vision-and-machine-learning/research/gaze-based-human-computer-interaction/appearance-based-gaze-estimation-in-the-wild&lt;/a&gt;

&lt;h2&gt;UT-Visoin Dataset&lt;/h2&gt;
&lt;a href=&quot;https://www.ut-vision.org/datasets/&quot;&gt;
  https://www.ut-vision.org/datasets/&lt;/a&gt;

&lt;h2&gt;EYEDIAP dataset&lt;/h2&gt;
&lt;a href=&quot;https://paperswithcode.com/dataset/eyediap&quot;&gt;
  https://paperswithcode.com/dataset/eyediap&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8591584377656969690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8591584377656969690'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/02/blog-post.html' title='視線推定に関するデータセット'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-184655386938179125</id><published>2022-02-07T19:14:00.006+09:00</published><updated>2022-06-01T01:48:03.504+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラミング"/><category scheme="http://www.blogger.com/atom/ns#" term="問題提起"/><title type='text'>PoweShellでパイプがリアルタイムに動作しない？</title><content type='html'>&lt;p&gt;
パイプは，プロセス間通信の一番簡単な手段だと思う．
 「|」という記号でコマンドを接続するだけで異なるプログラム通しがデータをやり取りできるようになる．
これが便利なのは異なる言語で書かれた既存のプログラムをできるだけ変更せずに接続したい場合に，
 C言語ならprintf/scanf，Pythonならprint/input文を送信側/受信側に追加するだけでプロセス間通信が実現できる．
  この便利な&lt;strong&gt;パイプがWindows上で妙な挙動をする&lt;/strong&gt;ことを発見したので記録しておく．
&lt;/p&gt;

&lt;h1&gt;実験方法&lt;/h1&gt;

&lt;p&gt;
  送信側（sender.py）のプログラムから1秒おきにインクリメントされた数字を標準出力に出力し，
  受信側（receiver.py）ではinput関数により受け取った標準入力を即座に標準出力に出す．
  この2つのプログラムを次のようにパイプでつなぐ．
&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
&gt; python sender.py | python receiver.py
&lt;/pre&gt;

&lt;h2&gt;送信側（sender.py）&lt;/h2&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
import sys
import time

for i in range(5):
    print(i, flush=True)
    print(&amp;quot;sender: &amp;quot;+ str(i), file=sys.stderr, flush=True)
    time.sleep(1)
&lt;/pre&gt;

&lt;h2&gt;受信側（receiver.py）&lt;/h2&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
for i in range(5):
    a = input()
    print(&quot;reciever: &quot;+ a)
&lt;/pre&gt;

&lt;h1&gt;結果&lt;/h1&gt;
&lt;p&gt;
結果は，どちらもパイプを通してデータの受け渡しが出来ているけど，そのタイミングが全然違う．
コマンドプロンプトの場合は送信側が送信し終えたらすぐにパイプを伝って受信側に行き即座に受信側から出力されているけど，
PowerShellの場合は，送信側が終了するまで受信側が動作していない．
&lt;/p&gt;

&lt;h2&gt;コマンドプロンプトの場合&lt;/h2&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
sender: 0
reciever: 0
sender: 1
reciever: 1
sender: 2
reciever: 2
sender: 3
reciever: 3
sender: 4
reciever: 4
&lt;/pre&gt;

&lt;h2&gt;PoweShellの場合&lt;/h2&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;
sender: 0
sender: 1
sender: 2
sender: 3
sender: 4
reciever: 0
reciever: 1
reciever: 2
reciever: 3
reciever: 4
&lt;/pre&gt;

&lt;h1&gt;まとめ&lt;/h1&gt;
&lt;p&gt;
  要するに&lt;strong&gt;PowerShell上だと送信側が終了しないと受信側にデータが受け渡されない&lt;/strong&gt;．
  これってコマンドプロンプトからPowerShellになって退化したってことでしょうか？
  不具合ではなくそういう仕様？今更PowerShellを勉強する気もないのでそれ以上調べずにここで終わることにした．
  そういう仕様だとしてもややこしいので同じ記号にするなよって思う．
  変なシェルを作らずにUnix系のシェルで統一して欲しい．
&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/184655386938179125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/184655386938179125'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2022/02/poweshell.html' title='PoweShellでパイプがリアルタイムに動作しない？'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-5727658417538065163</id><published>2021-11-26T00:11:00.005+09:00</published><updated>2021-11-26T12:35:44.354+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><title type='text'>BC用ザックNorrona lofoten 30Lの詳細</title><content type='html'>&lt;p&gt;
バックカントリー（BC）用のザック（バックパック）どれにしようかと，散々迷って&lt;a href=&quot;https://buaiso.blogspot.com/2021/10/30l.html&quot;&gt;比較用のページ&lt;/a&gt;まで作った挙げ句に，一番格好いい&lt;a href=&quot;https://www.full-marks.com/norrona/item/nr_1050-20.html&quot;&gt;Norrona lofoten 30L&lt;/a&gt;を購入した．
迷った理由は，格好いいのはいいけど，重さと外観くらいでどんな機能があるザックなのか，写真も動画もいまいち出回っていなくて判断つかなかったから．
結論から言うと&lt;strong&gt;買って良かった！&lt;/strong&gt;
最近のザックらしくいろんな便利機能が搭載されたザックだった．
他にも迷う人のためにザックの機能を詳しく紹介したい．
&lt;/p&gt;
&lt;h2&gt;外観&lt;/h2&gt;
&lt;p&gt;
外観はこんな感じ．最近流行りのストラップが全部隠れてツルンとした感じでも，防水袋みたいな感じでもない，&lt;strong&gt;いわゆる昔ながらのザック&lt;/strong&gt;っぽいザック．
ミリタリーっぽくて格好いいけど，ベルトだらけの重そうな感じでもない．持った感じ最近のザックらしく&lt;strong&gt;めちゃくちゃ軽い&lt;/strong&gt;．
逆に耐久性大丈夫かな？と思ってしまう．横向きの二本のベルトがあるからスノーボード固定できるのは明らか．
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjBjL9ESS9GBFbma9VXGBErxSMZiMCgnerfvNlLM1LNubBDOcDsElUcB8JkOvyJyXf6_D6KYyo3tAJO0VO2esUMQljpHKzV6QI3EIAhS8H0MI8uxr2-Jlh_ocXnIQX7jDj3qKcLR1vpTaf/s4032/PXL_20211123_025125984.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjBjL9ESS9GBFbma9VXGBErxSMZiMCgnerfvNlLM1LNubBDOcDsElUcB8JkOvyJyXf6_D6KYyo3tAJO0VO2esUMQljpHKzV6QI3EIAhS8H0MI8uxr2-Jlh_ocXnIQX7jDj3qKcLR1vpTaf/s400/PXL_20211123_025125984.jpg&quot;/&gt;&lt;/a&gt;
 &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihf5Sq2txquEva3ifagin7IDdeLHhKRuoChoyy5y_LzYayDKsCQPQb6ARllNbthkkze9zis34q-dtvw09WUul7vmNlNnPh7s0bgKLS_gTNKJ_0qva2srMDsWUPXiV3BYCuqWIzxziFhzyO/s4032/PXL_20211123_025035456.jpg&quot;&gt;
 &lt;img alt=&quot;&quot; border=&quot;0&quot; heidht=&quot;300&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihf5Sq2txquEva3ifagin7IDdeLHhKRuoChoyy5y_LzYayDKsCQPQb6ARllNbthkkze9zis34q-dtvw09WUul7vmNlNnPh7s0bgKLS_gTNKJ_0qva2srMDsWUPXiV3BYCuqWIzxziFhzyO/s400/PXL_20211123_025035456.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
Norronaやlofotenなどのロゴを見てみよう．正面の上にはnorronaの「おっさんの顔」マークがあって，下には「lofoten 30」の文字．
背中側にも腰あたりに「おっさんの顔」マークがある．右肩のベルトにもNorronaの文字が．文字やマークが控えめな色で格好いい．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh6RM8cAnMPpCUuny-oNW03jPVTFvOWrg9febMfLfq-cx0unowaJoSNuWyaJ3jE58RHHvSmyf2rX75sUKLXmL9wNqYVo65iMc_DtdZrFSAwmomRa2uckKi66BPeFdcMnNvDiNIXbNI9xzD/s4032/PXL_20211123_025137800.jpg&quot; style=&quot;text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh6RM8cAnMPpCUuny-oNW03jPVTFvOWrg9febMfLfq-cx0unowaJoSNuWyaJ3jE58RHHvSmyf2rX75sUKLXmL9wNqYVo65iMc_DtdZrFSAwmomRa2uckKi66BPeFdcMnNvDiNIXbNI9xzD/s400/PXL_20211123_025137800.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvr54ghov2BFJFwPu1LCM3giwAOwlPqvyFA_6QR2fUF2QF2AyzLLmYvVlcqxJlaUmoji7w3ftDRV34OS2ofI_VYQO1MtQOUyvMTtCu7oLi1P3cfIhLm4UqhiV2RFqosUnQKQRBJhXIga_/s4032/PXL_20211123_025142684.jpg&quot; style=&quot;text-align: center; &quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbvr54ghov2BFJFwPu1LCM3giwAOwlPqvyFA_6QR2fUF2QF2AyzLLmYvVlcqxJlaUmoji7w3ftDRV34OS2ofI_VYQO1MtQOUyvMTtCu7oLi1P3cfIhLm4UqhiV2RFqosUnQKQRBJhXIga_/s400/PXL_20211123_025142684.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhivC1Fgs9mSIIouN6dW388WCStRDqbP3FkjoErgEs_goe85TMZD7zJx9bGke-7uZ_XGRcCMzKaxTTjPXZryfET4VdEnNSqDGJAAwR5DiQoJ_urPCenXkIpTw98aiBj8-7cZJzH39Cyr-cw/s4032/PXL_20211123_025205102.jpg&quot; style=&quot;text-align: center; &quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhivC1Fgs9mSIIouN6dW388WCStRDqbP3FkjoErgEs_goe85TMZD7zJx9bGke-7uZ_XGRcCMzKaxTTjPXZryfET4VdEnNSqDGJAAwR5DiQoJ_urPCenXkIpTw98aiBj8-7cZJzH39Cyr-cw/s400/PXL_20211123_025205102.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDTaTtsEkpF-RjQTNGYeb6xkCjowxuhYNPXiV3ycxW3zW6vwLuyDpmIWL1BYzrJAG5hJ__fcyGWRV3kfCBlKtRRmvAN3pptDV4Kvd5vWyai2MdX7OBG3ucN_uYHcJ1KFiJvRKYhtwXLNFC/s4032/PXL_20211123_025210852.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDTaTtsEkpF-RjQTNGYeb6xkCjowxuhYNPXiV3ycxW3zW6vwLuyDpmIWL1BYzrJAG5hJ__fcyGWRV3kfCBlKtRRmvAN3pptDV4Kvd5vWyai2MdX7OBG3ucN_uYHcJ1KFiJvRKYhtwXLNFC/s400/PXL_20211123_025210852.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;大収納スペース&lt;/h2&gt;

&lt;p&gt;
では最も大きな背中側のスペースを見ていこう．
  ファスナーがショルダーストラップの内側にあるので，ショルダーストラップを外さずに背面を開けることができる&lt;strong&gt;背面エントリー仕様&lt;/strong&gt;は，最近のOspreyのBC用ザックと同じ．
ただ形が崩れないように正面側のポケットに毛布を入れているので白い部分がもっこり膨らんでいて，少し狭く見えるかも．
じつはこのタイプの背面がガバーッと開く仕組みはあまり使いやすくないと思ってる．ぎゅーぎゅーに荷物を入れるとファスナーが閉まらなくなるし，空けたときに小物がこぼれ出てしまうから．
ただ，スノーボードを正面に装着すると上から荷物を出し入れしずらくなるので，無いなら無いでまた困る．
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxreXo6rJFt4dhQtqWbU3RMlIbH1W81VpXGzV5Os704P90eqx-p0qeWQqV5V1Q2z2fST1wmV9LCFVnn8FUDCmmBlVF5WEp0VUqt9xUyoaUiJolqblOXcZgaANt8coAwImGYbq8X6nsFYus/s4032/PXL_20211123_025307636.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxreXo6rJFt4dhQtqWbU3RMlIbH1W81VpXGzV5Os704P90eqx-p0qeWQqV5V1Q2z2fST1wmV9LCFVnn8FUDCmmBlVF5WEp0VUqt9xUyoaUiJolqblOXcZgaANt8coAwImGYbq8X6nsFYus/s400/PXL_20211123_025307636.jpg&quot;/&gt;&lt;/a&gt;
    &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh-nzc_zvVzPm5FpNJ__BHCXfBoVf4xgYLbcEzsV473iMSaJF1WkAX7bMbQLbkaKeSdRObk1FWaEHHB1YmmzEtUouQNmpRlKEtOWtFfUwyEOaAoBWzOoBCn4yY7R5sR-5OILBa2Bm_64p3/s4032/PXL_20211123_025334741.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjh-nzc_zvVzPm5FpNJ__BHCXfBoVf4xgYLbcEzsV473iMSaJF1WkAX7bMbQLbkaKeSdRObk1FWaEHHB1YmmzEtUouQNmpRlKEtOWtFfUwyEOaAoBWzOoBCn4yY7R5sR-5OILBa2Bm_64p3/s400/PXL_20211123_025334741.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
毛布のせいで狭く見えているけど，上と下にはこれだけのスペースがある．
ただ，後で紹介する前面側のスペースと仕切りで分け合ってるだけなので荷物の配分を考えないと，
背面側ばかりに荷物を入れすぎると，前面側にはあまり入らなくなると思う．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92LreVJZtMSKr57x4F412fO5agXkTNdUA_0ktJlrFReFDBYR52DmCDx1lDQocG7WVoLW8iBAtMZA98hyphenhyphenj2-PPJLN7nh4c9NrXotMFj15wp3ahMvjbFVueaXCTj25x51I8uT8kGjnH34Ht/s4032/PXL_20211123_025406020.jpg&quot; &gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh92LreVJZtMSKr57x4F412fO5agXkTNdUA_0ktJlrFReFDBYR52DmCDx1lDQocG7WVoLW8iBAtMZA98hyphenhyphenj2-PPJLN7nh4c9NrXotMFj15wp3ahMvjbFVueaXCTj25x51I8uT8kGjnH34Ht/s400/PXL_20211123_025406020.jpg&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAJYg5_myuatxMYrQriyTemo2pVWWED8yrXMVXknsHjFqnkoOlHG1fH8lemzaNatXOkvJCSH_SkfXYVSsP0B8xeasmXRXJlUD5AtBFgrQ1r_KKRqz48DEENPjxic5ZqoygeRBRi0dhxiuz/s4032/PXL_20211123_025528331.jpg&quot;&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAJYg5_myuatxMYrQriyTemo2pVWWED8yrXMVXknsHjFqnkoOlHG1fH8lemzaNatXOkvJCSH_SkfXYVSsP0B8xeasmXRXJlUD5AtBFgrQ1r_KKRqz48DEENPjxic5ZqoygeRBRi0dhxiuz/s400/PXL_20211123_025528331.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
背中側の収納スペースはこれだけではない．ベロンとめくりあげた背面パッドの裏側にもポケットがある．
それも2重になっていてメッシュ状のポケットと，ファスナーで開くともう少し大きなスペースがある．
こんなに細かく分割されていて何に使うんだろう．それと上に脱着可能なプラスチックのクリップがついた輪がある．ハイドレーション用のバッグとか鍵ぶら下げとくのかな？
&lt;/p&gt;

&lt;div style=&quot;text-align: center; &quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ifUe-byNruJNRcscnlCYxAurGHVZRZmz9vkhTEA9B-dce7gKAl2T2iGd511ZdRR38yYv2rbOj0scyrxoEL_xb6kjpxzNyZ40BeOR0ty_l83tlGBDiwAr1XI7ldRGu_2RcDFJ6_QnvZkK/s4032/PXL_20211123_025622667.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ifUe-byNruJNRcscnlCYxAurGHVZRZmz9vkhTEA9B-dce7gKAl2T2iGd511ZdRR38yYv2rbOj0scyrxoEL_xb6kjpxzNyZ40BeOR0ty_l83tlGBDiwAr1XI7ldRGu_2RcDFJ6_QnvZkK/s400/PXL_20211123_025622667.jpg&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijgz13aha9ETvau8sqgf-lePa2Bw0l9cB4z_Jj2pTmwBSm7b7PVig0K9o0R-c3NfICGdYAYm6dTdtxNKg-E5k16HFqECWomLzZvRDOUi9jcz0NrN1Rgum5bwQ3tVFEJ1lvfubPTS7KUMOi/s4032/PXL_20211123_025702840.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijgz13aha9ETvau8sqgf-lePa2Bw0l9cB4z_Jj2pTmwBSm7b7PVig0K9o0R-c3NfICGdYAYm6dTdtxNKg-E5k16HFqECWomLzZvRDOUi9jcz0NrN1Rgum5bwQ3tVFEJ1lvfubPTS7KUMOi/s400/PXL_20211123_025702840.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;前面スペース&lt;/h2&gt;

&lt;p&gt;
前面のスペースはスコップとかプローブ（ゾンデ）を入れるように設計されているらしい．
これは他のBC用のザックでも同じ．こっちもベロンとめくった蓋側の方にファスナーで開くポケットがある．
しかもここにもクリップ付きの細いストラップが見える．
&lt;/p&gt;

&lt;div style=&quot;text-align: center; &quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipTaPaEPuklF4o9B2ksONNFW509BGrZCnoBNVU8sytBq9zpwFARa_5Qcg9nUajQBixOXmIovdm_WE5ObO5PFl6P25S9OzYOrtkzO7vJpqYmF_GEp46hpoFJdnzhm75u85QekIbiOraKI6g/s4032/PXL_20211123_025854613.jpg&quot; &gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipTaPaEPuklF4o9B2ksONNFW509BGrZCnoBNVU8sytBq9zpwFARa_5Qcg9nUajQBixOXmIovdm_WE5ObO5PFl6P25S9OzYOrtkzO7vJpqYmF_GEp46hpoFJdnzhm75u85QekIbiOraKI6g/s400/PXL_20211123_025854613.jpg&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu_rNCV94SL38c38ECib8fbmWhYggWbGciF7T-XXzZ3fgImDBfApplb07BWepUhwYPoo3ejBQyqXq_7P43VMlU11ICnIzJWZu3tnxyahHwarMYSHSI4zNlttEC6LG1li-aza4wFVbfDpi6/s3024/PXL_20211123_025910895.jpg&quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgu_rNCV94SL38c38ECib8fbmWhYggWbGciF7T-XXzZ3fgImDBfApplb07BWepUhwYPoo3ejBQyqXq_7P43VMlU11ICnIzJWZu3tnxyahHwarMYSHSI4zNlttEC6LG1li-aza4wFVbfDpi6/s400/PXL_20211123_025910895.jpg&quot;/&gt;&lt;/a&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMXVMt_07bXy2VLT72SoOtTPdhaVs4oz0IcVQpL6wf9IDlLgPpVDydMqJ3WWRJ-wEb1vyAPfKPvHsygptrchl999riilEp_NHjdu8QqhpQUvJQYeNE_rM_E4AdWRVmHacCzWxRE5N38Qr/s4032/PXL_20211123_025923941.jpg&quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMXVMt_07bXy2VLT72SoOtTPdhaVs4oz0IcVQpL6wf9IDlLgPpVDydMqJ3WWRJ-wEb1vyAPfKPvHsygptrchl999riilEp_NHjdu8QqhpQUvJQYeNE_rM_E4AdWRVmHacCzWxRE5N38Qr/s400/PXL_20211123_025923941.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhos-VwhFouOdcal42TdeN5XXDzCLMO1RiJH1oiT1Jh02wuolJ0Rt5zMUytNr7ZJnZKQr2312c5-8GYPkxov1srSOFo1likOQ-u_b9SM7NjLBXJFLCgZKGRbgCLcyf_8TNyzSqdWGDKzeu/s4032/PXL_20211123_025956409.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; weight=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhos-VwhFouOdcal42TdeN5XXDzCLMO1RiJH1oiT1Jh02wuolJ0Rt5zMUytNr7ZJnZKQr2312c5-8GYPkxov1srSOFo1likOQ-u_b9SM7NjLBXJFLCgZKGRbgCLcyf_8TNyzSqdWGDKzeu/s400/PXL_20211123_025956409.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;上面のスペース&lt;/h2&gt;

&lt;p&gt;
ザックの上面にもファスナーがある．これをあけると底の浅いスペースが現れる．
他社のザックの解説をみてるとここにゴーグルを入れるのが定番らしい．
山を登っているときはサングラスにして，滑るときはゴーグルに変える．さっと出し入することを要求されるような小物を入れるんだろうな．
&lt;/p&gt;

&lt;p&gt;
もう一つ大事な点は，このポケットの上部がマジックテーブで開くようになっていて，大収納スペースに繋がっていること．
これなんのためだろう？マジックテーブで開く穴は小さくて大収納スペースと一体化する訳ではない．
  恐らくここから手を入れて大収納スペースにある小物を取り出すために作られたんじゃないかな？
これは自分の理想に近い！理想のBC用ザックは背面側と上側の両方から大収納スペースにアクセスできること．
あとは巾着タイプだと言うこと無いんだけどな．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8QIgFZgAYOFjmH2H89EEjq1C2pgLU9XmvZh37aFdPR4kbp8-EB5avbFgpFvZy5wcFyLDwaUBZ6qipmR5xxEd73r2v13oTOiYgO0TPIuDotgnczYLLJgA7DflaY4eHrrummyRV1elTCmbE/s4032/PXL_20211123_030022354.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8QIgFZgAYOFjmH2H89EEjq1C2pgLU9XmvZh37aFdPR4kbp8-EB5avbFgpFvZy5wcFyLDwaUBZ6qipmR5xxEd73r2v13oTOiYgO0TPIuDotgnczYLLJgA7DflaY4eHrrummyRV1elTCmbE/s400/PXL_20211123_030022354.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKPnGVfI6IfVftvfpyNFHq_lHOXKaYrRQnryylCbFSMiLIua5YruX4TgvCVPTNK6Vw04KZupMf_YSngVxr2knMUFKLwBzhyj7RfcoFDGvhBpMUIAlYoE_aQ_fYY26Q9pNOk6eMeUumqkOq/s4032/PXL_20211123_030050602.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKPnGVfI6IfVftvfpyNFHq_lHOXKaYrRQnryylCbFSMiLIua5YruX4TgvCVPTNK6Vw04KZupMf_YSngVxr2knMUFKLwBzhyj7RfcoFDGvhBpMUIAlYoE_aQ_fYY26Q9pNOk6eMeUumqkOq/s400/PXL_20211123_030050602.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;底のスペース&lt;/h2&gt;
&lt;p&gt;
底の正面からアクセスできるここは，非常に薄くて小さなスペースで，ここにはヘルメットホルダーネットが入ってる．
無くならないように紐で本体と繋がっている．
&lt;/p&gt;
&lt;div style=&quot;text-align: center; &quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZpZ2iFKJxdgUFQW8Ho19xlnHf-Jzf-d_JWLZKiLpeuEsWrNNT_NDR0dl8xbGgaGMhxN18gwbS1AIpaSu6EaxkCgDIUy8gpS2k6dgixUutsKnddBQgpIQAxwCuVC9NWd1C7rmqQDsQyb2V/s4032/PXL_20211123_030129357.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZpZ2iFKJxdgUFQW8Ho19xlnHf-Jzf-d_JWLZKiLpeuEsWrNNT_NDR0dl8xbGgaGMhxN18gwbS1AIpaSu6EaxkCgDIUy8gpS2k6dgixUutsKnddBQgpIQAxwCuVC9NWd1C7rmqQDsQyb2V/s400/PXL_20211123_030129357.jpg&quot;/&gt;&lt;/a&gt;
  
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdogxBU4wp5eUOBuwpmQGBPRZoHcgRNKi8LvCDc7pL2pgzHAwkTL-EYpL1xN_yO58nwxX4PxEMu7ArKKY9XQ-6zjtJ7gUTRfTDFxBt3mM7SeTYZ20W91191EpEu0ir7UASbWdQV_4qEN0/s4032/PXL_20211123_030349904.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsdogxBU4wp5eUOBuwpmQGBPRZoHcgRNKi8LvCDc7pL2pgzHAwkTL-EYpL1xN_yO58nwxX4PxEMu7ArKKY9XQ-6zjtJ7gUTRfTDFxBt3mM7SeTYZ20W91191EpEu0ir7UASbWdQV_4qEN0/s400/PXL_20211123_030349904.jpg&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
実は，底にはもう一つスペースがある．
これは側面から開く．横からものを出し入れするように作られている．
ここは，ファスナーの仕切りを開ければ，大収納スペースとつながるようになっている．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPvnIkshQ11H678WrodrthbWXq7MRY6Jwve319RV3KMpr-eHy7aGqmx_NL-o_RK02V8_4g0-R2QWtmyPRHCvxCg1Eh72GC6Aqy8LINV8lN7zRbqnJhnvINtN3WoYFdtxZx_Sz4RGqRBBlb/s4032/PXL_20211123_030539374.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPvnIkshQ11H678WrodrthbWXq7MRY6Jwve319RV3KMpr-eHy7aGqmx_NL-o_RK02V8_4g0-R2QWtmyPRHCvxCg1Eh72GC6Aqy8LINV8lN7zRbqnJhnvINtN3WoYFdtxZx_Sz4RGqRBBlb/s400/PXL_20211123_030539374.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;ストラップ・ポケット&lt;/h2&gt;

&lt;p&gt;
最近のザックらしくストラップにもポケットがつけられている．
一つは右肩のストラップ，もう一つは腰のベルト．
腰のベルトは色々便利そうだけど肩のストラップはどういう使い道があるんだろう．
本体の収納から穴でつながってるのでハイドレーション用のチューブを通すためのところってこと？
使わないときはチューブを全部ストラップ内にしまっておくのかな？ハイドレーション使わないのでよく分からないです．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0NQR6a1gqgcrSzBkXXkkFMxYmzWcRJ3M_XhLoFHuKoRRI9k7qMOgdFPwfDBfVLAdlQzJ3xMhyphenhyphenjYVdiVvnIz4jI9O2j0gQbCbHsRDWNbQmyz_4p4QtcH5-Y8STeGjmq-TCAbD7fe-2invX/s4032/PXL_20211123_030615214.jpg&quot;&gt;
  &lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0NQR6a1gqgcrSzBkXXkkFMxYmzWcRJ3M_XhLoFHuKoRRI9k7qMOgdFPwfDBfVLAdlQzJ3xMhyphenhyphenjYVdiVvnIz4jI9O2j0gQbCbHsRDWNbQmyz_4p4QtcH5-Y8STeGjmq-TCAbD7fe-2invX/s400/PXL_20211123_030615214.jpg&quot;/&gt;&lt;/a&gt;
 &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxsDq6Np_TvjVpFbs2fKmc4Pmpj1g7Q-lEs3bLZ6lXlK2gspTAlQ3YwTvYQGdno4KC9GTRy-SjkSGUxLUzT2LtOu9Xec_KcXYzNiE9-6Hjqevq1v74zAxnlissbsoBRB5qGN2G4hS7_Ek_/s4032/PXL_20211123_030653527.jpg&quot;&gt;
   &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxsDq6Np_TvjVpFbs2fKmc4Pmpj1g7Q-lEs3bLZ6lXlK2gspTAlQ3YwTvYQGdno4KC9GTRy-SjkSGUxLUzT2LtOu9Xec_KcXYzNiE9-6Hjqevq1v74zAxnlissbsoBRB5qGN2G4hS7_Ek_/s400/PXL_20211123_030653527.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;細かい機能いろいろ&lt;/h2&gt;

&lt;p&gt;
まずは腰ベルトについているギアループ．Ospreyの「Stow-On-The-Goポールアタッチメント」機能のようにストックを固定するのは無理そう．カラビナとかちょっと掛ける程度かな？
ストックなら普通に後ろにつけることができる．あと，ザック底にある水抜き穴．水が入らなくても空気抜きの穴として使えそう．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtTNlZIfJLk4H_-81zepfOZ76dI9ps7bvIQV1yyyKX7SQhoLng2ZKBNjUR0b7gO5Sxl7ZUfAVb8AJEM3B_nrQcqeisiA-ZEMe6DUTEXk9ox966LRHwaK7gBHPV0VbKOmbS_6Fz6wF3W0cF/s4032/PXL_20211123_031048748.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtTNlZIfJLk4H_-81zepfOZ76dI9ps7bvIQV1yyyKX7SQhoLng2ZKBNjUR0b7gO5Sxl7ZUfAVb8AJEM3B_nrQcqeisiA-ZEMe6DUTEXk9ox966LRHwaK7gBHPV0VbKOmbS_6Fz6wF3W0cF/s400/PXL_20211123_031048748.jpg&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6GcbftAyi8GYEyIUHmoLydImHkMrYRwPuhw55Z-AQhnPBCCp-dd_pTU1HwM6KFp1XPAqyVD3TBNXM8tImFt4Wt1j76Ipz53ChN7TMytoEcvvBUAHaG9yCI9yzwKBq1tiXyoPX5k25o6Ae/s4032/PXL_20211123_031109334.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6GcbftAyi8GYEyIUHmoLydImHkMrYRwPuhw55Z-AQhnPBCCp-dd_pTU1HwM6KFp1XPAqyVD3TBNXM8tImFt4Wt1j76Ipz53ChN7TMytoEcvvBUAHaG9yCI9yzwKBq1tiXyoPX5k25o6Ae/s400/PXL_20211123_031109334.jpg&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
次は，ストラップ．よく見ると，スノボを取り付ける横ストラップの根本がループになっている．これは左右両側にあってアックスを取り付けることができそう．
それと，上下2本の横ストラップの下地は，よく見たら空洞になっている．左右が貫通している．何に使うんだろう？なぞが多い．
&lt;/p&gt;
  
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE4YnDFFKWIpO481XUHq7yBGVSDv03fcPQ6ssI6XMUm7Zcdu4VKD_Qaryi2zBCXK0hvfu0iOUe4w7nn-UUhGrGljvaZj4BGSwLBCANQiruIQeHTi2bhpU2vKqfncIvQjkgq8y3KYkdwwzT/s4032/PXL_20211123_030930228.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;300&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE4YnDFFKWIpO481XUHq7yBGVSDv03fcPQ6ssI6XMUm7Zcdu4VKD_Qaryi2zBCXK0hvfu0iOUe4w7nn-UUhGrGljvaZj4BGSwLBCANQiruIQeHTi2bhpU2vKqfncIvQjkgq8y3KYkdwwzT/s400/PXL_20211123_030930228.jpg&quot;/&gt;&lt;/a&gt;
  
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfdn8y7R50RWPuG4hin1Dp-szGFcHjeaa6sUAKRqJKogsY-oZn56gcDHqi1cku1OoLzGhJI8oqOl5_rhSiVjn9gebiXbZS8dgh2eWjOKCnQV8gEt7U1cww9q3UjqjXtHvjDn3x7BaXM6l/s4032/PXL_20211123_030834020.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfdn8y7R50RWPuG4hin1Dp-szGFcHjeaa6sUAKRqJKogsY-oZn56gcDHqi1cku1OoLzGhJI8oqOl5_rhSiVjn9gebiXbZS8dgh2eWjOKCnQV8gEt7U1cww9q3UjqjXtHvjDn3x7BaXM6l/s400/PXL_20211123_030834020.jpg&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
これは一番最初に紹介すべき機能かもしれないけど，スノボを固定する横ストラップのクリップ部分をよく見るとストラップが滑って緩んでしまわないようにロックする機能がある．
左がロック時で右がオープン時．重いスノボやスキーを固定するためなのでこのロック機能は横ストラップとスキー固定用の上ストラップにしかない．
と思ったらショルダーストラップの下部にもあった．いる？
&lt;/p&gt;  


&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitmpgnan4TRRFMMroD2f19UDb-CBwzMXq9acPKX7PXS_FhSph7RdG-42nb78U-hkMwWqs7PAw7vEsyMQFGFBOdKL_AC0iNGSOz0s-c3KY6vXtNKjPKdqyybZo0Vebp_peCU4jon69Zzw6X/s4032/PXL_20211123_030918947.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitmpgnan4TRRFMMroD2f19UDb-CBwzMXq9acPKX7PXS_FhSph7RdG-42nb78U-hkMwWqs7PAw7vEsyMQFGFBOdKL_AC0iNGSOz0s-c3KY6vXtNKjPKdqyybZo0Vebp_peCU4jon69Zzw6X/s400/PXL_20211123_030918947.jpg&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEcQ5gY7pFDBuEGoZaN057ontPm3seEd8XXtI0yOe5XicfKjJOj7o063hT7QGN1_x7DAjw9b8TO2gLh_hsKfVTjnSt9WDcI-1wFdSwZBHAvHguF6x31IqMVEypQJYXXkWQrMSR2kKXcGng/s4032/PXL_20211123_030912952.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEcQ5gY7pFDBuEGoZaN057ontPm3seEd8XXtI0yOe5XicfKjJOj7o063hT7QGN1_x7DAjw9b8TO2gLh_hsKfVTjnSt9WDcI-1wFdSwZBHAvHguF6x31IqMVEypQJYXXkWQrMSR2kKXcGng/s400/PXL_20211123_030912952.jpg&quot;/&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;
まだあります．胸のストラップのクリップ部分．変な突起があると思ったらなんと笛でした．なるほど．．．非常時にこの笛の存在を思い出すかな？．．必要以上に機能満載のザックに驚きでしたが，謎なのはどうしてこれをもっとアピールする動画とかページとか作らないのだろう．．．英語サイトですらほとんど詳細が紹介されていない．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnAK3LnGuVB-I9BpvQnZUSE0NAg-RQf2D5gG6cbUaVCK3nuqvqQVMJykYmvhHiXxc7x-i2lfwUW5S_EBAm05GS2MIkGup8CHzTxRA-RtxeaShi0edbHbuazNM4AW-tFVniRtsK94MNn5x/s4032/PXL_20211125_145345148.PORTRAIT.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;400&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhnAK3LnGuVB-I9BpvQnZUSE0NAg-RQf2D5gG6cbUaVCK3nuqvqQVMJykYmvhHiXxc7x-i2lfwUW5S_EBAm05GS2MIkGup8CHzTxRA-RtxeaShi0edbHbuazNM4AW-tFVniRtsK94MNn5x/s400/PXL_20211125_145345148.PORTRAIT.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;福神漬け？&lt;/h2&gt;

&lt;p&gt;
最後にこの部分をアップ示して終わります．
緑ばかりじゃつまんないので赤いストラップがアクセントになってるというか．
カレーライスに添えられた福神漬けと言ったところでしょうか．ミリタリー系のザックとの違いかな？
&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIPfLj5bPz3w7fmZ13afNjAK9IxtDYyO247_riQuuVxjSV81tH6oC4t_OQmcnv7qyoSlATNzwz_DmJE3srcAaK1eBuq0k3nZtAGYcxPxjQt0zWNmjIpRuWiEMQGvmbrwW0PLv3Vy4oXBS/s4032/PXL_20211123_031020331.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;400&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirIPfLj5bPz3w7fmZ13afNjAK9IxtDYyO247_riQuuVxjSV81tH6oC4t_OQmcnv7qyoSlATNzwz_DmJE3srcAaK1eBuq0k3nZtAGYcxPxjQt0zWNmjIpRuWiEMQGvmbrwW0PLv3Vy4oXBS/s400/PXL_20211123_031020331.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5727658417538065163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/5727658417538065163'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/11/bcnorrona-lofoten-30l.html' title='BC用ザックNorrona lofoten 30Lの詳細'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjBjL9ESS9GBFbma9VXGBErxSMZiMCgnerfvNlLM1LNubBDOcDsElUcB8JkOvyJyXf6_D6KYyo3tAJO0VO2esUMQljpHKzV6QI3EIAhS8H0MI8uxr2-Jlh_ocXnIQX7jDj3qKcLR1vpTaf/s72-c/PXL_20211123_025125984.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-635094756679311266</id><published>2021-10-26T13:41:00.006+09:00</published><updated>2021-11-08T09:31:07.438+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="実話"/><title type='text'>バックカントリー用の30Lザック</title><content type='html'>&lt;style&gt;
  .array{
   display: flex;
   flex-wrap: wrap;
   width: 100%;
}
.item{
   width: calc((100% - 20px) / 4.0);
   height: calc((100% - 20px) / 3.0);
   margin: 10px 10px;
   text-align: center;
}
&lt;/style&gt;
&lt;p&gt;
バックカントリー用の30L±5Lのザック（バックパック）をまとめてみた．
ザックの容量はザック名中の数字で表されていてリットル単位．
  こうやってみると&lt;strong&gt;Burton Day Hiker 28L&lt;/strong&gt;が体積あたりの重量が圧倒的に軽く，次に&lt;strong&gt;Osprey Soelden32&lt;/strong&gt;が続く．
&lt;/p&gt;
 
&lt;div class=&quot;array&quot;&gt;
&lt;div class=&quot;item&quot;&gt;
    &lt;th&gt;&lt;a href=&quot;https://www.burton.com/jp/ja/p/burton-ak-japan-guide-32l-backpack/W21JP-220451.html?regionSelector=true&quot;  target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://www.burton.com/static/product/W21/22045100001_1.png?impolicy=bglt&amp;imwidth=486&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      Burton [ak] Japan Guide 35L&lt;/a&gt;&lt;br/&gt;
    (1400g - 40.00g/L)
&lt;/div&gt;


&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;http://northfeel.co.jp/shopdetail/000000006944/&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://www.burton.com/static/product/W22/22800100001_1.png?impolicy=bglt&amp;imwidth=486&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      Burton Sidehill 25L&lt;/a&gt;&lt;br/&gt;
    (1580g - 63.2g/L)
&lt;/div&gt;

&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.burton.com/jp/ja/p/burton-day-hiker-28l-backpack/W22JP-152851.html&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://www.burton.com/static/product/W22/15285104020_1.png?impolicy=bglt&amp;imwidth=486&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      Burton Day Hiker 28L&lt;/a&gt;&lt;br/&gt;
    (720g - 25.71g/L)
&lt;/div&gt;
  
&lt;div class=&quot;item&quot;&gt;
      &lt;th&gt;&lt;a href=&quot;https://www.osprey.com/jp/en/product/soelden-32-SOELDEN32F20.html&quot;&gt;
      &lt;img src=&quot;https://www.osprey.com/images/product/hero/soelden32f20_f20_side_black.jpg&quot; width=&quot;100%&quot;/&gt;
        &lt;br/&gt;
        Osprey Soelden32&lt;/a&gt;&lt;br/&gt;
    (1150g - 35.93g/L)
&lt;/div&gt;

&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.osprey.com/jp/en/product/kamber-30-KAMBER30F21_625.html&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://www.osprey.com/images/product/hero/kamber30f21_f21_side_black.jpg&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      Osprey Kamber32&lt;/a&gt;&lt;br/&gt;
    (1546g - 48.31g/L)
&lt;/div&gt;
  

  
&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.mammut.jp/items/2560-00071&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://mammt.store-image.jp/img01/301/2560-00071/w_750.h_750/trim_fce_item5f2fbead39ddb.jpg&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      Mammut Nirvana 30&lt;/a&gt;&lt;br/&gt;
    (1350g - 45.00g/L)
  &lt;/div&gt;  
  
&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.goldwin.co.jp/ap/item/i/m/NM61952&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://itemimg.goldwin.co.jp/itemimg/GDW01/A0GDW0000B23/02_J359.jpg&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      North Face CHUGACH 35&lt;/a&gt;&lt;br/&gt;
     (1580g - 45.14g/L)
&lt;/div&gt;

&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.norrona.com/en-GB/products/lofoten/lofoten-30l-ski-pack/&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://res.cloudinary.com/norrona/image/upload/b_rgb:f5f5f5,c_pad,d_imgmissing.jpg,fl_progressive.lossy,w_421,h_421,q_auto,bo_66.48px_solid_rgb:f5f5f5/v1598256678/1050203301.jpg&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      Norrona Lofoten 30L Pack&lt;/a&gt;&lt;br/&gt;
     (1412g - 47.06g/L)
&lt;/div&gt;

&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.full-marks.com/plusoneworks/item/new-shumari-35.html&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://www.full-marks.com/cms/wp-content/uploads/2020/01/shumari35_olive.jpg&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      PlusOneWorks New Shumari35&lt;/a&gt;&lt;br/&gt;
     (1890g - 54.00g/L)
&lt;/div&gt;
  
&lt;div class=&quot;item&quot;&gt;
      &lt;a href=&quot;https://www.full-marks.com/plusoneworks/item/shumari-35.html&quot; target=&quot;_blank&quot;&gt;
      &lt;img src=&quot;https://www.full-marks.com/cms/wp-content/uploads/2020/01/shumari35_grasshopper_main.jpg&quot; width=&quot;100%&quot;/&gt;
      &lt;br/&gt;
      PlusOneWorks Shumari35&lt;/a&gt;&lt;br/&gt;
     (1700g - 48.57g/L)
&lt;/div&gt;
    
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/635094756679311266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/635094756679311266'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/10/30l.html' title='バックカントリー用の30Lザック'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-8257112252276179387</id><published>2021-10-20T17:01:00.005+09:00</published><updated>2021-10-20T17:13:57.529+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="生活術"/><category scheme="http://www.blogger.com/atom/ns#" term="魚突き"/><title type='text'>【魚突き】サメ対策</title><content type='html'>&lt;p&gt;
魚突きをしているとサメが怖い．サメの特性や対策グッズの情報をメモ．
&lt;/p&gt;

&lt;h2&gt;サメの攻撃パターンが分かる動画&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/pTbzvl4WMow&quot;&gt;https://youtu.be/pTbzvl4WMow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/0KYbIiApB5E&quot;&gt;https://youtu.be/0KYbIiApB5E&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/Ie6mBx914W0&quot;&gt;https://youtu.be/Ie6mBx914W0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/27vTyLRp01I&quot;&gt;https://youtu.be/27vTyLRp01I&lt;/a&gt;&lt;/li&gt;
  
  

&lt;/ul&gt;

&lt;h2&gt;サメの対策法・グッズ&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://k-ing.ne.jp/pro_line/07com.html&quot;&gt;NO SHARK&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://k-ing.ne.jp/pro_line/07com.html&quot;&gt;SHARK BANZ&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://k-ing.ne.jp/pro_line/07com.html&quot;&gt;シャークシールド&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;https://natgeo.nikkeibp.co.jp/nng/article/news/14/8186/&quot;&gt;サメが嫌がる模様のウェットスーツ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
その他の海洋危険生物&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
お魚判定アプリ「魚みっけ」 by &lt;a href=&quot;http://zukan.com/&quot;&gt;http://zukan.com/&lt;/a&gt;&lt;br /&gt;
[Android] &lt;a href=&quot;https://play.google.com/store/apps/details?id=air.com.zukan.fishsearch&amp;amp;hl=ja&quot;&gt;
https://play.google.com/store/apps/details?id=air.com.zukan.fishsearch&amp;amp;hl=ja&lt;/a&gt; &lt;br /&gt;
[iOS]  &lt;a href=&quot;https://itunes.apple.com/jp/app/yumikke-hua-xiang-ren-shiniyoruo/id861115577?mt=8&quot;&gt;
https://itunes.apple.com/jp/app/yumikke-hua-xiang-ren-shiniyoruo/id861115577?mt=8&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;
WEB魚図鑑&lt;br /&gt;
&lt;a href=&quot;http://zukan.com/fish/&quot;&gt;http://zukan.com/fish/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
大型クラゲ出現情報&lt;br /&gt;
&lt;a href=&quot;http://www.jafic.or.jp/kurage/&quot;&gt;http://www.jafic.or.jp/kurage/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8257112252276179387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/8257112252276179387'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/10/blog-post_20.html' title='【魚突き】サメ対策'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-771317517132514982</id><published>2021-10-02T00:57:00.003+09:00</published><updated>2021-10-03T01:28:10.017+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="問題提起"/><category scheme="http://www.blogger.com/atom/ns#" term="実話"/><category scheme="http://www.blogger.com/atom/ns#" term="魚突き"/><title type='text'>【魚突き】密漁と遊漁の境界</title><content type='html'>&lt;h1&gt;魚突きは大切な遊び&lt;/h1&gt;
&lt;p&gt;
日本の豊かな自然を感じる機会を得ることは，自然を畏れ敬ってきた日本人にとって大切な行為だと思う．
予め準備された有限種の効果音や場面で構成されるテレビゲームから得られる刺激とは異なり，
無限の情報を含む自然と触れ合うことで得られる教師信号は子供時代の人の脳を効果的に学習させるに違いないし，
人工物が一切ない自然の姿は1万年前の縄文時代から変わらぬ普遍的なものを見せてくれるはずだ．
魚突きをするということは，単にスーパーで買えば数百円の魚をタダでゲットできるという低俗な行為ではない．
危険な磯で魚と共に泳ぎ，生き物を殺して食べるという狩猟採集時代の当たり前の行為を通して，
人とは何か，命の大切さ，自然の恐ろしさを知る事ができる遊びだと思う．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpUi1fn3HHDMaYgGvq6ZVxQW1BtQPCZanG7tw0q2HDKrbuIENV-uAZJwIV1hMxi7QWpRKT3-46ehreoa644KwyjwMaDvWeqFpC1p7TbwWQkm8Up0wLgO7dvE5MXgIjPLRdha8xJbduuu7/s844/Clipboard01.jpg&quot;&gt;&lt;img alt=&quot;&quot; width=&quot;640&quot; data-original-height=&quot;476&quot; data-original-width=&quot;844&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpUi1fn3HHDMaYgGvq6ZVxQW1BtQPCZanG7tw0q2HDKrbuIENV-uAZJwIV1hMxi7QWpRKT3-46ehreoa644KwyjwMaDvWeqFpC1p7TbwWQkm8Up0wLgO7dvE5MXgIjPLRdha8xJbduuu7/s320/Clipboard01.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h1&gt;魚突きは違法なの？&lt;/h1&gt;

&lt;p&gt;
魚突きなんか全くやった事ない人に，魚突きの話をするとすぐに連想されるキーワードは芸人よゐこ濱口「とったどー」という雄叫びと「密漁」というキーワード．
何で密漁のイメージが付いてしまうのかは不思議だ．
ただ実際に都道府県によっては魚突きが禁止されている県も多く，その県でやると密漁ということになる．
自分の場合は，そもそも各県の条例で魚突きが禁止されている事すら知らずに大人になり，
ある日，魚突きをする海水浴客が多い浜辺でなんの躊躇もなく突いた魚とタコの写真をFacebookに掲載したところ，
友人からそんなもの公開したら海上保安庁に逮捕されるよと注意を受けたことから，条例の存在を知った．
&lt;/p&gt;

&lt;p&gt;
それでも，そんなの大丈夫でしょ．よっぽど酷い密漁目的の人だけが咎められるだけでしょ？と思って，海水浴場で魚突きを続けていた．
ある日，漁師が船を寄せてきて「取っているものを見せろ！」と怒鳴ってきて「海上保安庁を呼ぶぞ」とか「こんな所で泳ぐな」とか言われた．
これをきっかけに，さすがに「泳ぐな」と言われる筋合いはないだろう，法律を知らないと反論できないと思い，初めて法律がどうなっているのか興味を持ち始めた．
最初は，ネットの記事なんかを読みあさっていたけど，曖昧なことばかりで結局どこまで良くてどこからがダメなのか良くわからない．
結局は地元の漁業協同組合に確認をとった方がいいと書いてある．
条例で定められているなら県庁に聞けばいいはずと思って，県の水産課に問い合わせても「条例では〇〇ですが，地元の漁業協同組合に確認とって下さい」と言われた．
&lt;/p&gt;

&lt;p&gt;
はぁ？何で違法かどうかが漁業協同組合の一存で決まるのか？明文化された法律はないのか？日本は法治国家じゃなくて漁師さんの機嫌で密漁者扱いされてしまうのか？
さっぱり分からなかった．そこでちゃんと条例を読んでみよう．読んで理解した事をここにメモしておこうとなった．
更に，魚突きをしていて海上保安庁職員と話したときに教わった事も非常に有益なのでここにまとめておこうと思う．
大丈夫！&lt;strong&gt;条例で許可されている県では，魚突きは合法です．&lt;/strong&gt;
&lt;/p&gt;

&lt;h1&gt;遊漁と密漁との境界線&lt;/h1&gt;

&lt;h2&gt;まず「漁業権」の意味を知ろう&lt;/h2&gt;

&lt;p&gt;
まず，大原則として海には所有権はないことを知っておこう．
  これが法的に確定したのが割と最近の&lt;a href=&quot;https://www.courts.go.jp/app/hanrei_jp/detail2?id=52661&quot;&gt;最高裁昭和61年12月16日判決&lt;/a&gt;で，次の判決文は海に所有権は無いことを言っている．
&lt;/p&gt;

&lt;blockquote&gt; 
海は、古来より自然の状態のままで一般公衆の共同使用に供されてきたところのいわゆる公共用物であつて、
国の直接の公法的支配管理に服し、特定人による排他的支配の許されないものであるから、
そのままの状態においては、所有権の客体たる土地に当たらないというべきである
&lt;/blockquote&gt; 
  
&lt;p&gt;
多くの漁師さんはこの事実すら理解していないのがトラブルの原因の一つでもある．
  ある海の特定の領域で漁業をするための権利（&lt;strong&gt;漁業権&lt;/strong&gt;）が，県知事から各地域の漁業協同組合に付与されているだけ．
つまり，海は国民の共有財産なのである．
&lt;/p&gt;

&lt;p&gt;
しかも漁業権が設定されているのは，沿岸の特定の領域だけで，沿岸であっても漁業権が設定されていない海域もある．
  どこにどのような漁業権が設定されているかは，海洋状況表示システム「&lt;a href=&quot;https://www.msil.go.jp/msil/Htm/main.html?Lang=0&quot;&gt;海しる&lt;/a&gt;」で確認することができる．
ただし，これを見ると無人島であろうが沿岸という沿岸は，ほとんどすべて漁業権が設定されていることが分かる．
&lt;/p&gt;

&lt;p&gt;
とはいえ，これらを見ると，なぜ魚突きが密漁などと言われるのか？どういう方法だと違法になるのか？違法じゃない県でも漁師に違法だと言われたりするのか？
などの疑問をネットで探しても曖昧な説明しか見当たらないの理由が理解できる．
そもそも昭和61年まで海の所有権が法的に曖昧なままで，その事実や漁業権という言葉の意味すらまだまだ一般人どころか漁師さんにすら理解されていないということが原因だったのだ．
&lt;/p&gt;

&lt;h2&gt;漁業調整規則を見よ！&lt;/h2&gt;


&lt;p&gt;
  魚突きにどんな道具を使っていいのかは&lt;strong&gt;漁業調整規則&lt;/strong&gt;を見れば分かる．
  漁業調整規則は，基本的には漁業権を持つ人（漁師さん）の漁法を制限する規則だけど，漁業権を持たない人の漁（&lt;strong&gt;遊漁&lt;/strong&gt;）の事も書いてある．
各県の漁業調整規則は「漁業調整規則　大阪府」などのように検索すれば簡単に見つかる．
この漁業調整規則を全部読むのは頭が痛くなるという人も少なくないだろう．
そんな人におすすめなのは，漁業調整規則の「遊漁」に関する部分のみを読んで見ること．
  県別（関西のみ）に分けてまとめたものが&lt;a href=&quot;https://buaiso.blogspot.com/2021/07/blog-post.html&quot;&gt;こちら&lt;/a&gt;． 
この中で福井県のものがこれになる．「漁具漁法の制限」つまり使っていい道具と悪い道具が書かれている．
&lt;/p&gt;

&lt;blockquote&gt; 
（遊漁者等の漁具漁法の制限）
第四十八条　漁業者が漁業を営むためにする場合もしくは漁業従事者が漁業者のために従事してする場合または試験研究のためにする場合を除き、水産動植物を採捕する場合は、次に掲げる漁具または漁法によらなければならない。&lt;br/&gt;
一　さおづりおよび手づり（まきえづりを除く。）&lt;br/&gt;
二　たも網またはさ手網&lt;br/&gt;
三　投網（船を使用しないものに限る。）&lt;br/&gt;
四　やす、は具&lt;br/&gt;
五　徒手採捕（照明器具を使用しないものに限る。）&lt;br/&gt;
&lt;/blockquote&gt; 

&lt;p&gt;
とある．「次に掲げる漁具または漁法によらなければならない」として挙げられら道具に「やす」があるから「やす」はOKということになる．
もっと簡単なのが水産庁がまとめている&lt;a href=&quot;https://www.jfa.maff.go.jp/j/yugyo/y_kisei/kisoku/todo_huken/&quot;&gt;このページ&lt;/a&gt;．
使える道具の比較が表でまとめられている．
&lt;/p&gt;

&lt;h2&gt;「やす」と「もり」は別物？&lt;/h2&gt;

&lt;p&gt;
これらを見てもイマイチ言葉の定義の範囲が定まらなくて，結局自分の道具がOKなのかどうか分からない場合がある．
ただ，単語の解釈の話になるともはや県別の運用（定められた規則をどのように使っていくか）方針の違いになってくる．
&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;
漁業調整規則には「やす」とあるけど，魚突きに使う道具で似たような言葉として「銛（もり）」がある．
「手銛」という言葉もある．語源を考え出しても意味がないかもしれないが「やす」はいわゆる「手銛」の意味で使われており，
「もり」は発射してくじらを捕まえるようなものをイメージして使い分けられているっぽい．
&lt;/p&gt;

&lt;p&gt;
例えば，広島県水産課「&lt;a href=&quot;https://www.pref.hiroshima.lg.jp/soshiki/88/yasunosiyou.html&quot;&gt;「やす」の使用について！&lt;/a&gt;」のページでは，
もりとやすを区別しており，３つ又の銛先の棒にゴムがついたものが「やす」，水中銃や銛先が外れるチョッキを用いたやすは「もり」に該当して使用不可と明記されている．
一方，京都府「&lt;a href=&quot;http://www.pref.kyoto.jp/suiji/ippangyogugyohou.html&quot;&gt;一般の方が出来る漁具・漁法&lt;/a&gt;」のページでは，
「もり」と「やす」を区別しておらず，ゴムがついた「やす」でも手から離さないように使用すればOKとある．
高知県漁業管理課の「&lt;a href=&quot;https://www.pref.kochi.lg.jp/soshiki/040301/2020092800089.html&quot;&gt;遊漁者の漁具・漁法&lt;/a&gt;」のページ中に掲載されている「遊漁者による「やす」の使用について」では，「ゴムを手で引き伸ばし、その反発力のみで発射するもの」を明確に認めている．
  一方，ゴムを使っていても引き金を用いる物（水中銃）は認めていない．柄を手から離す云々の記述はなく全く問題なさそうだ．
&lt;/p&gt;

&lt;p&gt;
  以上のように同じ「やす」でも微妙に解釈が異なる．
  海上保安庁の方の説明によると，このような解釈の曖昧性が残る細かい部分でいきなり逮捕されたりすることはないとのこと．
  共通して言えるのは&lt;strong&gt;水中銃は明確にダメ&lt;/strong&gt;だということ．
  日本のダイビングショップやネットショップで販売されているが漁業権を獲得しなければ&lt;strong&gt;水中銃が国内で使える場所はない&lt;/strong&gt;．
&lt;/p&gt;

&lt;h2&gt;タコは違法，イカはOK&lt;/h2&gt;

&lt;p&gt;
では，採ってはいけないものはなんだろう？大抵の場合，「貝や海藻などの採取禁止」などと書かれており「など」に何が含まれるのかが分からない．
漁業調整規則とか法律とか細かい事は苦手という人でも簡単な見分け方がある．
ざっくり言うと，&lt;strong&gt;地面にくっついているものは駄目で，海中を泳いでるものはOK&lt;/strong&gt;ということ．
だから，地面にへばりつくタコは摂ってはいけない．一見よく似た生物であるイカは泳いでいるからOKということになる．
他にも，地面にくっついている生物として，貝，伊勢エビ，海藻などは基本的に駄目．
とはいえ，地面にへばりついているカサゴなんかは，魚扱いでOK．この辺りは屁理屈だけどしょうがない．．
&lt;/p&gt;

&lt;h2&gt;漁業権の侵害は「親告罪」&lt;/h2&gt;

&lt;p&gt;
これも海上保安庁の方から教えてもらった大事なこと．
漁業権の侵害は「親告罪」．親告罪とは告訴がなければ公訴を提起することができない犯罪のことで，
要するに漁師さんが裁判所に告訴して初めて，犯罪が成立して被告になる．
裁判所が有罪と判決すれば犯罪者になるということ．
だから，海上保安庁が密漁している人を見つけても，まずその海域の漁業権をもつ漁業協同組合に連絡し，告訴しますか？と聞いてから組合が告訴すると言わなければ犯罪にならない．
逆に言うと漁師さんと仲良くなったり，渡し船等でそれなりの料金を払っていれば告訴されることはないので，そもそも犯罪にならないということ．
&lt;/p&gt;

&lt;h2&gt;法改正で密漁が懲役刑も&lt;/h2&gt;

&lt;p&gt;
さて，密漁と遊漁の境界を明確にすべく微妙な部分ばかり話して来たが，
その境界を大幅に超えてしまうと飲酒運転よりも厳しい罰が待っている．  
特に，平成30年（令和2年12月1日施行）の法改正で密猟行為が厳罰化された．これにより
&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;「特定水産動植物」に指定されるアワビ、ナマコ、シラスウナギを無許可で採ると3年以下の懲役又は3,000万円以下の罰金&lt;/li&gt;
  &lt;li&gt;指定されていないものでも貝やウニ，海藻などを採ると１００万円以下の罰金&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  
が課せられることになった．
要するに&lt;strong&gt;高価なものは懲役3年，安いものでも100万円&lt;/strong&gt;とられる．
懲役刑をくらえば会社員なら一発で懲戒解雇処分だろう．
知っていればちょっとくらい良いだろうとは思えない重い罰．
少なくとももっと周知されてもいいのになと思う．
&lt;/p&gt;


&lt;h1&gt;それでも漁師さんとはトラブルになる&lt;/h1&gt;
&lt;p&gt;
たとえ上記の「密漁と遊漁の境界」を理解し，
規則を守っていても漁師さんが見回りにやってきて「お前らなにやとんじゃー」といきなり密漁者扱いでどなり散らしてくる．
そして二言目には「海上保安庁呼んでもいいんだぞ」と脅しをかけてくる．
そこでどのように漁師さんや海上保安庁と接すれば良いか？海上保安庁の方のアドバイスをメモしておきたい．
&lt;/p&gt;

&lt;h2&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;/ul&gt;
&lt;p&gt;
漁師に警察権が委任されている訳じゃないので，漁師さんができることは貝を取らないように注意喚起することと，
密漁者を見つけたら海上保安庁に連絡して逮捕してもらうことしかできない．
出来ることは一般人と同じ．それ以上のことをしてきたらそれ自体が違法の可能性があることを伝えた方がいい．
&lt;/p&gt;
 
&lt;p&gt;
特に海上保安庁の方からアドバイスされたのは，絶対に船に乗ってはいけないということ．
漁師さんと遊漁者共にナイフを持っているのでつかみ合いなどから傷害事件に発展することもあるらしい．
漁師さんから何か言われて引き下がらない場合は，すぐに海上保安庁を呼んでほしいとのこと．
こういった行為をされそうになったら迷わず海上保安庁を自分で呼ぶか，呼んでもらうように言いましょう．
&lt;/p&gt;

&lt;h2&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;h2&gt;本当の敵は悪質な密漁者&lt;/h2&gt;
&lt;p&gt;
魚突きをする人がここまで読んだら，漁師憎しになってしまったのではないだろうか？でもそれも間違い．
漁師の立場に立って考えてみて欲しい．海水浴場でもないところで泳いでいる人を見つけたら密漁者の可能性がある．
しかも船の上からじゃ何をやってるか見えないし，貝を取っていてもすぐに捨てて証拠隠滅してしまう可能性もある．
乱獲により漁獲量が激減してる地域や磯焼けしてダメになっているところもある．
なんとかしなければという良心からやっているのである．
若くて元気があって一見ガラが悪くても，多少法律の知識がなくてやりすぎる事があっても，悪い人ではないのである．
&lt;/p&gt;

&lt;p&gt;
じゃ誰が悪いのか？それは，違法性を知りながら貝を大量に取っていく悪質な密漁者．
一人では到底食べきれない量の貝を取っている人を見たことがある．
暴力団が関与しているしている事が多いそうだ（&lt;a href=&quot;https://news.yahoo.co.jp/articles/855a97211940c25cf6b1700d2d99c57e306f73be&quot; target=&quot;blank&quot;&gt;参考&lt;/a&gt;）．
こういう人がいなければおそらく漁師さんも貝を１つや２つ取ったくらいでは文句言ったりしなかっただろう．
現に祖父の時代はそんな事は全く言われなかったという．
だから，そういう人たちが我々の敵なのである．こういう人たちを減らし，漁師さんと理解しあうようになることが理想だと思う．
密漁者を見つけたら即海上保安庁（電話番号118）に連絡しよう！
ただし，写真や動画などを取って証拠を残すと裁判で証言しなければならなくなるらしい．
なのでとにかく見つけたら通報することが一番良いと海上保安庁の方が教えてくれた．
&lt;/p&gt;

&lt;h1&gt;参考資料&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.courts.go.jp/app/hanrei_jp/detail2?id=52661&quot;&gt;最高裁昭和61年12月16日判決&lt;/a&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.msil.go.jp/msil/Htm/main.html?Lang=0&quot;&gt;海洋状況表示システム 海しる&lt;/a&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://news.yahoo.co.jp/articles/855a97211940c25cf6b1700d2d99c57e306f73be&quot; target=&quot;blank&quot;&gt;
    2021/8/1 HTB北海道ニュース「小樽の海でアワビを密漁か…暴力団構成員の男を現行犯逮捕」&lt;/a&gt;&lt;/li&gt;
  
  &lt;li&gt;&lt;a href=&quot;https://www.pref.hokkaido.lg.jp/sr/ggk/titsujo_bassokukyouka.html&quot; target=&quot;blank&quot;&gt;
    密漁を許さない～漁業法改正に伴う罰則の強化について～&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/771317517132514982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/771317517132514982'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/10/blog-post.html' title='【魚突き】密漁と遊漁の境界'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcpUi1fn3HHDMaYgGvq6ZVxQW1BtQPCZanG7tw0q2HDKrbuIENV-uAZJwIV1hMxi7QWpRKT3-46ehreoa644KwyjwMaDvWeqFpC1p7TbwWQkm8Up0wLgO7dvE5MXgIjPLRdha8xJbduuu7/s72-c/Clipboard01.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-6385546065082307122</id><published>2021-09-10T20:52:00.005+09:00</published><updated>2021-09-14T17:42:48.777+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="生活術"/><category scheme="http://www.blogger.com/atom/ns#" term="計算機"/><title type='text'>沢登りで使えそうなトランシーバアプリ</title><content type='html'>&lt;p&gt;
山登りのパーティーの先頭と後尾間で使用できるトランシーバはアプリは無いものかと探してみた．
山登りというより沢登りでは，滝の上部と下部では滝の轟音で声が聞こえず殆ど会話ができない．
仕方がないから呼子（笛）を吹いてみるけど，細かいことは伝わらない．
無線機を装備しているのが重要だけど，沢登りのためだけに無線買いたくない．
じゃー滝を登った人が降りてくることができるかというと，それができないから困っているのである．
そんな人には，せめてみんな持っているスマホにアプリを入れておいて，トランシーバ代わりにして会話できたら嬉しい．
&lt;/p&gt;

&lt;p&gt;
え？Lineで会話すればいいだけじゃない？と思う人は山を舐めている．
山の中，特に沢の中では，4Gがつながらないことなんていつもの事．
じゃー普通の電話（IP電話じゃなくて）は？これもつながらない事も．
つまりインターネットも携帯電話も全く使えない環境で，
基地局を介さずにスマホ同士直接通信する機能だけで会話したい．
それを使えば音声通話だってファイル送信だって原理的にはできるはず．
つかえそうなアプリは無いものかと探してみたのメモしておく．
&lt;/p&gt;


&lt;h2&gt;必要な機能&lt;/h2&gt;

&lt;ul&gt;
  &lt;h3&gt;AndroidとiOSの両方で動作すること&lt;/h3&gt;
  &lt;p&gt;
  パーティー全員がアプリを入れてくれるとは限らない．
  頼んでインストールしてくれた人が，自分と異なるOSのスマホを使っていたら？を考えている．
  原理的には通信規格はOSに依存しないので，
  両OSで動作する同じアプリがあれば良いだけのこと．
  &lt;/p&gt;
  
  &lt;h3&gt;アカウント等の登録が不要&lt;/h3&gt;
  &lt;p&gt;
  これも上と同じ理由．他人にアプリを入れてもらうのに
  いちいちアカウント登録してくれとか使い始めが煩雑だと結局アプリを入れてくれないことになるかもしれない．
  そもそもトランシーバとしてつかうのにアカウント登録は本来必要ない．
  &lt;/p&gt;
    
  &lt;h3&gt;Wi-Fi DirectかBluetooth Class1で動作すること&lt;/h3&gt;
  &lt;p&gt;
  基地局が無くてもスマホ2台で直接通信できる通信規格として考えられるのがBluetoothかWi-Fi Direct．
  Bluetooth class1の有効範囲は見通せる直線距離で100m程度，class2なら10m程度らしいけど，
    滝の上部と下部では50m以上離れていることもザラにある．
  したがって，bluetooth class1しか選択肢がないけどclass1に対応するスマホは(2021/09/09)現在それほど普及していないっぽい．
  Wi-Fiだと50から100m届くそうで250m届くこともあるとのこと．
  Wi-Fi Directというのは，ルータを介さずにスマホ対スマホで通信する機能．
  これはアプリ設定というよりスマホの設定なので，アプリが特定のサーバを介さずに通信する設定なら
  要するに一台がアクセスポイントに成って，もう一台がそこにつながる感じだと思う．
  &lt;/p&gt;
  
  &lt;h3&gt;操作が簡単であること&lt;/h3&gt;
  &lt;p&gt;
  沢登りではスマホを防水ケースに入れるはず．
  防水ケース越しにごちゃごちゃと操作するのは難しい．
  画面をONにして，アプリを起動して，通話ボタンを押す，くらいの単純な操作であって欲しい．
  &lt;/p&gt;
  
  &lt;h3&gt;無料であること&lt;/h3&gt;
  &lt;p&gt;
	こんなアプリ自分でも作れそうだから無料．広告はあってよし．
  &lt;/p&gt;  
&lt;/ul&gt;

&lt;h2&gt;トランシーバアプリ&lt;/h2&gt;

&lt;p&gt;
必要な機能をいろんなアプリで比較してみた．
  検索にあたって使用したキーワードは，「オフライン」，「トランシーバ」，「Walkie Talkie（トランシーバの英語）」など．
&lt;/p&gt;

&lt;table class=&quot;tb01&quot;&gt;
  &lt;tr class=&quot;head&quot;&gt;
    &lt;th&gt;&lt;/th&gt;
    &lt;th&gt;OS&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;tr&gt;
    &lt;th&gt;Bridgefy&lt;/th&gt;
    &lt;td&gt;
      &lt;a href=&quot;https://play.google.com/store/apps/details?id=me.bridgefy.main&amp;hl=ja&amp;gl=US&quot;&gt;Android&lt;/a&gt; / 
      &lt;a href=&quot;https://apps.apple.com/us/app/bridgefy-offline-messages/id975776347&quot;&gt;iOS&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;？&lt;/td&gt;
    &lt;td&gt;Bluetooth&lt;/td&gt;
    &lt;td&gt;&lt;/td&gt;
    &lt;td&gt;完全無料&lt;/td&gt;
  &lt;/tr&gt;

    &lt;tr&gt;
    &lt;th&gt;FireChat&lt;/th&gt;
    &lt;td&gt;
      存在しない
    &lt;td&gt;？&lt;/td&gt;
    &lt;td&gt;Wi-Fi&lt;/td&gt;
    &lt;td&gt;&lt;/td&gt;
    &lt;td&gt;？&lt;/td&gt;
  &lt;/tr&gt;

    &lt;tr&gt;
      &lt;th&gt;&lt;a href=&quot;https://briarproject.org/&quot;&gt;Briar&lt;/a&gt;&lt;/th&gt;
    &lt;td&gt;
      &lt;a href=&quot;https://play.google.com/store/apps/details?id=org.briarproject.briar.android&amp;hl=ja&amp;gl=US&quot;&gt;Android&lt;/a&gt;
    &lt;td&gt;？&lt;/td&gt;
    &lt;td&gt;Wi-Fi/Bluetooth&lt;/td&gt;
    &lt;td&gt;★★★&lt;/td&gt;
    &lt;td&gt;無料&lt;/td&gt;
  &lt;/tr&gt;  
  &lt;tr&gt;
    &lt;th&gt;Two Way : Walkie Talkie&lt;/th&gt;
    &lt;td&gt;
      &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.selvaraj.twoway.android&quot;&gt;Android&lt;/a&gt; / 
      &lt;a href=&quot;https://apps.apple.com/jp/app/two-way-walkie-talkie/id595560554&quot;&gt;iOS&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;登録不要&lt;/td&gt;
    &lt;td&gt;Wi-Fi&lt;/td&gt;
    &lt;td&gt;★★★&lt;/td&gt;
    &lt;td&gt;無料&lt;/td&gt;
  &lt;/tr&gt;
  
  &lt;tr&gt;
    &lt;th&gt;&lt;a href=&quot;https://g-incom.jp/index/&quot; target=&quot;_blank&quot;&gt;ぐるかむ&lt;/a&gt;&lt;/th&gt;
    &lt;td&gt;
      &lt;a href=&quot;https://play.google.com/store/apps/details?id=jp.gincom.androidapp.intercom&quot;&gt;Android&lt;/a&gt; / 
      &lt;a href=&quot;https://apps.apple.com/jp/app/トランシーバー-インカムアプリ-ぐるかむ/id1129692824&quot;&gt;iOS&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;要登録&lt;/td&gt;
    &lt;td&gt;Wi-Fi&lt;/td&gt;
    &lt;td&gt;★★☆&lt;/td&gt;
    &lt;td&gt;5ユーザまで無料&lt;/td&gt;
  &lt;/tr&gt;

&lt;/table&gt;


&lt;h2&gt;Bridgefy&lt;/h2&gt;

&lt;p&gt;
AndroidにもiOSにもインストールできたが，両デバイスのBluetoothをONにしてBroadcastモードでチャットしても何も起きない．
&lt;/p&gt;


&lt;h2&gt;FireChat&lt;/h2&gt;
&lt;p&gt;
現在（2021/09/14），Google PlayにもApple Storeにも見当たらない．
&lt;/p&gt;

&lt;h2&gt;Briar&lt;/h2&gt;
&lt;p&gt;
  &lt;a href=&quot;https://briarproject.org/&quot;&gt;本家サイト&lt;/a&gt;を見ても&lt;strong&gt;iOS版は存在しない&lt;/strong&gt;．
したがってこの時点で動作テストをやめた．
&lt;/p&gt;

&lt;h2&gt;Two Way : Walkie Talkie&lt;/h2&gt;

&lt;h3&gt;使い始め&lt;/h3&gt;
&lt;p&gt;
このアプリは，インストールしたら即使える．
UIがちょっと分かりにくいけど慣れたら意外と単純で簡単だった．
使い方はまず，テンキーボタン（点が9つあるやつ）を押してチャンネル番号設定すること．
チャンネル番号が一致している端末同士がつながる．
例えばチャンネル番号を000000にしてると何語か分からない人の会話が聞こえてきた．
たぶん，その番号で会話している人がネット上のどこかにいるのだろう．
2台以上のスマホのチャンネル番号を同じ番号にし，発話するときは◯印のボタンを押しながら話す．
&lt;/p&gt;

&lt;h3&gt;沢登りでの使い方&lt;/h3&gt;

&lt;p&gt;
このアプリの良いところはアプリが常駐しており常駐しており，
相手が画面をOFFにしていても声が届くこと．
電源マークのボタンを押せば，常駐をOFFにすることも簡単．これは非常に沢登り向き．
滝の前に着いたら，誰か一人のスマホのテザリングをON（モバイル通信はOFFのまま）にして，アクセスポイントとなった代表のスマホに，他のスマホを接続させる．
アプリの常駐をONにして，音量を最大化しておけばあとは防水ケースに入れても聞くだけなら触る必要もない．発話するときだけボタンを押す必要がある．
&lt;/p&gt;

&lt;p&gt;
2台のスマホのうち1台をテザリングONに（アクセスポイント化）し，もう一台のスマホのWi-Fiをアクセスポイントにつないだ．
  そしえモバイル通信をOFFにしたところ，全く反応しなくなった．つまり&lt;strong&gt;このアプリもオフラインでは機能しない．&lt;/strong&gt;
「オフラインでトランシーバとして機能する」と書かれた&lt;a href=&quot;https://news.mynavi.jp/article/20191223-944158&quot;&gt;サイト&lt;/a&gt;もあるが，
実験をしていないか完全にインターネットから切断した状態を作れていなかったのではないか？
&lt;/p&gt;


&lt;h2&gt;ぐるかむ&lt;/h2&gt;

&lt;h3&gt;使い始め&lt;/h3&gt;

&lt;p&gt;
ぐるかむは，日本製のトランシーバアプリ．
トランシーバを使用するグループの管理者と他のグループメンバに分かれており，グループ管理者はアカウントの登録が必要になる．
アカウント登録後に，ぐるかむのサイトでログインすると管理画面が表示され，ここでグループ名やユーザ名の設定や，ユーザの追加や削除ができる．
基本的に接続IDが5つ利用可能になり，誰にそれを割り当てるかを設定できる．
&lt;/p&gt;

&lt;p&gt;
アプリをインストールしたらまず接続IDとパスワードを入力させられる．
この作業はインターネットに接続されていなければできない．
そして接続が完了したらConnectというボタンを，各スマホでConnectボタンを押して状態にしないと会話できない．
1つ目の接続はアカウントの認証で，2つ目はグループどうしの接続だと思う．2段階の接続が面倒．
会話するときは，発話者がボタンを押しながら発声する．
&lt;/p&gt;


&lt;h3&gt;沢登りでの使い方&lt;/h3&gt;
&lt;p&gt;
2台のスマホのうち1台をテザリングONに（アクセスポイント化）し，もう一台のスマホのWi-Fiをアクセスポイントにつないだ．
さらにConnect状態にして会話できることを確認したのち，モバイル通信をOFFにしたところしばらく会話できたが，
アカウントの認証ができない状態に戻り会話できなくなった．
  つまり&lt;strong&gt;このアプリはインターネットを使って常時認証をしているため完全に外部と遮断された沢登りの環境では使えない&lt;/strong&gt;ということ．
確かに，公式サイトの「よくある質問」にこういう記述がある．
&lt;/p&gt;

&lt;blockquote&gt;
  クローズドの環境にラズベリーパイサーバーやLinuxサーバーを設置するなどの個別提供も可能です。
&lt;/blockquote&gt;


&lt;h2&gt;参考&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Bluetooth&lt;br/&gt;
    &lt;a href=&quot;https://ja.wikipedia.org/wiki/Bluetooth&quot;&gt;https://ja.wikipedia.org/wiki/Bluetooth&lt;/a&gt;
  &lt;/li&gt;
  
  &lt;li&gt;Bluetoothに関するよくある質問 – ①初歩編（FAQ）&lt;br/&gt;
    &lt;a href=&quot;https://musenka.com/knowledge/bluetooth-faq/&quot;&gt;https://musenka.com/knowledge/bluetooth-faq/&lt;/a&gt;
  &lt;/li&gt;
  
  &lt;li&gt;無線LANの電波の届く範囲・距離について&lt;br/&gt;
    &lt;a href=&quot;https://www2.elecom.co.jp/network/wireless-lan/column/wifi_column/vol08/&quot;&gt;https://www2.elecom.co.jp/network/wireless-lan/column/wifi_column/vol08/ &lt;/a&gt;
  &lt;/li&gt;
  
  &lt;li&gt;インターネット不要、iOS/Androidメッセージ/トランシーバアプリ5選&lt;br/&gt;
    &lt;a href=&quot;https://news.mynavi.jp/article/20191223-944158/&quot;&gt;
      https://news.mynavi.jp/article/20191223-944158/&lt;/a&gt;
  &lt;/li&gt;
  
  &lt;li&gt;ぐるカム　―　よくある質問&lt;br/&gt;
    &lt;a href=&quot;https://g-incom.jp/faq/&quot;&gt;
      https://g-incom.jp/faq/&lt;/a&gt;

  &lt;/li&gt;
  &lt;li&gt;FireChat　―　Wikipedia&lt;br/&gt;
    &lt;a href=&quot;https://ja.wikipedia.org/wiki/ファイア・チャット&quot;&gt;
      https://ja.wikipedia.org/wiki/ファイア・チャット/&lt;/a&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6385546065082307122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6385546065082307122'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/09/blog-post_10.html' title='沢登りで使えそうなトランシーバアプリ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-6313245712942157317</id><published>2021-09-03T14:11:00.099+09:00</published><updated>2022-03-28T21:43:15.355+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="数学"/><category scheme="http://www.blogger.com/atom/ns#" term="科学"/><title type='text'>ベクトルの公式メモ</title><content type='html'>\(
\renewcommand{\vec}{\boldsymbol}
\)

&lt;/
参考
https://saruwakakun.com/html-css/reference/hidden-show

https://0edition.net/archives/3555

https://axa.biopapyrus.jp/machine-learning/vector-calc.html
/&gt;

&lt;p&gt;
機械学習などの最適化問題で登場するベクトルの微分に関する公式の確認方法をメモ．必要に応じて追加していく
ベクトル$\vec{x}$と$\vec{u}$の成分を次のように定義しておき，必要に応じて添字$i,j$などを追加する．
微分を含む公式の確認に必要な微分を含まない公式もあるので分けている．
&lt;/p&gt;

&lt;h1&gt;微分を含まない公式&lt;/h1&gt;


\begin{eqnarray}
\vec{x} &amp;=&amp; \left[
\begin{array}{c}
x\\
y\\
z
\end{array}\right]
,\ \ \ 
\vec{u} &amp;=&amp; \left[
\begin{array}{c}
u\\
v\\
w
\end{array}\right]
\end{eqnarray}


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label1&quot; /&gt;
    &lt;label for=&quot;label1&quot;&gt;$\sum_i \vec{x}^T \vec{u}_i  = \vec{x}^T \sum_i \vec{u}_i$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
\begin{eqnarray}
\sum_i \vec{x}^T \vec{u}_i
&amp;=&amp; \sum_i [x, y, z]
\left[
\begin{array}{c}
u_i\\
v_i\\
w_i
\end{array}\right]
\\
&amp;=&amp; \sum_i (x u_i + y v_i + z w_i)\\
&amp;=&amp; x \sum_i u_i  + y \sum_i v_i + z \sum_i w_i\\
&amp;=&amp; [x, y, z]
\left[
\begin{array}{c}
\sum_i u_i\\
\sum_i v_i\\
\sum_i w_i
\end{array}
\right]\\
&amp;=&amp; [x, y, z]
\sum_i
\left[
\begin{array}{c}
 u_i\\
 v_i\\
 w_i
\end{array}
\right]\\
&amp;=&amp; \vec{x}^T \sum_i  \vec{u}_i
\end{eqnarray}
    &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label2&quot; /&gt;
    &lt;label for=&quot;label2&quot;&gt;$\vec{x}^T \vec{u}\vec{u}  = \vec{u}\vec{u}^T\vec{x}$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
&lt;p&gt;
ベクトルも行列の一種と考えると，行列の結合法則
$(AB)C = A(BC)$
から見れば当たり前の法則かもしれない．
&lt;/p&gt;      
\begin{eqnarray}
\vec{x}^T \vec{u}\vec{u}
&amp;=&amp; (\vec{x}^T \vec{u})\vec{u}\\
&amp;=&amp; \vec{u}(\vec{x}^T \vec{u})\\
&amp;=&amp; \vec{u}(\vec{u}^T\vec{x})\\
&amp;=&amp; \vec{u} \vec{u}^T\vec{x}\\
\end{eqnarray}
&lt;p&gt;
ただ，この公式は少し当たり前じゃない部分もある．
$\vec{u}\vec{u}$が行列どうしの積としては成立しないので$(\vec{x}^T \vec{u})\vec{u}$の順序としかみなせないため．  
左辺には$\vec{x}^T \vec{u}$という内積が登場しても行列はどこにも見当たらない．
&lt;/p&gt;

&lt;p&gt;
一方右辺は，$(\vec{u}\vec{u}^T)\vec{x}$とも$\vec{u}(\vec{u}^T\vec{x})$ともみなすことができる．
$(\vec{u}\vec{u}^T)\vec{x}$とみなすと$(\vec{u}\vec{u}^T)$の部分は正方行列になる．
$\vec{u}(\vec{u}^T\vec{x})$とみなすと$(\vec{u}^T\vec{x})$の部分は内積と同じで単なるスカラーになる．
&lt;/p&gt; 
    &lt;/div&gt;
&lt;/div&gt;





&lt;h1&gt;微分を含む公式&lt;/h1&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label3&quot; /&gt;
    &lt;label for=&quot;label3&quot;&gt;$\frac{\partial }{\partial \vec{x}} \vec{x} = I$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
（未完成）
    &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label4&quot; /&gt;
    &lt;label for=&quot;label4&quot;&gt;$\frac{\partial }{\partial \vec{x}} \vec{a}^T\vec{x} = \vec{a}$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
（未完成）
    &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label5&quot; /&gt;
    &lt;label for=&quot;label5&quot;&gt;$\frac{\partial }{\partial \vec{x}} \vec{x}^T\vec{a} = \vec{a}$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
（未完成）
    &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label6&quot; /&gt;
    &lt;label for=&quot;label6&quot;&gt;$\frac{\partial }{\partial \vec{x}} A \vec{x} = A^T$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
（未完成）
    &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label7&quot; /&gt;
    &lt;label for=&quot;label7&quot;&gt;$\frac{\partial }{\partial \vec{x}} \vec{x}^T A \vec{x} = (A + A^T)\vec{x}$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
（未完成）
    &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label8&quot; /&gt;
    &lt;label for=&quot;label8&quot;&gt;$\frac{\partial }{\partial \vec{x}}\left| A \vec{x} + \vec{b} \right|^2=2A^T(A \vec{x} + \vec{b})$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
\begin{eqnarray}
\frac{\partial }{\partial \vec{x}}\left| A \vec{x} + \vec{b} \right|^2
&amp;=&amp; \frac{\partial }{\partial \vec{x}}\left( A \vec{x} + \vec{b} \right)^T\left( A \vec{x} + \vec{b} \right)\\
&amp;=&amp; \frac{\partial }{\partial \vec{x}}\left( \vec{x}^TA^T A \vec{x} + \vec{x}^T A^T \vec{b} + \vec{b}^T  A \vec{x} + \vec{b}^T\vec{b} \right)\\
&amp;=&amp; 2 A^TA \vec{x} + 2 A^T \vec{b} \\
&amp;=&amp; 2 A^T(A \vec{x} + \vec{b}) \\
\end{eqnarray}
    &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;hidden_box&quot;&gt;
    &lt;input type=&quot;checkbox&quot; id=&quot;label9&quot; /&gt;
    &lt;label for=&quot;label9&quot;&gt;$\frac{\partial }{\partial \vec{k}}\left| k \vec{x} + \vec{b} \right|^2=2\vec{x}^T(k \vec{x} + \vec{b})$&lt;/label&gt;
    &lt;div class=&quot;hidden_show&quot;&gt;
\begin{eqnarray}
\frac{\partial }{\partial \vec{k}}\left| k \vec{x} + \vec{b} \right|^2
&amp;=&amp; \frac{\partial }{\partial \vec{k}}\left( k \vec{x} + \vec{b} \right)^T\left( k \vec{x} + \vec{b} \right)\\
&amp;=&amp; \frac{\partial }{\partial \vec{k}}\left( k^2 \vec{x}^T \vec{x} + k \vec{x}^T \vec{b} + k \vec{b}^T  \vec{x} + \vec{b}^T\vec{b} \right)\\
&amp;=&amp; 2 k \vec{x}^T \vec{x} + 2 \vec{x}^T \vec{b} \\
&amp;=&amp; 2 \vec{x}^T(k \vec{x} + \vec{b}) \\
\end{eqnarray}
    &lt;/div&gt;
&lt;/div&gt;

</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6313245712942157317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/6313245712942157317'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/09/blog-post.html' title='ベクトルの公式メモ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-3472429984203413713</id><published>2021-07-05T12:50:00.007+09:00</published><updated>2021-09-03T01:36:52.395+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="実話"/><category scheme="http://www.blogger.com/atom/ns#" term="魚突き"/><title type='text'>【魚突き】 漁業調整規則 遊漁部分（関西）</title><content type='html'>&lt;h1&gt;福井県&lt;/h1&gt;

&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
（遊漁者等の漁具漁法の制限）
第四十八条　漁業者が漁業を営むためにする場合もしくは漁業従事者が漁業者のために従事してする場合または試験研究のためにする場合を除き、水産動植物を採捕する場合は、次に掲げる漁具または漁法によらなければならない。
一　さおづりおよび手づり（まきえづりを除く。）
二　たも網またはさ手網
三　投網（船を使用しないものに限る。）
四　やす、は具
五　徒手採捕（照明器具を使用しないものに限る。）
&lt;/pre&gt;

&lt;h1&gt;京都府&lt;/h1&gt;

&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
（遊漁者等の漁具漁法の制限）

第39条　何人も、海面において次に掲げる漁具又は漁法以外の漁具又は漁法により水産動植物を採捕してはならない。
　⑴　竿（さお）釣及び手釣
　⑵　たも網及び伹さ手網
　⑶　投網（船を使用しないものに限る。）
　⑷　やす及びは具
　⑸　徒手採捕
&lt;/pre&gt;

&lt;h1&gt;兵庫県&lt;/h1&gt;

&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
（遊漁者等の漁法の制限）

第40条 何人も、海面において次に掲げる漁法以外の漁法により水産動植物を採捕してはならない。
(1) さお釣り又は手釣り（船舶を使用して行うまき餌釣りを除く。）
(2) たも網又はさ手網により行う漁法（火光を使用するもの及び漁船法（昭和25年法律第178号）第10条第１項の規定による登録を受けていない動力船を使用して行うものを除
く。）
(3) 投網により行う漁法（火光を使用するもの及び船舶を使用して行うものを除く。）
(4) 熊手（幅20センチメートル以下で、網が付いていないものに限る。）又は移植ごて（最長の部分が40センチメートル以下のものに限る。）により行う漁法（火光を使用するもの及び船舶を使用して行うものを除く。）
(5) 徒手採捕
&lt;/pre&gt;


&lt;h1&gt;鳥取県&lt;/h1&gt;

&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
(遊漁者等の漁具又は漁法の制限)
第44条　漁業者が漁業を営むためにする場合又は漁業従事者が漁業者のためにする場合を除き、次の各号に掲げる漁具又は漁法以外の漁具又は漁法により水産動植物を採捕してはならない。
(1)　竿釣及び手釣
(2)　たも網及びさ手網
(3)　投網
(4)　やす及びは具
(5)　徒手採捕
(平20規則49・一部改正)
&lt;/pre&gt;


&lt;h1&gt;大阪府&lt;/h1&gt;
&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
(遊漁者等の漁具漁法の制限)
第三十九条　何人も、海面において次に掲げる漁具又は漁法以外の漁具又は漁法により水産動植物を採捕してはならない。
一　竿（さお）釣り及び手釣り
二　たも網及び叉さ手網
三　投網
四　やす及びは具
五　徒手採捕
&lt;/pre&gt;


&lt;h1&gt;三重県&lt;/h1&gt;
&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
（遊漁者等の漁具漁法の制限）
第四十八条 漁業者が漁業を営むためにする場合又は漁業従事者が漁業者のために従事してする場合を除き、次の各号に掲げる漁具又は漁法以外の漁具又は漁法により水産動植
物を採捕してはならない。ただし、内水面において水産動物の採捕をする場合は、この限りでない。
一 竿つり及び手づり
二 たも網及びさ手網
三 投網（船を使用しないものに限る。）
四 やす（火光を利用するものを除く。）、は具（じょれん又は火光を利用するものを除く。）
五 徒手採捕
&lt;/pre&gt;

&lt;h1&gt;和歌山県&lt;/h1&gt;
&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
(遊漁者等の漁具漁法の制限)

第45条　漁業者が漁業を営むためにする場合若しくは漁業従事者が漁業者のために従事してする場合又は試験研究のために水産動植物を採捕する場合を除き、次に掲げる漁具又は漁法以外の漁具又は漁法により水産動植物を採捕してはならない。

(1)　竿釣及び手釣
(2)　たも網及び叉手網
(3)　投網(船を使用しないものに限る。)
(4)　は具
(5)　徒手採捕
(6)　ひき縄釣(西牟婁郡白浜町市江埼灯台中心点から南西の線以北の和歌山県地先海面においてするものを除く。)

(平20規則22・平21規則47・平27規則45・一部改正)
&lt;/pre&gt;


&lt;h1&gt;徳島県&lt;/h1&gt;

&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
(遊漁者等の漁具漁法の制限)

第四十四条　漁業者が漁業を営むためにする場合若しくは漁業従事者が漁業者のために従事してする場合又は試験研究のためにする場合を除き、水産動植物を採捕する場合は次に掲げる漁具又は漁法によらなければならない。

一　 竿釣（さおづり） 及び 手釣（づり）
二　たも網及びさ手網(火光を利用するものを除く。)
三　投網
四　やす及びは具(火光を利用するものを除く。)
五　徒手採捕
&lt;/pre&gt;

&lt;h1&gt;香川県&lt;/h1&gt;

&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
(遊漁者等の漁具漁法の制限)

第45条　漁業者が漁業を営むためにする場合若しくは漁業従事者が漁業者のために従事して水産動植物を採捕する場合又は試験研究のために水産動植物を採捕する場合を除き、次に掲げる漁具又は漁法以外の漁具又は漁法により水産動植物を採捕してはならない。

（１）さお釣り又は手釣り（船舶を利用するものでまきえ釣り及びまだこ釣りを行うものを除く。）
（２）たも網又は叉（さ）手網
（３）投網（船舶を使用しないものに限る。）
（４）徒手採捕
（５）やすまたはは具(船舶を使用しないものに限る。)
&lt;/pre&gt;

&lt;h1&gt;高知県&lt;/h1&gt;
&lt;pre class = &quot;prettyprint&quot; style=&quot;white-space: pre-wrap;&quot;&gt;
（遊漁者等の漁具及び漁法の制限）
第44条何人も、海面において次に掲げる漁具又は漁法以外の漁具又は漁法により水産動植物を採捕してはならない。
(１)竿（さお）づり及び手づり
(２)たも網及び叉さ手網（火光その他の照明を利用するものを除く。）
(３)投網
(４)は具
(５)徒手採捕
(６)やす（火光その他の照明を利用するもの及び発射装置を有するものを除く。）
&lt;/pre&gt;


https://www.jfa.maff.go.jp/j/yugyo/y_kisei/kisoku/todo_huken/attach/pdf/index-9.pdf</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/3472429984203413713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/3472429984203413713'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/07/blog-post.html' title='【魚突き】 漁業調整規則 遊漁部分（関西）'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-4314185722199117461.post-3129812660021154319</id><published>2021-06-22T00:44:00.006+09:00</published><updated>2021-07-21T13:48:53.181+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="アウトドア"/><category scheme="http://www.blogger.com/atom/ns#" term="生活術"/><category scheme="http://www.blogger.com/atom/ns#" term="魚突き"/><title type='text'>手銛のレストタブ自作方法メモ</title><content type='html'>
&lt;h1&gt;必要なもの&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;ハンドドリル&lt;/li&gt;
  &lt;li&gt;ヤスリ&lt;/li&gt;
  &lt;li&gt;ステンレス・スプーン x 2（100均）&lt;/li&gt;
  &lt;li&gt;ナイロンベルト（100均）&lt;/li&gt;
  &lt;li&gt;ステンレス・M3ネジ8mm&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;16号磯釣り用釣り糸&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;スプーンを加工する&lt;/h1&gt;
&lt;p&gt;
スプーンの一方（手側）はフック型に加工して，もう一方（銛側）にはフックを引っ掛けるホールをあける．
どこに穴をあけるかをイメージしてマジックでマークしたのち，スプーンの首を落とした．
ヤスリで1mmほどの傷をつけてから折り曲げてへし折った．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwr21qzvrWynkIKdzBhNR9CU9DtAnMuQsMuNIVRUrsutvAmz4VTHvZJ_j_QjVtwR9at80tPCkaxeLbRxwuAFUfjhGBqTyoDlRgUAmVTnlLRfAEUJ5KtCNKXsPdAFzrzTlLL3AURoOUdrJs/s4032/PXL_20210616_144802745.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;320&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwr21qzvrWynkIKdzBhNR9CU9DtAnMuQsMuNIVRUrsutvAmz4VTHvZJ_j_QjVtwR9at80tPCkaxeLbRxwuAFUfjhGBqTyoDlRgUAmVTnlLRfAEUJ5KtCNKXsPdAFzrzTlLL3AURoOUdrJs/s320/PXL_20210616_144802745.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
フック側とホール側ハンドドリルで穴を開けて，切断部分をハスリでなめらかにする．
ホール側は少しずつドリル先端の径を大きくしていき穴を大きくした．
フック先端はホールに入るようにヤスリで細くする．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLE4jjV_BLOUIV5IrhAthou1cmAY9q0t3wlrpi5oeWQDr5LEgzikQMztnhezIgYoDxH9tY1o9Uhqcmz8YWctRFSmIJqgGqEGmFEh2ZtXPrChxcMtuhgL62gJ9i7XvpQydE0cG5dVEcsJUL/s4032/PXL_20210619_063149030.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLE4jjV_BLOUIV5IrhAthou1cmAY9q0t3wlrpi5oeWQDr5LEgzikQMztnhezIgYoDxH9tY1o9Uhqcmz8YWctRFSmIJqgGqEGmFEh2ZtXPrChxcMtuhgL62gJ9i7XvpQydE0cG5dVEcsJUL/s320/PXL_20210619_063149030.jpg&quot;/&gt;&lt;/a&gt;
  
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuDusmGBby19emnSzKke2OOAGLWlxAyMCWA04fMlF6TdM7vPYeYP8r_7wIceTQHIddywOd2g0k8ngyVJ7B3IQBcp3pSU2bSRuSEqgpHhKF66EBCgTQUU7IgOUnfPjmEz9HGlKH2EUYVYXP/s4032/PXL_20210619_063208947.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuDusmGBby19emnSzKke2OOAGLWlxAyMCWA04fMlF6TdM7vPYeYP8r_7wIceTQHIddywOd2g0k8ngyVJ7B3IQBcp3pSU2bSRuSEqgpHhKF66EBCgTQUU7IgOUnfPjmEz9HGlKH2EUYVYXP/s320/PXL_20210619_063208947.jpg&quot;/&gt;&lt;/a&gt;

  
&lt;p&gt;
引っ掛けてみた様子がこれ．
ホール側は銛に固定したときに，フック先端が銛に接触しないように，折れ目をつけて跳ね上げておく．
スムーズに引っ掛けられて取り外せればOK．
&lt;/p&gt;
  
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6WEJvuB1KG6w3FbS53ri_FJmwRznWfhGYEIdxw4rrCIYuWgcVgFMhYeZ2s6w7dLs_ROiRcxV9wOkOYCNeh72AOSzNXPRRXEj0tFVl9MngJTEM8QBDezPHoHq1cpc-p-VQIU3zhFSYxfSM/s4032/PXL_20210619_063225046.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6WEJvuB1KG6w3FbS53ri_FJmwRznWfhGYEIdxw4rrCIYuWgcVgFMhYeZ2s6w7dLs_ROiRcxV9wOkOYCNeh72AOSzNXPRRXEj0tFVl9MngJTEM8QBDezPHoHq1cpc-p-VQIU3zhFSYxfSM/s320/PXL_20210619_063225046.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h1&gt;フックをベルトに取り付ける&lt;/h1&gt;

&lt;p&gt;
フック側には2つ小さな穴を開けているのでその径にあうM3のステンレスネジでナイロンベルトに取り付けた．
ナイロンベルトには予めこれに合う穴を開けておく．
ペンチで針つかんでコンロで熱して，ベルトを溶かして穴を開けた．
&lt;/p&gt;
  

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLgo6txPHS4yeHtt8sOGg4bqmJtvZAy1zLwhNJnCW1i9L3St3YtqGvec_2iDGD81ZZV4xL9KPBCg_AD3KCpGzHjZaL5Ec08L_fqedbETV1kRMJF2D3QuSdqUDza2nled8gPuK8OkapC1OB/s4032/PXL_20210619_111535559.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLgo6txPHS4yeHtt8sOGg4bqmJtvZAy1zLwhNJnCW1i9L3St3YtqGvec_2iDGD81ZZV4xL9KPBCg_AD3KCpGzHjZaL5Ec08L_fqedbETV1kRMJF2D3QuSdqUDza2nled8gPuK8OkapC1OB/s320/PXL_20210619_111535559.jpg&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlNd7-ez-QAWhY76eMXH0RGsgptNbJ61J8J0SlomA3QyzYq7-4srjLYgd1kG-WHMSq4_TwEFm-SLM1LprCVyo4NxnhNlRpJcGeEDN5ZHeUnPkLPpApEBNwzBzjSYhXfgJ_RAQi7bFXuPSj/s4032/PXL_20210619_111546186.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlNd7-ez-QAWhY76eMXH0RGsgptNbJ61J8J0SlomA3QyzYq7-4srjLYgd1kG-WHMSq4_TwEFm-SLM1LprCVyo4NxnhNlRpJcGeEDN5ZHeUnPkLPpApEBNwzBzjSYhXfgJ_RAQi7bFXuPSj/s320/PXL_20210619_111546186.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhko30qh_VyYZJ5Tdrs8jALa2qW2FrDjqLRiR6UdOPV06gbeEc6ZFO8i6W8Y7gyQ2gnNXGipih85iNXimJN3C12UE8JvufbXFYq3bqkGtDoUTl6f5rRmosXB-BvJdRKxhxJdVZqMvrnOh7v/s4032/PXL_20210619_111555205.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;320&quot; data-original-height=&quot;4032&quot; data-original-width=&quot;3024&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhko30qh_VyYZJ5Tdrs8jALa2qW2FrDjqLRiR6UdOPV06gbeEc6ZFO8i6W8Y7gyQ2gnNXGipih85iNXimJN3C12UE8JvufbXFYq3bqkGtDoUTl6f5rRmosXB-BvJdRKxhxJdVZqMvrnOh7v/s320/PXL_20210619_111555205.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;
最初は上のように，ネジ部分が手に当たらないように，フックをベルトの外に取り付けていたけど，ネジが銛を傷つける可能性の方が高そうなので，ベルトの内側に取り付けることにした．それがこれ．フック先端でベルトを貫通させるために，この部分にも穴を開けた．
&lt;/p&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicwhJynoFauHIXDFFcfbWcObRZ5s2mmF79ihUIbhaRbT7L6xJ3Wy5bj6EQuJxDiB6eotaN70dyLAoz1wOvLbeAH-tgpD3UHrguRjN5-oxY5LpF47rHkuAH6J5uCMl6GjTy7kPxWkX-Mx67/s4032/PXL_20210619_112257435.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicwhJynoFauHIXDFFcfbWcObRZ5s2mmF79ihUIbhaRbT7L6xJ3Wy5bj6EQuJxDiB6eotaN70dyLAoz1wOvLbeAH-tgpD3UHrguRjN5-oxY5LpF47rHkuAH6J5uCMl6GjTy7kPxWkX-Mx67/s320/PXL_20210619_112257435.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;h1&gt;ホール側を銛に固定する&lt;/h1&gt;

&lt;p&gt;
まず熱収縮チューブで銛をカバーする．後で取り外せるように．
その上に両面テープでスプーンを仮固定する．両面テープはなくてもいいけど固定が楽だから．

&lt;/p&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMb0UUZqV4Bwo5AExMFashysVLZc03y6sm1074e5Fx4eyxFYMfxxhJdrC6NMDBPciznKZnAGsmyWtF4OZNpilzBoPRpWrit-JTThX-fxgfFIEq6uSD_kAjgY_-LVNFzWYKxxrJJ9sVxAXM/s4032/PXL_20210619_115134972.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMb0UUZqV4Bwo5AExMFashysVLZc03y6sm1074e5Fx4eyxFYMfxxhJdrC6NMDBPciznKZnAGsmyWtF4OZNpilzBoPRpWrit-JTThX-fxgfFIEq6uSD_kAjgY_-LVNFzWYKxxrJJ9sVxAXM/s320/PXL_20210619_115134972.jpg&quot;/&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkWEcN8uTvFIG_mEj-6SqW_pOXBreXH90NsAuh5DvtjB2Gcx3HAFGn8IeFjmOJvytWEBD9CLxcQ5y8kAy7U0Tpe2s5ubtSelCqeMmSMoCC8OM9taWzFxBP0RkKpfXCWJnv4lw0MbkZS6Cv/s4032/PXL_20210619_115127772.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkWEcN8uTvFIG_mEj-6SqW_pOXBreXH90NsAuh5DvtjB2Gcx3HAFGn8IeFjmOJvytWEBD9CLxcQ5y8kAy7U0Tpe2s5ubtSelCqeMmSMoCC8OM9taWzFxBP0RkKpfXCWJnv4lw0MbkZS6Cv/s320/PXL_20210619_115127772.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;p&gt;
その上から16号の磯釣り用の糸でぐるぐる巻き．
今回は接着剤をつけなかった．
&lt;/p&gt;


&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNUwazXi-3OwuQgyzCYHSmT45cxdrCnCJZC37lX9KCstU29ciJdbVOkhvgEk_Zx76jVBDK9LGczDiqPojvGwQKIHRI1gETju4eaeDV0VKPV2n_DDM2h5VqTaRS_HqOBPH1axvIXYhsT7Xa/s4032/PXL_20210619_144342330.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNUwazXi-3OwuQgyzCYHSmT45cxdrCnCJZC37lX9KCstU29ciJdbVOkhvgEk_Zx76jVBDK9LGczDiqPojvGwQKIHRI1gETju4eaeDV0VKPV2n_DDM2h5VqTaRS_HqOBPH1axvIXYhsT7Xa/s320/PXL_20210619_144342330.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwL7NGA_bvbQevQbf9wBsnc2g6-v7WPX9oau4K5dIW4NP1EmwF7pmIarcIrK29ZI1R62Kr31Tm__KV6Js3GmOSzVHDhTjv7dCWcc_TtaMq023mKoM6z9y0UTaLYziJVZI7H5NXJA1SVeqx/s4032/PXL_20210619_144349068.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwL7NGA_bvbQevQbf9wBsnc2g6-v7WPX9oau4K5dIW4NP1EmwF7pmIarcIrK29ZI1R62Kr31Tm__KV6Js3GmOSzVHDhTjv7dCWcc_TtaMq023mKoM6z9y0UTaLYziJVZI7H5NXJA1SVeqx/s320/PXL_20210619_144349068.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;p&gt;
最後にその上から更に長めの熱収縮チューブでカバーした．左が収縮前，右が収縮後．これで完成．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5_T1vGh05diKjG_mSVwPb2CX1_TkDg2ghL_66pZoNMjTpEoLmbJ-ZWsg5FUr-t2Q2EHFxQh5UcnsUsNqV9n97YV4X9tGSUcqrTz3wlnPIBRSOSs4Pu5iEyyo3etEuojYwsS6qaHva2XLm/s4032/PXL_20210619_144622291.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5_T1vGh05diKjG_mSVwPb2CX1_TkDg2ghL_66pZoNMjTpEoLmbJ-ZWsg5FUr-t2Q2EHFxQh5UcnsUsNqV9n97YV4X9tGSUcqrTz3wlnPIBRSOSs4Pu5iEyyo3etEuojYwsS6qaHva2XLm/s320/PXL_20210619_144622291.jpg&quot;/&gt;&lt;/a&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1JBtBWQGMsM75aUoHYW2bA7MbwbalXQj7xlHwLkceYJHFARdlGgiJ5gEhyokVLH4dEtg5hjUZaPJ80k2QdMM-nhYhZUcJcWi7OtPH2PYXHBGktNP-iZXJFu75OOImhu7v1eI9rO0kTDP/s4032/PXL_20210619_144817221.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1JBtBWQGMsM75aUoHYW2bA7MbwbalXQj7xlHwLkceYJHFARdlGgiJ5gEhyokVLH4dEtg5hjUZaPJ80k2QdMM-nhYhZUcJcWi7OtPH2PYXHBGktNP-iZXJFu75OOImhu7v1eI9rO0kTDP/s320/PXL_20210619_144817221.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;


&lt;h1&gt;改良&lt;/h1&gt;

&lt;p&gt;
上に書いた方法で作ったレストタブ．実際に使ってみたら一発でフックを受ける側が銛本体から抜けました．
接着剤を使わずに糸だけで縛っていたのと，スプーンの首の部分の曲げがゆるくて引っかかりが少ない事が原因かなと．
そこで首の部分を180度曲げて糸が切れない限り抜けない構造に．そして接着剤をベチョベチョに塗って糸とスプーンと熱収縮チューブを固定した．
&lt;/p&gt;

&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoFgG-3CY95DaGav71gM5fQZD8sgT438Ev63bynE17o72hKQRI5JhwSiHi7buTb6iJEeha1wUrV9ky9DwxAXJWtNJY7Mv-i545vT_kN9LdyEq7eYYJiGAJF9vLpTIdDt50WhXXqI16PYDb/s4032/PXL_20210720_155822298.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoFgG-3CY95DaGav71gM5fQZD8sgT438Ev63bynE17o72hKQRI5JhwSiHi7buTb6iJEeha1wUrV9ky9DwxAXJWtNJY7Mv-i545vT_kN9LdyEq7eYYJiGAJF9vLpTIdDt50WhXXqI16PYDb/s320/PXL_20210720_155822298.jpg&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghPY09kyphK85BpJXDe4OB5v2qNkPoyUdLYnYgs_RF48BKomo74j0i8qBTTzodupxUnqWpgjHriT9R3NhNx1SNpc7R1t-iNdW_AbrMkQzZbrufJBCzxxn3NwzqKBGhkxsDKdkomk2g7UP4/s4032/PXL_20210720_161548952.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghPY09kyphK85BpJXDe4OB5v2qNkPoyUdLYnYgs_RF48BKomo74j0i8qBTTzodupxUnqWpgjHriT9R3NhNx1SNpc7R1t-iNdW_AbrMkQzZbrufJBCzxxn3NwzqKBGhkxsDKdkomk2g7UP4/s320/PXL_20210720_161548952.jpg&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOZqljgEx9Ud3G4o6sBWLhsRnu87rX5IVGeCFZb5MlxuShXy-kPq-gYSQ0TkVXtd-7nY71vyMwjeGpbhClpNC0N87Vo2zdJCqKHwZTNDOh8cahOXMAeh-g3UUgPQx7sg4whcTkdgePnwo8/s4032/PXL_20210720_161556174.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOZqljgEx9Ud3G4o6sBWLhsRnu87rX5IVGeCFZb5MlxuShXy-kPq-gYSQ0TkVXtd-7nY71vyMwjeGpbhClpNC0N87Vo2zdJCqKHwZTNDOh8cahOXMAeh-g3UUgPQx7sg4whcTkdgePnwo8/s320/PXL_20210720_161556174.jpg&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRm3R3qW1M4ZX81TVkRqeLiZAFBeddaIJQLU4SuNGB_iAWqZLhjU7AJN7HiimKWuCrn8jnaFmf6riIgi16Zu_cBD4HT3NO0cgddPqIDgCdubn-QN8IJvnp4TdF1uYDfueqfCwBL2q4_N7z/s4032/PXL_20210720_162657754.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRm3R3qW1M4ZX81TVkRqeLiZAFBeddaIJQLU4SuNGB_iAWqZLhjU7AJN7HiimKWuCrn8jnaFmf6riIgi16Zu_cBD4HT3NO0cgddPqIDgCdubn-QN8IJvnp4TdF1uYDfueqfCwBL2q4_N7z/s320/PXL_20210720_162657754.jpg&quot;/&gt;&lt;/a&gt;

&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFrC1rEViurSsNGubQ5a0RwxnpG1b60UinkenfUoFcGLVilmBd2vwx6bViYvqlWM4njiZXLl1JrCp1ELGb667QX_rJ8TbFdNi9wq3OT3cVLBK6vpaSHk0pXZrXIZWsJo_xNFBL3BlPvycr/s4032/PXL_20210720_162724544.jpg&quot; &gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; width=&quot;320&quot; data-original-height=&quot;3024&quot; data-original-width=&quot;4032&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFrC1rEViurSsNGubQ5a0RwxnpG1b60UinkenfUoFcGLVilmBd2vwx6bViYvqlWM4njiZXLl1JrCp1ELGb667QX_rJ8TbFdNi9wq3OT3cVLBK6vpaSHk0pXZrXIZWsJo_xNFBL3BlPvycr/s320/PXL_20210720_162724544.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/3129812660021154319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4314185722199117461/posts/default/3129812660021154319'/><link rel='alternate' type='text/html' href='http://buaiso.blogspot.com/2021/06/blog-post.html' title='手銛のレストタブ自作方法メモ'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwr21qzvrWynkIKdzBhNR9CU9DtAnMuQsMuNIVRUrsutvAmz4VTHvZJ_j_QjVtwR9at80tPCkaxeLbRxwuAFUfjhGBqTyoDlRgUAmVTnlLRfAEUJ5KtCNKXsPdAFzrzTlLL3AURoOUdrJs/s72-c/PXL_20210616_144802745.jpg" height="72" width="72"/></entry></feed>