どんぐりと山猫とダメ人間
この記事はいきいき Advent Calendar 2021 - Adventarの17日目の記事である。
自分が働いている岩手県で活躍した作家、宮沢賢治の作品に「どんぐりと山猫」という童話がある。
www.aozora.gr.jp
この作品は大正13年に発表されたものであるが、昔の作品にも関わらず、競争社会と「いきいき」とした暮らしの間の葛藤が大きなテーマになっている。
実際、この作品が掲載された童話集「注文の多い料理店」の新刊案内では
本作品について「必ず比較をされなければならないいまの学童たちの内奥からの反響」だと説明されている。
ここでは、「どんぐりと山猫」を参考にして、「いきいき」過ごすことについて考察したい。
「どんぐりと山猫」は主人公である一郎が、不思議な森の世界に招待される話である。
この世界にいるどんぐりなどの住人は賢くなく、非合理的、非効率的な発言を繰り返しているが、みんな「いきいき」している。
一郎もこの世界に招待され心を躍らせる経験をするが、最終的にはどんぐりや山猫に正論を述べて黙らせてしまう。
そして、うちに戻るとどんぐりは黄金色から茶色に変化し、二度とこの世界に招待されなくなるのである。
ここで取り上げられている問題点は、合理的であるということと、「いきいき」しているということは一致しないということである。
合理的であるというのは、他人から評価されると言い換えてもいいかもしれない。
「いきいき」についてイメージするとき、他人から評価される事柄が思い浮かぶに違いない。
仕事が充実していたり、家族と楽しい時間を過ごしたりなどが典型的な例になるだろう。
なので、ドラマにハマって徹夜で見てしまうような人のことを「いきいき」した人物として思い浮かべることはあまりない気がする。
しかし、「どんぐりと山猫」のどんぐりたちと同様にドラマを徹夜で見てしまう人達も「いきいき」しているように思われる。
つまり、他人から評価されない「いきいき」も存在するということだ。
競争社会においては他人から評価される行いを「いきいき」と実施するためのテクニックは重要である。
現代人はそのような「いきいき」テクニックをどんどん身につけていかなくてはならない。
しかし、競争社会における合理性の外側にある「いきいき」は見ないことにするべきものなのだろうか。
私はそうは思わない。
むしろ、競争社会には何の役にも立たないような「いきいき」を見つめることで、自分自身の生き方について真に考えられるようになるのではないかと思う。
私たちは、他人から評価される行動を良い行動、評価されない行動を悪い行動と考え、日々の暮らしの中で、その意味での良い行動を行おうとしている。
しかし、「いきいき」は、そのような軸とは別の軸に存在するものだと思う。
「いきいき」しているかどうかは、他人に評価されるかどうかとは別物である。
私たちは「絶対に評価されなくてはならない」という呪縛から逃れて「いきいき」の軸があることに気づかなければならない。
そしてその両方の軸を考えられるようになることが、豊かな暮らしを考える上で大切なのではないかと思う。
それでは、日々の暮らしの中でどのように「いきいき」を見つけていけばいいだろうか。
「評価されたい」という欲望に汚染された私たちには、評価されないエリアにある「いきいき」を見つけることは難しい。
私たちは評価されないものをフィルタリングして見ないようにする癖がついてしまっている。
この問題に対処するため、再び「どんぐりと山猫」を参考にしたい。
「どんぐりと山猫」において、主人公の一郎は合理的でないどんぐりたちへの愛着を持っていた。
私たちも同様の愛着を持つことが重要なのではないかと思う。
そして、現代社会において、どんぐりのような合理的でない「いきいき」したものとは、ダメ人間のことではないかと考えている。
ダメ人間のダメたる所以は、他人から評価されないということである。
しかし、ダメ人間により主体的に行われるダメ行動は「いきいき」しているように思われる。
ダメ人間こそ、上図の評価されないエリアにある「いきいき」なのではないかと思うのだ。
近年、教育においてアートを教えることの重要性が主張されるようになってきている。
しかし、多くのアート作品においては、その作品が生み出される背景を理解しないと作品のメッセージを受け取ることは難しい。
何の知識もないまま作品を見て何かを感じろと言われても、それは映画においてクライマックスのシーンだけを見せられているようなものであり、深い考察をすることはなかなかできない。
一方、身近にいるダメ人間については、背景を把握しやすい。
ダメ人間の行動が自分の利害に関わるのであれば、否が応でも自分の感情が揺さぶられる。
なので自分には、アートよりもダメ人間からの方が多くのことを吸収できるような気がするのである。
私たちは生まれた時から、競争社会で生きることを義務付けられている。
そこでは競争社会でうまく生き抜くテクニックが重要である。
しかし、時代が大きく変化している今、そのようなテクニックよりも、競争社会のあり方そのものを改善できるようなアイデアを出せることが重要になってくるのではないかと思われる。
例え話で言うなら、モグラ叩き機から出てくる憎きモグラを叩くテクニックよりも、モグラ叩き機の電源を切る方法を見つけることの方が重要なのである。
そのような上流思考をする際、拠り所になるのは「いきいき」ではないかと思われる。
その場合、競争原理を無視して行動するダメ人間こそが重要な思考材料になるのではないだろうか。
ということで、ダメ人間を見ないことにしてはならない。むしろダメ人間に愛着を持つことで今まで気づけなかった新しい「いきいき」を発見できるようになる。
最後に、これまで自分の周りにいたダメ人間たち(自分のことは棚に上げておこう)との出会いに感謝して、この文章を終えようと思う。
中年の危機を乗り越える
昔所属していた会社の同僚が面白い記事を書いていたので、自分も便乗して同じテーマで書いてみようと思う。
その記事は「中年よ、危機を超えてゆけ」というタイトルで、内容としては、年上の方から「37歳を超えるとね、一回、アイデンティティが揺さぶられるのよ。それは絶対来るから、覚悟しておいたほうがいい。」と言われた筆者が実際に37歳になった時それをどう乗り越えたかを書いたものだ。
note.com
自分は既に40歳を超えているが、確かに30台後半にアイデンティティを揺さぶられたことがあったと思う。
その際に自分がどのようにアイデンティティを揺さぶられて、どう乗り越えていったのかを書いてみようと思う。
アイデンティティはどう揺さぶられたか?
アイデンティティに関して不安になったことの一つめは、自分が他の人に対して示せるようなラベル(自分を特徴づけるキャッチフレーズのようなもの)がないということだった。
自分は大学院を卒業後、組み込みエンジニアになったが、その後、転職してカーナビの経路探索プログラムを開発したりして、そのあとは会社を辞め、34歳で博士課程学生になった。
しかし、それらのどこの部分を切り取っても、ラベルとしては弱い気がしていた。
もうすぐ40歳になろうとしているのに何者でもなくて大丈夫なのだろうか?
そんな漠然とした不安を持っていた。
さらに私生活でも、結婚していないことで「夫」というラベルを手にすることができなかった。
「夫」というラベルがなくてもこの先生きていけるのだろうか?そんな不安もあった。
もう一つ不安になったことは、30歳台後半になって体力の低下を自覚するようになってきたということだ。
体力の低下は自分が人生の後半戦にいることを強く自覚させる。
職業人としての勤労年数も定年までの半分近くに到達し、その意味でももうすぐ後半戦になろうとしている。
何かを成し遂げた実感がないまま、後半戦になってしまうという感覚があった。
これまでと同じくらいの期間働いたら自分の職業人としての人生が終わる。
後半戦は前半戦と比べて優位な点はあるだろうか?いや、ない。むしろ体力がさらに低下し辛いことになりそうだ。
あぁ大きな喜びを得られない人生だったなぁ。
そんなことを思っていた。
アイデンティティが揺さぶられた結果どうなったか?
結果として中年の危機(ミドルエッジクライシス)というような危機的な状況にはならなかった。
回避できた要因として、自分の視野が広くなったというところが大きいと思う。そのことについて詳しく書いてみたい。
まず、自分につけられるラベルのようなものに対する過度な偏重がなくなった。
確かに適切なラベルを保有することで攻撃力も守備力も上がるし、あるラベルを取得したい(例えば資格を取りたい)という願望は短期目標として非常に優れている。
しかし、それらは目的でなく手段であると割り切れるようになった。
若い頃はこのようなラベル自体に自分を同化させているようなところがあったと思う。
「いいラベルを持てば持つほど自分の人生の幸福度がランクアップする」と信じていたのだと思う。
今はそういった信仰はなくなり、「これをするにはどういうラベルを持つことが役立つのか」という風に少しは冷静に考えるようになった。
ちなみにこのような変化は急に起こった訳ではない。
自分の考え方を大きく変えるきっかけになったのは、「史上最強の哲学入門-東洋の哲人たち-」という本だ。
そのおかげで自分の中で条件反射的に判断される損得勘定に対して「本当にそうかね?」と自問自答できる機会が増えたように感じる。
小さな例で言えば、スーパーのレジで自分のレーンの進みが遅くてイライラしていたとしても、「別に損してないよね」と突っ込んでくれる。
同様に不必要に自分自身のラベルにこだわる自分に対しても、冷静に考えろと突っ込んでくれるのだ。
視野が広くなったもう一つの要因として、30台後半に環境の変化が頻繁にあったことが挙げられる。
駐在するキャンパス(オフィス)が頻繁に変わり、様々な人から良い刺激を受けた。
その結果、幸せや喜怒哀楽はコミュニティの中に存在するのかもしれないという考えを持つようになり、「自分のステータスのみが自分の幸せを決める」という考えを全否定することになった。
また、コミュニティにより価値観が全く異なるのだという実感を持つことになり、これは自分の息苦しさを大幅に軽減させることになった。
これまで世の中に対して抱いてきた不安や不満は実は世の中に対するものでなく特定のコミュニティに対するものであり、別のコミュニティに行けば全く異なる状況かもしれない。
そう信じれるようになった。
まとめ
ということで、アイデンティティを揺さぶられた時に自分の中に起こったことは、視野の広がりとそれに伴う価値観の変化であり、それによりクライシスのようなことが起こることはなかった。
これまでの考え方はワンパターンすぎたのだ。
いいラベルゲット→いい成果ゲット→幸せゲット
みたいな感じで、自分の殻の中に閉じこもった考えをしていた。他者を排除した考え方こそが袋小路の中でアイデンティティを見失っていく原因だったのだ。
もっと世の中を見よう。家から飛び出そう。様々なコミュニティとの相互作用の中に新しい喜怒哀楽が埋まっている。
そう思えるようになった。
本記事のネタ元の記事では「それぞれのやり方で対処し、クライシスを乗り越える…そんな、未来の中年たちを救いたくて、本記事をしたためた」という風に締められていた。
この記事でも「それぞれのやり方」の一つを紹介してみた。これが「それぞれのやり方」を見つけるための参考になればいいなと思っている。
RC-S380からFeliCaカードの製造IDを読み込むプログラムを作った(Python3)
最近、FeliCaなどの非接触カードを活用したアプリに興味を持っている。
先日、非接触カードリーダーRC-S380をPythonで制御するプログラムを作成したのだが、少し困った問題が起こった。
www.sony.co.jp
FeliCaカード等とデータ通信を行うためのPythonライブラリにnfcpyがあるのだが、これはPython2でしか動作せず、Python3では動作しない。
nfcpy.readthedocs.io
しかし、Python3で動作させたいため、nfcpyを使わず自作することにした。
そこで、USB通信のためのライブラリlibusb1を使ってRC-S380と直接USB通信してFeliCaの製造IDを読み込むプログラムを作成した。
処理の流れはnfcpyを参考にしている。
そのプログラムを下記に置いておく。
github.com
RC-S380に関する参考情報
- Windows環境であれば、PC/SCという規格を使ってRC-S380を制御できるため、USB通信を制御するプログラムを書く必要はない
nfcpyに関する参考情報
ソースを解析したので、その結果を書いておく。
github.com
- RC-S380を用いてFelica-Standardカードを読み込む際のシーケンスをまとめる
- わかりやすくするため、適当に省略する
全体のシーケンス
- モジュールについて
- TagToolがユーザ側プログラム(サンプルプログラム)
- ContactlessFrontendがライブラリのフロント部分
- ライブラリの処理は主に「リーダー初期化(connect)」、「カード情報読み取り(sense)」、「読み込んだカード情報の解析(activate)」の3つの処理からなる
- これらの詳細については後述する
リーダー初期化(connect)
- リーダーに対して、libusbライブラリを介して初期設定のためのコマンドを投げている
- send_commandは、リーダーへのコマンド送信関数であるが、実際には3ステップの送受信からなる。そのシーケンスについては後述する。
カード情報読み取り(sense)
- リーダーに対して、いくつかの設定コマンドを投げた後、カード捕捉命令を投げている
- InCommRFコマンドが実際にカードと通信するためのコマンドだと思われる
読み込んだカード情報の解析(activate)
カードリーダーへのコマンド送信(send_command)
単語帳アプリのソースを公開した
以前作成した単語帳Webアプリのソースコードを公開することにする.
2年ほど前までは,英単語を覚えるために紙の単語カードを使用していたが,覚えた単語と覚えていない単語の仕分けが面倒だった.
そこでアプリを探してみたのだが,あまり気に入ったものがなかったため,自分で作ることにした.
下記に作成したアプリの概要を書いておく.
- アプリ概要:1問1カード形式の単語カードをWebアプリ化したもの(スマートフォン向け)
- 機能など
- 一定回数正解するまで繰り返し学習可能
- 単語の新規登録や登録内容の修正もWebアプリ上で行うことができる
- 主な使い方
- 非表示部タップ:正解表示
- 左右スワイプ:別の問題に移動
- ソース:
- 動作している様子 (下記はデータベースへの書き込みはできない):
http://koike55net.sakura.ne.jp/flash_cards/index.php?user_name=guest&key=pass_guest
MacでLaTeX原稿のスペルチェック/英文法チェックを行う(Word利用)
Macで英語のLaTeX原稿を作成する際の文法チェック方法の備忘録.
MacでLaTeXを用いて英語文書を作成する際,単語のスペルミスについては,特別な事をしなくてもMac OS Xのスペルチェックで検出できる.しかし,文法チェックをするためには別の方法が必要である.Wordを利用すると文法チェックが行えるが,Wordにどのように文書を入力するかが問題になる.原稿をそのままコピペすると,LaTeXコマンドなどが文法エラーとして検出されてしまうし,作成したPDFファイルからコピペしても正しく文章が貼付けられない.
良いやり方がないかを探していたところ,RTFファイルを利用した簡単な方法が見つかったので,その手順をメモしておく.概要としては,まずLaTeX原稿からRTFファイルを作成し,そのファイル対してWordの文法チェックをかけるという感じ.下記のページを参考にした.
http://spatiohack.blogspot.jp/2010/12/latex_14.html
準備
- latex2rtfをインストールする
- MacPortsがインストールされているならば,下記コマンドを実行する.(他の方法を用いてもよい)
- $ sudo port install latex2rtf
- MacPortsがインストールされているならば,下記コマンドを実行する.(他の方法を用いてもよい)
Evernoteを活用したニュース分類アプリを作った
最近Gunosyなどの「あなたにおすすめのニュース」を配信するサービスが話題になっているが,本当に自分好みのニュースが配信されるようにするためには,自分のいろいろな好みをGunosyに教えてあげないといけない.自分はお気に入りのニュース記事をEvernoteというアプリにクリップして保存しているので,その情報を使えば同様のことができるのではないかと思い,試してみた.先日,そのアプリを作ってデモと発表をしたところ反応が良かったので,色々公開することにする.精度を上げるためのもろもろの処理を行っていないが,訓練データが多いためか,それなりにうまく分類できている.
- アプリ概要:最新のニュース記事を自分のEvernote情報に基づいて分類し,さらにスコア付けして表示する
- 動作している様子: http://koike55net.sakura.ne.jp/classifier/index.cgi
- 記事は1時間に1回更新
- ソース: https://github.com/koikezlemma/evernote_classifier
- 説明: 下記スライドを参照のこと
ベイズの定理とナイーブベイズ分類器を通信路線図を使って説明する
最近,「パターン認識と機械学習」を教科書とするレクチャを受けている.そこで最初に出てくるのがベイズの定理であり,教科書の至る所で使われている.自分が最初にベイズの定理を習ったのは大学での情報通信理論の授業だった.その時の通信路線図を使った説明がとても分かりやすかったので,加筆修正してここに書いておきたいと思う.
ベイズの定理の通信路線図を用いた説明
ある通信路を用いてAさんからBさんに記号を送信する.ただし,通信路にはノイズがありBさんは誤った記号を受け取ってしまうことがある.その際,Bさんの受信記号からAさんの送信記号を推定することを考える.念のため「パターン認識と機械学習」に出てくる有向グラフィカルモデルで表すと以下のようになる(後述する通信路線図は有向グラフィカルモデルに詳細情報を書き加えた感じになっている).
通信路線図
通信路は下記の通信路線図のようになっているものとする.
Aさんはa0またはa1の2種類の記号を送信する.ただし,a0,a1の送信頻度(生起確率)は分かっており,a0を送信する確率を0.6,a1を送信する確率を0.4とする.また,Bさんはb0またはb1の2種類の記号を受信する.受信記号として,a0,a1を使ってもよいが,見にくいので異なる表記にする(一般的には送信記号と受信記号は同じでなくてもよい).通信に誤りが無い時,a0送信→b0受信,またはa1送信→b1受信となる.送信記号がa0なのにBさんがb1を受信してしまう確率(誤り率)を0.05,送信記号がa1なのにBさんがb0を受信してしまう確率(誤り率)を0.1とする.
事前確率
まず,Bさんが受信記号bを確認する前に送信信号aを予測することを考える.この場合,Aさんの送信頻度から予測するしかない.
よって,送信記号がa0である確率は
であり,送信記号がa1である確率は
である(ある送信記号aがa0である確率のことをと表記する).
よって,この状況で送信信号aを予測すると,「確率0.6でa0」となる.
これらの確率を事前確率と呼ぶ.
事後確率
次にBさんが受信記号bを確認した後で送信信号aを予測することを考える.
受信記号がb0だった時
受信記号がb0となるのは,
case1: 送信記号a0が正しく送信された
case2: 送信記号a1が誤って送信された
のどちらかである.
ここで,受信記号を確認する前の状態では,case1が起こる確率は
case2が起こる確率は
である.
受信記号b0を確認した後は.case1またはcase2のどちらかが発生したということが分かっているので,送信記号がa0である確率はcase1,case2のうちcase1である確率となり,
となる.同様に送信記号がa1である確率はcase1,case2のうちcase2である確率となり,
となる.
よってこの状況で送信信号aを予測すると,「確率0.93でa0」となる.
受信記号がb1だった時
上記と同様に考えることができる.受信記号がb1となるのは,
case3: 送信記号a0が誤って送信された
case4: 送信記号a1が正しく送信された
のどちらかである.
受信記号b1を確認した後は.case3またはcase4のどちらかが発生したということが分かっているので,送信記号がa0である確率はcase3,case4のうちcase3である確率となり,
となる.同様に送信記号がa1である確率はcase3,case4のうちcase4である確率となり,
となる.
よってこの状況で送信信号aを予測すると,「確率0.92でa1」となる.
これらの確率は事後確率と呼ばれる.
このように,新しい情報(受信記号)を得ることにより,確率分布は事前確率から事後確率に変化する.
一般化
上記を一般化して,受信信号がbjだった時,送信信号がaiである確率を考えると,これまでと同様の考え方で,
となる.
これをベイズの定理と呼ぶ.
応用例:モンティ・ホール問題
応用例として,モンティ・ホール問題と呼ばれる問題を考える.この問題は答えを説明されても納得しない人が多い問題として知られている.
プレイヤーの前に3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろにはヤギ(はずれを意味する)がいる。プレイヤーは新車のドアを当てると新車がもらえる。プレイヤーが1つのドアを選択した後、モンティが残りのドアのうちヤギがいるドアを開けてヤギを見せる。ここでプレイヤーは最初に選んだドアを、残っている開けられていないドアに変更してもよいと言われる。プレイヤーはドアを変更すべきだろうか?
モンティ・ホール問題 - Wikipedia
答えとしてはドアを変更すべきなのだが,その理由を通信路線図を使って説明する.説明のために,3つのドアに0,1,2とインデックスをつける.そして,ユーザはドア0を選んだものとする.この時,通信路線図は以下のようになる.
送信側は「当たりのドア」であり,ドアiが当たりである確率をaiと書く.受信側は「モンティが開けるドア」であり,ドアjを開ける確率をbjと書く.
ユーザがドア0を選んだ後,モンティがドア1を開けた時
この時,上記のオレンジ色の矢印のどれかが起こっている.よって,ドアを変更しないで当たりになる確率は,
であり,ドアを変更した時当たりになる確率は
となる.よって,ドアを変更したほうが当たる確率が上昇する.他のケースでも同様のことがいえる.
注意事項として,上記の通信路線図では
としているが,これは成り立つとは限らない(例えばプレーヤーはモンティの癖を知っているかもしれない).もし成り立たない場合には上記の確率は異なる値となる.例えば,モンティが常にはずれドアのうち小さいインデックスのドアを開ける癖があるならばドアを変えても確率は変化しない.
応用例:ナイーブベイズ分類器
最後にもう少し発展させてナイーブベイズ分類器について説明する.ここでは,Aさんは同じ送信記号をBさんとCさんの二人に送信するものとする.この時,Bさんの受信記号とCさんの受信記号の両方からAさんの送信記号を推定することを考える.念のため,有向グラフィカルモデルで表すと以下のようになる.
そして,通信路線図は下図であるとする.
この時,BさんとCさんは同じ送信記号を受信するので,BさんとCさんの受信記号には相関がある.しかし,もし,Aさんの送信記号がa0と分かっている時は,Bさんの受信記号とCさんの受信記号は互いに独立である.なぜならば,Bさんの受信記号はBさんの通信路のみに依存し,Cさんの受信記号はCさんの通信路のみに依存するからである.例えば,Bさんがb0を受信する確率はCさんの受信記号に関わらず,0.9である.一般化すると任意のai,bj,ckにおいて下記が成り立っている.
この時,Bさんの受信記号とCさんの受信記号はAさんの送信記号のもとで条件付き独立であるという.