n=1

主にコンピュータ技術関連のことを投稿。 / 投稿は個人の意見であり所属団体の立場を代表するものではありません。

ネット依存症の対処(はてブをブロックして半年が経った)

半年以上前から b.hatena.ne.jp を hosts ファイル等でブロックしている。

はてなブックマークとは

b.hatena.ne.jp とははてなブックマークだ。数時間置きに閲覧してしまう癖がつき連鎖的にスマホ中毒、ネット中毒になってしまっていた。おそらく10年以上、そうだったと思う。

b.hatena.ne.jp

人気記事にあがる内容は基本的に比較的高収入なネット民が楽しむ上から目線のゴシップだ。

すくいぬ 2ちゃんねらー、なう民、はてな民…一番やばいネット民族はなんなの?

f:id:ishn:20210709181335p:plain
こいつ

はてなブックマークのような媒体が私たちをどのようにハックしているか

ゴシップというのはドーパミンの回路を刺激する。自分よりステータスの低い人のことを覗くことで相対的に自分のステータスが上がったと脳は感じる。これが食事やセックスと同じような一次報酬になるらしいのだ。

苦労しないで、特にワンクリックで得られるような快感を取り続けると依存症になる。

薬物乱用の科学

つまり、ドラッグを使えば、なんの行動や努力をしなくても、欲求が満たされたときのようにドーパミンが分泌され、多幸感を生じて、気持ち良くなることができるのです。人が生きる理由としているのが「報酬系の働き」ですから、報酬系に強く作用するドラッグは、強い依存を生み出し、そのために薬物を乱用する人が、あとを絶たなくなる訳です。

ドーパミンの回路を起動することは動物の強い動機としてプログラミングされている。でなければ餌を得る動機も、交配して遺伝子を残す動機も起きなくなる。また、常に得られるだけではなく、1/2の頻度で得られるくらいが強い報酬になるそうだ。探索する動機に関連しているのかもしれない。

そのような人間の性質はデジタルな捕食者たちの格好の餌食になっている。例えば Facebook のいいねは押された直後に通知されているわけではなく、ある程度まばらになるように調整されて通知されているらしい。はてなブックマークも数時間おきに少しずつ人気エントリが入れ替わっている。

ドーパミン以外にもある。それは憤りだ。群れを構成しなければ生きられない人間にとって不平等感はノルアドレナリンが分泌されるほど大きなストレスになる。これも PV を稼ぐための撒き餌として機能している。

f:id:ishn:20210709180213p:plain

はてなブックマーク人気エントリーの半数は、ここ数年で反政権的な政治イデオロギーが強く出ており2000年代のネトウヨブームの裏返しのような状態が発生している。(ユーザ層の年齢的にも思春期ではネトウヨだった世代なので反動があるのかもしれない。) 「自分以外の特権階級(ネトウヨブーム期で言えば"在日特権"、今なら"上級国民")が特別に配慮された利権を得ている!!」と感じると多くのノルアドレナリンが生じる。これを非難することで脅威レベル下げようとするのだ。

この、生物として不可分な快感の性質を SNS やネットメディアはハックして PV を稼いでいる。我々は脆弱性を突かれ、寝ている時間以外は首輪をつながれているのだ。

ブロックしてどうなったか

パソコンではネットワークの設定のレベルではてなブックマークへのアクセスを遮断している。

hostsの書き方:Windows 7/8/10のhostsの場所や設定の編集について

f:id:ishn:20210709180906p:plain

スマホにも解除が厄介なサイトブロッカーをインストールしてある。こいつは OS の強めの権限を要求し、充電器につないでいる間しかブロック解除のアクションを起こせないようにできる。

www.appblock.app

しばらく経ち、大幅に人生で使える時間が増えたと感じる。それまでは楽器の練習とか、プログラミングの勉強をする時間など持てなかった。

また、欲求の質もかなり良くなった。プログラミングを覚えたい、より健康になりたい、xx を知りたいなど能動的なもの、達成までに適度な困難さがある課題である。

関係の無い世界を知らないでいることは、ノルアドレナリンレベルを上昇させずに済んでいる。脅威を感じている時間は脳のワーキングメモリを消費するため、思考力が落ちる。一日を振り返ると、自分が関与していない世界に対する不満を持っている時間が皆無だ。これはインターネット漬けだった時期と比べると全く違う感覚である。

改めてはてなブックマークを見て

ドメインごとブロックしているので本家は見れないが、twitter で人気エントリの配信を行っているので見てみた。

twitter.com

今感じるのは、本当に政治イデオロギーの再放送ばかりだということ。これを数時間置きに読んだところで憤りは起きても、なにも生活は変わらない。本気で何かを変えたいのならこれを読むのではなく、能動的な情報発信であったり政治活動なりを行ったほうがいい。信じられないことに、今まではこの憤りの渦に身を沈めるのが快感だったのだ。

f:id:ishn:20210709180408p:plain

そうでなくても、まったく自分と無関係な分野の偉人、天才の礼賛だとか、逆に低所得者、思考力が鈍いものを馬鹿にする記事だとかそういうので報酬、脅威の回路を数秒置きに上下させるジェットコースターのような記事群になっている。

f:id:ishn:20210709180428p:plain f:id:ishn:20210709180645p:plain

もうこれに関わらなくても生活できる自分になれたことにとても安堵している。

関連記事

ishikuro.hateblo.jp

2021年6月 の Changelog

人と比べてステータスが上であると感じることは脳にとって、食事やセックスと同じような一次報酬になるそうだ。しかし、このインターネット社会では自分のステータスが常に人より弱く見えてしまう。ここで裏技が一つあって、過去の自分と比較することでも同じ報酬が得られるのだそうだ。

よって私の Monthly Report(ローリングリリース?)として、CHANGELOGと題して月の振り返りをしていこうと思った。なにせブログなのでね。ごく個人的なことを書かせてもらうよ。

禁欲、瞑想、運動の管理アプリを完成させ毎日使っている

私専用なので一般公開はしていないがマルチユーザに変更可能なDBスキーマではある。もし興味ある方がいれば認証機能を付けて公開してもよい(もしいればね)。

  • 禁欲: 7日に一回を除いて性的なものに触れるのを自制できているかカウント。7日に一回射精のペースが最もテストステロンレベルを高くするという論文に由来。ポルノ依存症を緩和するためにも必要(ADHDは依存症になりやすい)。
  • 瞑想: 週280分できているかカウント。週4時間x8週間の瞑想を続けたグループのIQが向上したという論文に由来。このウィンドウからも開始できるしTogglと連携している。
  • 運動: 週7日運動できているかカウント。有酸素運動ADHD治療薬に匹敵する効果があるし、そうでなくても脳由来神経栄養因子を分泌させるので知的作業をするには必須だと思う。Fitbitから自動取得。

集中力のコントロールが向上した

血糖値の制御を理解したからだ。

ishikuro.hateblo.jp

  • 間食を避け糖質を摂るときは野菜や肉類と一緒にすることで日中の眠気を抑えることができる
  • 夕食もそのようにしっかり食べることで睡眠の質が保たれる

しかし、まだ不十分だ。今後は分子栄養学に基づいて血液検査などをしてみて、専門家の見解をもらいながらより精度の高い改善を行う。

ピアノ演奏が上手くなった

現在、バイエルの30番前後である。音楽は言語の機能を使っているという話を意識することで"楽譜のオペレーター"から"歌うピアノ"という感じに弾き方が変化した。すると2小節先を読めるようになりテンポ感も改善された。

また、音感トレーニングのアプリは以前だと6音連続するとすぐに聞き取れなくなってしまったが、前述の言語の意識に加えて塊を分割する技術(チャンク化)で9音くらいまでなら覚えられるようになった。

play.google.com

これは私としては結構すごいことである。知能テストで最も苦手だったのが数唱だったからだ。耳から入ってくる情報に対するワーキングメモリが極端に人より少ないという報告だった。

それなのに今回のように訓練次第で改善するのはとても希望になる。

行動認知療法的なアプローチで、仕事の集中力向上の工夫をした

意欲的に作業を行うにはドーパミンあるいはノルアドレナリンが一定量、盛んでなければならないらしい。私は依存症になりやすくドーパミンの回路が鈍くなっており、締め切りまでやる気が全く起きないというのが私のこれまでのすべてであった。これを解決するためにはドーパミンノルアドレナリンのどちらかを仕事中、常に増やしておかねばならない。歩合制ならばドーパミンは刺激されるであろうがあいにくそういう職種ではない。ノルアドレナリンを増やすのが現実的になる。

そこで、かなり大きめのお金を信頼できる友人に送金しておき、仕事ぶりを毎日報告することにした。もしその友人と合意したレベルの仕事量ができていなかったら、そのお金をすぐに娯楽に使ってもらうという約束をした。お金を失うのは本当につらいので必死に頑張るのだが、これは割と上手く行っている。

f:id:ishn:20210702073048p:plain

取り組み中のこと

  • 自由に作曲する能力
  • 英語力(TOEIC900台)
  • プログラミング能力(水色)

同じ問題を何度も解く人のための atcoder-cli 補助コマンド

atcoder-cli https://github.com/Tatamo/atcoder-cli の補助コマンドを作って使っているので一応共有します。atcoder-cli は便利です。作者様ありがとうございます。

私は同じ問題を忘却曲線に従って複数回解いたり、手法を変えて複数回解いたりするため、1つの task ディレクトリに対して複数の main.cpp を持ちたいです。main.<リビジョン名>.cpp のようにして管理することにしました。

cpmain

https://github.com/ishikuro-shunsuke/atcoder/blob/main/cpmain

task のディレクトリで cpmain 2 などとすると、main.2.cpp としてテンプレートをコピーしてきます。引数は、ファイル名に使える文字列ならばどんなものでも可能です。cpmain dpmain.dp.cpp とするなど手法に応じて名付けたりするのも便利です。

#!/bin/bash
if [ $# -ne 1 ]; then
  echo "usage: cpmain <revision-name>" 1>&2
  exit 1
fi

cp `acc config-dir`/cpp/main.cpp main.${1}.cpp
echo -e "\n// STARTED: $(date '+%Y/%m/%d %H:%M:%S')" >> $_

最後に exec code main.${1}.cpp など追加してやると自動でエディタも開いてくれるのでいいのではないかと思います。

cts

task のディレクトリで、 cts 2 とするとcpmain の規則の名前の main.2.cpp の Compile, Test, Submit を自動的にやってくれます。cpmain と対になって使うものなので、もちろんこちらも 2 以外にも dp など自由な文字列を使用できます。

https://github.com/ishikuro-shunsuke/atcoder/blob/main/cts

#!/bin/bash
if [ $# -ne 1 ]; then
  echo "usage: cts <revision-name>" 1>&2
  exit 1
fi

g++ main.${1}.cpp &&
  oj t -d tests &&
  echo -e "// PASSED : $(date '+%Y/%m/%d %H:%M:%S')" >> main.${1}.cpp  &&
  acc s main.${1}.cpp

それぞれ問題を開始した時間、ローカルのテストをパスした時間を追記するようにしてあります。

コンテストは全然出ていなくて、これから頑張ります。おわり。

血糖値センサーでわかる食事と脳の関係(前編)

免責: これは自己責任で人体実験をやっているものであり、真似して何か問題が起きても責任は持ちません。深刻な疾患がある方は医師との相談を必ずしてください。

NFCセンサーによってスマホでデータを読み出せる血糖値センサーが出ていたので試してみた。メモ機能を活用し、眠気が出たり不調が生じるときと食事の関係をある程度みることができたのでまとめておく。糖質単体を取るのは避け肉や野菜と一緒に食べたほうが集中力は持続することが分かった。また、自分自身が慢性的な低血糖状態を招いている体質の可能性があることを確認できた。発達障害であることを手掛かりに模索はしているが、多くの人にも共通するメカニズムではあると思う。

背景

日中に高い集中力を持続させたいが、食後に眠気がひどいしそうでなくても耐えられないほど眠くなることがある。

前提知識として、脳のエネルギー源となるのはブドウ糖(グリコーゲン)のみであり、その量は血糖値として測ることができる。これが常に適正であればよいが、空腹だからと言って甘いものを食べると今度は体が血糖値を一定に保とうとするためインスリンというホルモンで急激に降下させてしまう。この上下のコントロールをうまくするのが秘訣だろう。

私は体質改善には余念がなく色々と調べるうちに市販のセンサーがあるという情報を知ったのでまずはここから値を取って実験してみようと思い立った。

midori-hp.or.jp

また、私は大人の ADHD である。ADHD と糖の関係はいろんなところで耳にする。糖質制限が良いとは言うもののネットの文献では理屈がはっきりしない。栄養と関連した ADHD の問題は、セロトニン不足、ドーパミン不足であるがこれが血糖値の上下と関係するという話なのだろうか。

こちらの本によれば、以下のような悪循環だという。

  1. 慢性的に腸内環境が悪くなっている
  2. このために栄養素からの脳内伝達物質の生成がうまくいっていない
  3. さらにビタミンB群不足によりブドウ糖以外からグリコーゲンを生み出す"糖新生"が働きにくくなっている
  4. 食後のインスリン分泌による血糖値の急降下に対処できず低血糖になっている
  5. 低血糖は衝動性、イライラ、不注意を生み出す

この循環の他にも、糖分の摂取という行為は依存性があるのに対し ADHD は報酬回路の不調で依存症にかかりやすいという相性の悪さがある。

これも自分に当てはまっているのだろうか?腸内環境が万全かを調べる方法は、理解のある医師に検査してもらうくらいしか思いつかないが発達障害専門の良いかかりつけ医を探すのはかなり難しい。

そういうこともあり、センサーを使って自分で調べてみることにしたのだ。

方法

Freestyleリブレは個人でも手に入る血糖値センサーだ。冒頭のツイートのように、腕の目立たないところに貼り付けるだけで2週間継続してデータを収集してくれる。NFC でデータをやりとりできるので専用スマホアプリと連携させてスキャンすれば好きな時にグラフを取得できる。

厳密には血糖値センサーではなく、皮膚の下の細胞のグリコーゲンの濃度を取っており、血液から検査する方法に比べて15分ほど遅れた情報になるようだが、今回の実験では区別の必要が無いため一律で血糖値と呼ぶことするにする。

これで、眠気があったり頭が働かないとき、あるいは明瞭に動いてくれているとき、どんな血糖値のグラフを描いているのか、そして直前に食べたものはどう影響するのか確認していくのだ。

やってみた

ジャンクフードを食べるとどうなるか

そもそもジャンクフードを遠ざける暮らしをしてしまったので実験期間中、測れていなかった。食べていたつもりになっていただけでデータとして残っていなかった。がっかり。しかし次の項目でジャンクフードで実験する意味もなくなるほどの驚きの結果が出た。

中~低GI値食品を単体で食べるとどうなるか

GI値とは、ブドウ糖を100とした血糖値のグラフ変動面積の比率だ。あくまで面積なのでピークの値とは連動していないし、ピークが高くなる食品はインスリンによる急降下があるためGI値は低くなるから参考程度である。とはいえ、同じ種類(穀類、飲料、とか)のなかであれば低いものを取ったほうがいいだろう。ジャンクフードは高いGI値のものが多い。

アルファ30「主な食品のGI値」

参考までに下のグラフは中~高GI値のパスタやリンゴジュースを飲んだときである。

(左上は食前の値なので気にせず、食事の時間であった縦棒の目盛りから右にグラフをたどっていき、上がり下がりを見てほしい)

f:id:ishn:20210617205445j:plain:w320

血糖値が107から短時間で急激に140近くに上昇しそのあと同じ速度で下降している。約1時間半後にはなんと食前よりも低い値になってしまっているのだ。これでは安定した知的作業はとてもできない。実際、このようなときは強い眠気を感じた旨のメモが残っている。

さて、血糖値の急上昇、急降下がそれほど起きないと言われている低GI値食品のグラフが気になるところだ。私は全粒粉を購入し、市販のパンではめったに見ない全粒粉100%パンを焼いて実験してみた。

f:id:ishn:20210606231709j:plain:w320

GI 値50 とされる全粒粉100%パンを単体で食べた結果がこれだ。

f:id:ishn:20210617205218j:plain:w320

なんと一時間半をかけて急上昇し、同じ時間をかけて急降下、そして食事前よりも血糖値が下がってしまった。もちろんこのときは強い眠気を感じていた。

GI値食品さえ選べば血糖値が安定する、などということはなかったのだ

時間こそ2倍に伸びてくれてはいるが、血糖値が急降下する段階ですでに眠気が発生してしまうため結局体感のパフォーマンスは高GI値食品とほとんど変わらない。

これはフルーツも同様である。フルーツはブドウ糖と果糖が半々であり、果糖がブドウ糖糖新生で変化されるまで時間がかかるので低GIなものが多い。さらに食物繊維によって消化時間も稼ぐことができる。しかし実際に計測すると食前より低下することはなかったもののスパイクは起こしてしまい1時間程度しか持たなかった。

f:id:ishn:20210617211547j:plain:w320

何かと一緒に糖質を取るとどうなるか

野菜や肉類と一緒に全粒粉100%パンを取ると理想的な血糖値のグラフになった。このときはアプリのメモにも"調子いい"などが多く残っており、かなり集中を維持できていた。このグラフだけではなくほぼ再現性のある結果だった。

f:id:ishn:20210617205858j:plain:w320 f:id:ishn:20210617210615j:plain:w320

ただし、やはり高GI値の糖質は何かと一緒に摂取しても1時間程度のスパイクが発生してしまう。それでも単体で摂るよりはましだが。

f:id:ishn:20210617210755j:plain:w320

どんなとき不調だったか

  1. 平均的な血糖値が100前後だったがこれを下回るとき眠気や苛立ちがあった。メンタルに大きく影響したことさえあった。これは空腹時はもちろん、血糖値スパイクにより食前よりも血糖値が下がったときにも発生する。
  2. 意外なことに、血糖値の絶対値が130程度と高くてもピークから急激に下っているときは強い眠気があった。一度だけではなく再現性があった。理由はわからないが、中毒からの禁断症状のようなものが糖質と脳の関係でも生じているのだろうか?

夜間に低血糖を起こしていた...!

これはある晩の Fitbit の睡眠ステージのグラフである。赤い部分が覚醒してしまっている時間帯だ。これがなんと血糖値センサーでの低血糖の時間帯と一致していた。

f:id:ishn:20210617213137j:plain:w320 f:id:ishn:20210617213149j:plain:w320

かれこれ20年ほど悪夢と中途覚醒に悩まされていたがもしかしたら低血糖症をおこしていたのではないか?それも、発達障害特有の症状だと考えられる。低血糖症の要因は加齢や糖尿病が主らしいがそれには私は該当していないからだ。

考察

だいたい説明してしまっているが以上のデータから得られたことをまとめる。

日中の眠気の原因の一つは食事の仕方にある。糖質の食べ物単体を空腹時に食べると(1)インスリン分泌による血糖値急降下時(2)降下後の低血糖によって眠気が出るようだ。知的活動を続けるには間食を避け食事は野菜や肉類などバランスよく食べるのが良いという当然の結論になった。デスノートの L とか、創作の世界の天才は甘いものが好きというプロフィールがあったりするが現実でやるとデバフになってしまう。

また、夜間低血糖は悪夢とか中途覚醒を引き起こすようだ。晩御飯はしっかり、これも野菜や肉類と一緒に食べて腹持ちを良くして対処したい。

しかし、ここまで悩んでいるのは自分だけのようにも思える。こんなに追及しなければならないほど周りは追い込まれていないぞ...

ここで新しい仮説を考えた。自分は特に血糖値の降下がしやすいのではないか?ほかの人々はあまり気にしないで食べても大丈夫だから平気でいるのではないか?

冒頭に挙げた書籍の悪循環を思い出す。

  1. 慢性的に腸内環境が悪くなっている
  2. このために栄養素からの脳内伝達物質の生成がうまくいっていない
  3. さらにビタミンB群不足によりブドウ糖以外からグリコーゲンを生み出す"糖新生"が働きにくくなっている
  4. 食後のインスリン分泌による血糖値の急降下に対処できず低血糖になっている
  5. 低血糖は衝動性、イライラ、不注意を生み出す

そう、今回確かめられたのはこの"糖新生がうまくいっていない"というところまでなのだ!それは何故なのかを突き止めることでさらに安定した血糖値が得られるかもしれない。

次回

やはり腸内環境が悪いのかどうかを確かめる必要がある。よく発達障害に効果があると言われているグルテンフリー、カゼインフリーの生活だがこれは発達障害者がグルテンカゼインに対する遅延型アレルギー(数日たって不調が現れるタイプのアレルギー)を持っており、これが消化器官に負担をかけているという説からきているものだ。

3万数千円でこれに対するアレルギーを持っているかどうか調べることができるらしい。こういうやつ。 f:id:ishn:20210617215424p:plain IgG96スタンダード・フード・パネル(日本) - アンブロシア株式会社|アレルギー検査キット アレル・チェック|食物アレルギー|遅延型フードアレルギー

今後、 IgG抗体検査を実施し遅延型食物アレルギーの対策を数週間行った後に再度、同じセンサーを使いグラフの出方に変化があるかなどを後編として報告したいと思う。

f:id:ishn:20210615102924j:plain
剥がしたセンサー。2週間おつかれさま

プログラミングの勉強を始めた

コンピュータエンジニアとしての幅を広げるためにプログラミングを勉強することにした。コンピュータサイエンス修士まで取ったし新卒最初のキャリアがサポートエンジニアという過酷な走り出しだったので、そこそこシステムを俯瞰した考え方はできているのかもしれないが、コードが書けないので受けられる案件がかなりニッチになってしまう。それで、猫も杓子もやっているという競技プログラミングプログラマにとっての知の高速道路(ただしその先が大渋滞)になっているらしいので私も渋滞するまでやってみようと思った。

私と競技プログラミングについて前置きしておく。大学生のころ、ICPC、AOJなどはあったけれど問題が堅くてあまり積極的に続ける気持ちにならなかった。複雑なアルゴリズムはほとんど定着しておらず、低レイヤー族なのでデータ構造だけは結構覚えている程度。唯一出ていた教材(蟻本)も最初からいきなり難しくてほとんど読まずにほこりをかぶっていた。そして、当時は ICPC に行ける天井人でなければ自分がどれくらいできるのかよくわからなかったから、参入障壁が高かったのだ(当然だが、そんな私たちでも勉強できる AOJ をメンテして指導してくださっていた渡部先生には感謝しかない)。コードを書かない今となってはほとんど、"はじめてのプログラミング"くらいの感じになってしまったのである。

当時と比べて今は教本も豊富で、AtCoder のおかげで日本の常識的な時間帯にコンテストに参加できる上に、実力も細かく刻まれていてモチベーションも保ちやすくなっていた。なにより、AtCoder の問題はなぜだか緩くて熱中できる。

勉強方法の調査

AtCoder は参加者全体のコンテスト結果の相対的な実力でレーティングがされており、レーティング帯で色分けがある。

chokudai.hatenablog.com

400ごとに色がついていて、赤・橙・黄・青・水・緑・茶・灰・黒、という順番になってます

とりあえず水色くらいまで行けばいろいろと安心らしい。それでも平均的に半年以上はかかるようだ。勉強時間的に、TOEIC 900 程度になるのと同じくらいの険しさかなぁと思う。

qiita.com

水色なるとみんな体験談を書きたくなるらしく、ネットには先人の記録が無数にある。

  • 毎週、AtCoder Beginners Contest(ABC) に参加するといいらしい
  • ABCDE と難易度順で問題があるのでD, E くらいまで粘れるようになると 緑、水色に差し掛かるらしい
  • 過去問を埋めるにしても A B C D と順にやっていき最初に解けなかった難易度を理解するというのを繰り返すといいらしい

なるほど、なるほど。

C++ 全く知らないレベルだったので先にこれをざっと読んだ。分量が多いのに対して例題は簡単すぎるので深追いはしなくてよい。

atcoder.jp

それから、この初級問題集をすべてやった。これで ABC の C までの感覚がわかる。

atcoder.jp

私はだいたいABCの過去問の C~D で完全に分からない問題が出てくる。これがアルゴリズムの理解の壁なので、教本で主要なものを拾うと良さそうだ。

大人なので主要な本をすべて買ってしまった。

ざっくり読んだところ、新しいだけあって AtCoder に特化して最短で勉強できそうなのが3冊目だった。基本はそれで進めて、わからなくなったらアルゴリズムイントロダクションと並んでこれらを横断的にやるのが効率が良さそう。

環境構築

ここが実は本題。

AtCoder を解くに当たって非常に有用なユーティリティがあったので利用させてもらう。CLI で問題のURLの確認、ディレクトリとファイルの整理、テンプレート使用、テスト、送信などができる。

github.com

github.com


インストール

$ npm install -g atcoder-cli
$ pip3 install online-judge-tools

C++ 用の環境設定

$ mkdir -p `acc config-dir`/cpp
$ confd=$_
$ cat  > $confd/template.json <<EOF
{
  "task":{
    "program": ["main.cpp"],
    "submit": "main.cpp"
  }
}
EOF
$ cat  > $confd/main.cpp <<EOF
#include<bits/stdc++.h>
using namespace std;
int main() {

}
EOF
$ acc config default-template cpp
$ mkdir -p ~/.local/include/bits
$ cat > $_/stdc++.h << EOF
#include <iostream> // cout, endl, cin
#include <string> // string, to_string, stoi
#include <vector> // vector
#include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound
#include <utility> // pair, make_pair
#include <tuple> // tuple, make_tuple
#include <cstdint> // int64_t, int*_t
#include <cstdio> // printf
#include <map> // map
#include <queue> // queue, priority_queue
#include <set> // set
#include <stack> // stack
#include <deque> // deque
#include <unordered_map> // unordered_map
#include <unordered_set> // unordered_set
#include <bitset> // bitset
#include <cctype> // isupper, islower, isdigit, toupper, tolower
EOF
$ echo 'export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:~/.local/include/' >> ~/.bashrc


ログイン

$ acc login
$ oj login https://atcoder.jp

新しいコンテストへの参加

$ acc new <contest name (e.g. abs)>

ローカルでのテストをパスしたら提出

# タスクのディレクトリで
$ g++ main.cpp && oj t -d tests && acc s

次の問題の準備

# コンテストのディレクトリで
$ acc add

初めてのコンテスト

というわけで先ほど初めてのコンテストに参加してみた。目標の3問(A, B, C 問題)完了が達成できたのでよかった。ここまではアルゴリズム自体の勉強をしなくても落ち着いて考えれば解ける。

少し残念だったのが D 問題。これは動的計画法かメモ化再帰という技が使えれば解ける。私は直前までそれらを勉強していたのに、時間が足りなくなってしまったのと、アウトプットできるレベルまで定着してなかったので解けなかった。理解することと使えることは違うのだ。これは英語の勉強と似ている。

atcoder.jp

解説がすぐ上がってくるのは良い。(この解説の雰囲気、懐かしい...)

www.youtube.com

勉強は github で管理することにした。

github.com

コンテストとか勉強した分野ごとにコミットすると自分でも振り返りやすい。

github.com



無色からついに灰色(1回参加)になった...!

f:id:ishn:20210516001537p:plain

f:id:ishn:20210516001617p:plain

一年以内には水色になれるよう頑張ろうと思う。

マインドフルネス瞑想の個人的なサーベイ

瞑想の効果についてまとめた。

背景

私がことあるごとに話題にしているマインドフルネスというのは初見だとなんか胡散臭い感じがしますよね。

もともとアメリカ人のオリエンタリズム(あまり長い歴史を持たないアメリカ人の東洋神秘主義に対する憧れ)から、主に富裕層でヨガとか禅とか瞑想とかが流行ったのだと推察している。スティージョブズが長年やっていたのも曹洞宗の座禅だし、映画監督のデイビッドリンチも超越瞑想というちょっとオカルトが感じられるものにかなり入れ込んでいる。私からするとかなり胡散臭く感じるので、分析はしても実践はしたいと思わない。

しかしそこは欧米人なので後付けでガツガツと科学的なエビデンスを追いかけていったのではないだろうか。2000年以降で活発に論文が出ていて、ここ数年では得られる効果とそれに対する効率的なメソッドがかなり確立してきた。有名なのが Google で実践された情動コントロールの研修だ。"心理的安全性"が日本のエンジニアコミュニティでも一般的な語になったが、この研修パッケージ内に科学エビデンスに基づいた"マインドフルネス瞑想"が社会的スキルの成熟に役立つという話もあったのだ。

Big Tech の代表でしのぎを削っている Google が期待値の低い活動を広く実施するとは思えず、マインドフルネスというものに対して安心して実践できそうな気持ちになったのである。

また、個人的に非常に高いストレスにさらされていた時期が長く、さらに頭を良くする方法を探していたところで、マインドフルネス瞑想がストレス耐性を高め、IQを数ポイント向上するらしいという話を目にしたのでやってみることにした。

瞑想の種類

方法論はかなり多く出版されているが脳内で何が起こっているかについて書かれている書籍は少ない。

瞑想はウェブで調べる限り以下のように、生じる脳波で分類がされているようだ。(そもそも科学に基づかない瞑想法を科学で俯瞰した表なので胡散臭いキーワードは入るので注意。)

↑高い周波数

↓低い周波数

参考:
【他の瞑想法との5つの違い】 | 最高を求めるなら - 超越瞑想®︎

(超越瞑想系の団体は自身の有効性を説くためにけっこうお金をかけて自分たちでエビデンスを揃えていってるので気合いが入っているなぁと思う)

マインドフルネス瞑想はリラックス時のα波よりさらに遅い、入眠時に近いΘ波になる。

瞼の裏に映るランダムな映像(入眠時心像)を観察しているとすぐ寝てしまうというライフハックは、マインドフルネス瞑想での脳内の活動を観察する行為と似ている。実際、意図せず超越瞑想になってしまっていた時期は寝る前でも持続できていたが、マインドフルネス瞑想に戻したときは持続するのは難しく10分で居眠りしてしまっていた。

脳波で客観的に、マインドフルネス瞑想が他の瞑想法と区別することができたが、脳波以外ではどのような作用があるのか、瞑想と一見無関係な本で知ることができた。

前提として、マインドフルネス以前に脳のモードが二種類ある。

  • デフォルトモードネットワーク
    • 海馬など記憶領域と内側前頭前皮質が活動
    • 計画、空想、思考
    • 将来の予測など、放っておくと自動的にストーリーを再生してしまう、おそらく多くの人はこれになっている。夜風に吹かれながらビールを飲みつつも今晩の献立をどうするか、明日の仕事はなんだったかなどを次々と連想していってしまう状態
  • マインドフルネス
    • 島皮質、前帯状皮質などが活動
    • 知覚、エラー検出、注意の切り替え
    • 過去や未来などを思考せず現在の状態のみを意識。このモードを持続するのは訓練が必要。夜風に吹かれながらビールを飲んでいるときは、体の心地よさのみを感じられる

この二つのモードは並行動作しづらい。思想にふけっているときは事故を起こしやすいし、感覚に意識を向けると深い思考は抑制される。さらに、マインドフルネスな状態を意識的に維持するのはとても難しい。10秒間、音に注視するという練習をしてみても、その10秒の間に関心がどんどん移ってしまうのが分かる。そして、マインドフルネスな状態は訓練すればするほど切り替えられる頻度があがる。

訓練が必要ではあるが、マインドフルネスな状態にはかなり価値がある。マインドフルネスな状態はどの思考が走ろうとしているかを観察できる。知覚をつかさどるといえど、高レイヤーのタスクスケジューラとして転用できるモードだと私は理解している。単一プロセスが実行されているようなデフォルトモードネットワークに任せていては脳のワーキングメモリの整理なども出来ないのだ。私は ADHD なので行動認知療法的にホワイトボードでのタスク管理をかなり頑張っているが、これを脳内で行えるようになるのがマインドフルネスなモードだ。

改めて、マインドフルネス瞑想のモチベーション

ここまで調べて、改めてモチベーションが生まれた。

まず情動コントロールである。週に合計数時間のマインドフルネス瞑想をした場合、情動が支配的になる偏桃体が縮小し、記憶のための海馬が拡大したという研究結果がある。私は感情的になりやすく記憶力が乏しかったのでこれはぜひ実践するべきだろう。

次に思考力の向上だ。デフォルトモードネットワークに任せっきりだったので、タスクの分解ができず意欲が全く湧かないか、過集中になって寝食を忘れて1テーマのことをやるというのがよくあった。マインドフルネスな状態にいつでも戻ってくることができれば、タスクスケジューラが働き一定の仕事ができるようになり、議論も俯瞰して考えることができる。客観的には思考力が上がったように見えるだろう。

おまけに、人生が楽しくなる。旅行も食事も、タスク消化という感覚が今まで強かった。スタンプラリーのような活動で疲れてしまうので外出は嫌いだ。これも、デフォルトモードネットワークが紡ぐ物語が一日中うるさく、知覚を軽視してきたからだろう。マインドフルネスであれば散歩でも、外の空気を感じられ何十倍も気持ちいいのだ。

方法

一番簡単なのは呼吸に注目する方法だ。20分タイマーを図り、呼吸だけに意識を合わせる。空想、思考が現れた場合はそれを俯瞰する。無理に消す必要は無く、現れたことを認識し呼吸への意識を続ける。この20分を朝晩で1日2回行う。これでおよそ週4.5時間のマインドフルネス瞑想が可能だ。

慣れてきたら呼吸だけでなく、マインドフルネスな状態そのものであったり、五感すべてを注視したりもできる。これは前述の2つのモードが認識できてきたら可能になる。

私はいろいろ模索しているうちに、超越瞑想になってしまっていたことがあった。首から脳にかけての血管の音が大きくなるのが認識できた時があり、それに注視していたら心地よいことがわかり、続けていた。そうしたら、知覚や意識が希薄になり実体から離れるようなリラックスした気分になった。これはおそらくα波の段階になってしまい、マインドフルネスな状態とは異なる機能が活発になっていたからだろう。超越瞑想はマインドフルネス瞑想より気持ちいいが、日常でマインドフルネスな状態を維持するのがとても下手になった。日常に活きない娯楽と感じたのでそれ以降は手を出していない。

まとめ

習慣化してから半年以上経った。モチベーションに記載したような目論見はかなり達成できている。いらだつことは皆無になり誰とも適切な距離感で接するようになった。脳の使い方は並行していろんな本を読みつつも、やっぱりこれはメタ認知が前提となっていることを見抜けるようになった。瞑想はすればするほど知覚の快感が大きくなるので食事前とか音楽を聴く前とかそういうときに瞑想をするようになった。

(唐突ですが) 頭が良い、有能に見える人と同じ水準の仕事や活動をしたいと思ったが、脳の構造が違うのにアウトプットだけ真似ても意味が無かった。使い方を変える方法をずっと模索している。瞑想はその一環でありかなり高い効果があった。

実はほかにも頭の機能を向上するために実践していることが複数ある。繰り返しになるがマインドフルネスな状態はメタ認知と言い換えることができ、これが脳の使い方の工夫の根底にある。そしてこれは練習が無ければ使えない能力だ。

スマホ脳「アンデシュ・ハンセン」

読んだ本の感想を書き溜めているので読了したものはきちんと記事にしようと思いました。

スマホ脳(新潮新書)

スマホ脳(新潮新書)

キャッチーなタイトルとは裏腹に、偏桃体が起点となって生じる情動による緊急回避システムが現代のライフスタイルに災いすることが多いという話(ファスト&スローで言われているシステム1、2の区別)を別角度で説いたような本。

私は学生のころから、生身の身体があらゆる目的達成の足手まといになっている感覚があった。前半ではそれを言い当てられた。脳の仕組みは数千年前の、狩猟、闘争、回避などの営みに適応しており、現代社会で有利になるようなストレス制御や報酬に適応するには進化の世代数が圧倒的に足りない。それどころか選択/淘汰圧がかからない社会に到達してしまっているという主張である。

そのうえで、テクノロジー、広告ビジネスが数千年前のモデルのままな私たちの脳をハックして収益を上げる構図を人類自ら作り上げてしまった。この本ではそれを自覚し人間の身体特性をハックし返すことを提案している。

さてADHDかつ過剰なストレスにさらされていた私の脳は偏桃体が発達してしまったであろう。この本では論じられていないが、マインドフルネス瞑想は偏桃体の体積を縮小する働きがあるのでこれは続けていきたい。