私は「自分の為に」「他者の為に」勉強しているのかを心理学的に解説

前書き

私は人間のやる気・動機は「自分の為か」「他者の為か」どちらがより高いパフォーマンスを発揮できるのか、モチベーションは向上するのかについて悩んでいます。そこから自分の今の理想を導きだします。

アドラー心理学では「社会との関わりを増やし、共同体感覚を磨く」事で人間の幸福度も向上すると言われています。
melheaven.hatenadiary.jp

心理学論文をまとめた以下の本を読んでこの記事を書きました。
www.kongoshuppan.co.jp

結論

  • 人間のやる気・動機を「自分の為か」or「他者の為か」に大別する事は難しい。
  • 自己志向的動機と他者志向的動機の調和が大事

動機の分類

自己動機

  • 課題の楽しさ・関心・ 個性の発揮(プログラミング楽しいイィ)
  • 自分の意思・目標・憧れ・自己満足(ハッカーになりたいので勉強します)
  • 努力をすれば結果が得られる(競プロで勉強して結果が出た!)
  • 結果に伴う感情(ハッカソンで役に立てず悔しい)

他者動機

  • 応援してくれる人・戦友・コーチ・サポート(良い結果が出るとメンターさんが喜ぶ)
  • 他者からの評価・承認(あいつは凄いと評価される)
  • 他者への配慮(勉強しないと親に悪い気持ち)
  • 競争意識(あいつには負けたくない)
  • 社会意識(社会問題を解決したい)

上記のように自己動機と他者動機に大別します。

他者志向的動機

本書にて記載されている実験では、アジア系の子供に三つの課題を与えます。

  1. 自分が興味のある課題
  2. 三者が選択した課題
  3. 母親が選択した課題

アジア系の子供はこの三つのうち、従事時間は母親>自分>第三者となりました。第三者が低いのは、外発的動機づけであることが原因とされています。詳細は以下の記事です。
melheaven.hatenadiary.jp

では母親が選択した課題も外発的ではないか、と思ったのですがそうではないそうです。母親が選択した課題を解決することが、「母親の期待に応えたい」という気持ちから、「他者への配慮」からそれが達成への促進につながるようです。これを他者志向的動機と呼びます。

他者志向的動機は「挑戦・成功欲求」「社会貢献欲求」との正の相関があることも本書にて明らかにされています。

ただし・・・

ただし他者志向的動機が必ずしも良いという訳ではなく、過度な期待からパフォーマンスの低下や達成できなかった時の罪悪感が重圧となります。前回の記事でも述べましたが、「人のために頑張ること」が「見返りを期待すること」となると、報酬を期待しながら行動する原理となり、「アンダーマイニング現象」にも繋がります。

「アンダーマイニング現象」・・・「ご褒美を約束する事」が自発的に行動を促進させる意欲を低下させる

ただし人間の動機は自己志向的動機 or 他者志向的動機のいずれかに完璧に当てはまるほど単純ではありません。

自己志向的動機と他者志向的動機の統合

自己志向的動機と他者志向的動機は完全に大別されません。この二つは大きく絡み合っています。
人間の動機は常に自己志向的動機と他者志向的動機の間を揺れ動いてます。

  • 「自分が何かを達成する事でそれが結果的に他者のためになる場合」→ 自己志向から他者志向への還元
  • 「他者を喜ばせる事でそれがそれが自分に繋がる場合」→ 他者志向から自己志向への還元

スポーツ選手は「社会貢献活動を通じてそれをモチベーションにして自ら高い結果を出す行動」もしています。ボランティア活動では「他人貢献活動を通じて結果的に自分の居場所や自分のやりがい・満足感を得る現象」も存在します。スポーツ選手・ボランティア活動は後者ですね。

私の理想(あくまで個人的)

私の理想は前者の「個人の自己志向的活動でも社会と関わりを持つことによって、それが他者の為になる他者志向的動機に繋がる」です。

「最初の興味・好き」で〇〇を継続します。ここでの「自己志向的動機」は「〇〇への関心」「将来役立つから汎用的スキルだから」「自分が成長できるから」といった内発的動機となります。

〇〇を継続して行く中で、それが他者から重宝されたり、感謝されます。そうして社会との関わりを続けていく中で、それが「他者志向的動機」に繋がります。さらに他者の喜びを見れる・自分が求められていることへの「自己志向的動機」に繋がる好循環を生み出すことです。

理由

私は現時点で他者志向になるほど社会と密接に繋がっていませんでした。勿論、一部の学生には壮絶な経験や豊富な社会経験がある方もいらっしゃり、そういう方は他者志向的動機がかなり強いと思います。ただ私は目の前の好奇心に従って、生きてきたので目先にあるのは自己志向的動機です。

ただ自己志向的動機だけでは挫折した際に次なる行動へ向かう動機として弱いという事実を大学時代に知りました。だって私は飽き性でしたから。ただ自己志向的動機が他者志向的動機につながれば、強力な行動の促進剤にもなります。その為には社会・他者との関わりをさらに増やす必要があり、孤独から脱却することが求められます。

その為には、自分の個性を受け入れてくれる土壌探しが必要ですね。

まとめ

  • 自己志向的動機と他者志向的動機の大別で考えない
  • 私は「個人の自己志向的活動でも社会と関わりを持つことによって、それが他者の為になる他者志向的動機に繋がる」を目指す

「没頭」がそんなに偉いんかいを心理学的に解説

前書き

就活で気づいたのですが、「何かに没頭した事はありますか?」と聞かれます。幸い話す材料はあるのですが、自分の場合は「外発的動機付けだった(=外部からの圧力を受けて)」と思います。そんなに「没頭」がそんなに偉いんかい、と思わなくもないですが、実際に「没頭」がどの程度、人間に影響を与えているのかを調査しました。

心理学論文をまとめた以下の本を読んでこの記事を書きました。
www.kongoshuppan.co.jp

結論

  • 自律的動機で行動する事は学習意欲を高める
  • 没頭の経験がある人間は、自律的学習と自己決定に長ける

質の高いやる気を構成する三要素

  • 行動的側面(熱心に取り組む、努力、試行、専念)
  • 感情的側面(情熱を持つ、楽しんでいる、興味)
  • 認知的側面(目的を自覚、アプローチの思考)

上記の三要素が一体的にに機能すると、その活動そのものに価値を感じる事ができ、パフォーマンスが向上します。上記をベストの状態として、実際はそんなに上手くはいきません。誰かに指示されて行動したり、あるいは自己のエゴで行動したり様々です。以下でやる気を三つに大別します。

実際のやる気を三分割

実際のやる気を三分割してみます。

  • エゴ型やる気
  • 賞罰型やる気
  • タスク型やる気

エゴ型やる気

エゴ型やる気は自尊心を高めるために自発的行動するタイプです。例えば「他人との比較」「名声の獲得」「自己顕示」などが挙げられます。ただこれは「自分の能力を示す」「自己顕示」に専念してしまい、対象の課題に対しての興味や集中力が低下する傾向にあります。また健康状態も低い傾向にあるらしく、それは理想の目標があまりに高く、そもそも目標達成の実現性が低い事が挙げられます。

詳しくは"完璧主義"のページへ。

またこのタイプで発生する「圧迫感」「緊張」がかえってパフォーマンスを低下させてしまいます。一方で、成功体験から得られる満足感・有能感がパフォーマンスを向上させるという結果もあるようです。

賞罰型やる気

賞罰型やる気はいわゆる外発的動機によって行動する事になります。一見、報酬はやる気を上げると思いがちですが、研究ではそうでないと結論づけられているようです。

「アンダーマイニング現象」・・・「ご褒美を約束する事」が自発的に行動を促進させる意欲を低下させる

これは研究でも実証済みで、報酬を受ける当人が「A. 報酬を期待して行動する場合」・「B. 報酬を期待せずに行動する場合」・「C. 報酬なしに行動する場合」だとAの場合が自由時間における対象行動の割合が最も低かったのです。ただ上記は一概には言えません。エンハンシング現象と呼ばれるそうですが、「言語的報酬( = 褒め言葉)は意欲を向上させる効果が得られるとの結果もあるので、注意が必要です。

ちなみに「報酬を期待して行動する=接近型動機」より「罰を回避する為行動する=回避型動機」方が動機としては強力です。これは以下の記事の価値関数と同様の理論です。ただ回避型動機で発生する「圧迫感」「緊張」がかえってパフォーマンスを低下させます。だからチーム内で「〜しないと〜が起こる」といったネガティブな言葉を発すると、チーム内の作業効率の低下につながるそうです。
melheaven.hatenadiary.jp

新人教育でパフォーマンスを向上させたい時は接近型動機「〜できれば」口調。ブログでアクセス数を稼ぎたいときは回避型口調「〜しないと」口調が良しとされています。

タスク型やる気

タスク型やる気は、対象に対して価値を感じたり、興味を感じたりして、目的に対して努力するタイプです。ここで言う「タスク」を発生させた動機は複数の種類が存在するようです。最も健康的に良いとされているのは、内発的な人生目標に従ったタスク型やる気です。例えば、自己パーソナリティや経験に従って、「成し遂げたい目標」や「自分の関心に対するやる気」が挙げられます。

また成功体験から得られる有能感はさらにやる気とパフォーマンスを向上させると言うデータもあり、上記のような自己選択による目標を達成した時の有能感は「エゴ」や「賞罰」から生み出される目標の達成と比べて大きいそうです。

まとめ

人間が精神的に健康でパフォーマンスを向上させるには

  • 「好きこそものの上手なれ」状態を目指すことが良い
  • 「好きこそ」の対象は自己決定
  • 社会貢献、好奇心などから人生目標を自己決定するとその状態を目指せる

AtCoder Beginner Contest 116・118・122・123 A・B問題

前書き

AtCoder Beginner Contest 116・118・122・123 A・B問題を解きました。

A問題

  • 難易度:灰
  • 時間:3分

atcoder.jp

A,B,C=map(int,input().split())
print(int(A*B/2))

B問題

  • 難易度:灰
  • 時間:25分

atcoder.jp

まず問題を正しく理解するのに8分ほどかかってしまったので反省。
奇数→ 3*A+1、偶数→ A / 2の計算をしながら、Aは変化します。
1度代入された値に再度代入されるに、ループを終了します。

Am = An (m > n) となった時 => 1度代入された値に再度代入される

A1 → 初期値であり、この時点で1度代入の経験があるとみなします。

import sys
s=int(input())
lis=[0]*1000000
lis[s-1]=1
def kisuu(n): return 3*n+1
def guusuu(n): return int(n/2)

for j in range(1,1000001):
  if s%2==0: s=guusuu(s)
  else: s=kisuu(s)
  lis[s-1]+=1
  if lis[s-1]>1: 
    print(j+1)
    sys.exit()

A問題

  • 難易度:灰
  • 時間:1分

atcoder.jp

A,B=map(int,input().split())
if B%A==0: print(A+B)
else: print(B-A)

B問題

  • 難易度:灰
  • 時間:5分

atcoder.jp

N,M=map(int,input().split())
Mlis = [0]*M
for i in range(N):
  KA = list(map(int,input().split()))
  K = KA[0]
  A = KA[1:]
  for a in A:
    Mlis[a-1]+=1
count=0
for j in Mlis:
  if j==N:count+=1
print(count)

A問題

  • 難易度:灰
  • 時間:1分

atcoder.jp

i = input()
if i=='A': print('T')
if i=='T': print('A')
if i=='C': print('G')
if i=='G': print('C')

B問題

  • 難易度:灰
  • 時間:8分

atcoder.jp

最初、部分文字列を定義を勘違いして4分ほどロスしてしまいました。

S=input()
count,_max=0,0
for i in range(len(S)):
  if S[i]=='A'or S[i]=='G'or S[i]=='C'or S[i]=='T':
    count+=1
    _max=max(count,_max)
  else: count=0   
print(_max)

A問題

  • 難易度:灰
  • 時間:4分

atcoder.jp

import itertools,sys
D = [int(input()) for i in range(5)]
K = int(input())
_D = itertools.permutations(D, 2)
for d in _D:
  if abs(d[0]-d[1])>K:
    print(':(')
    sys.exit()
print('Yay!')

B問題

  • 難易度:灰
  • 時間:7分

atcoder.jp

注文時間の総計が最短となるメニューの注文順を解きます。
1〜4番目の順番はどうでも良いので、最後に注文するメニューは何にすべきかが本質的な問いです。

最後に注文するメニュー以外は10の位で切り上げして合計します。
最後に注文するメニューはそのまま加算します。
この結果最も注文時間の総計が小さくなる順番を答えとします。

import itertools,sys,math
D = [int(input())/10 for i in range(5)]
_min=10000000000
for i in range(4):
  count = 0
  for j in range(5):
    count+=math.ceil(D[j])*10
  count-=(math.ceil(D[i])-D[i])*10
  _min=min(count,_min)
print(int(_min))

アノテーションソフト「Labelme」を起動させようとしたらGUI関連のエラー

前書き

アノテーションソフトを活用したいと思いまして、Labelmeのインストールをおさらいしてみました。
Labelmeの強みはセマンティック・セグメンテーションを実装する際に、訓練データの準備において活用可能な点です。
melheaven.hatenadiary.jp

おすすめ記事です。
qiita.com

Labelmeのインストール元です。
github.com

conda create -n labelme python=3.6
conda activate labelme
pip install labelme

誰でもできる・・・できねーよ!!

エラー

以下のようなエラーが出力されました。
どうやらGUIツールキットであるQtを動作させる際に、xcb関連のモジュールがインストールされていないと仮説を立てました。

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted (core dumped)

forum.qt.io

解決策

export QT_DEBUG_PLUGINS=1

これでQtがロードしようとしているプラグインに関する情報を出力してくれます。デバッグモードで問題解決がしやすくなりそうです。

doc.qt.io

コマンド"labelme"で実行してみます。

Got keys from plugin meta data ("xcb")

Cannot load library /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so: (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: undefined symbol: _ZN11QFontEngine14bitmapForGlyphEj6QFixedRK10QTransform)

libqxcb.soが無いそうです。私の場合はlibxcb-xinerama0が存在してなかったのでlibxcb-xinerama0をインストールしました。

 sudo apt install libxcb-xinerama0

以下の記事曰く、このコマンドでどのモジュールが不足しているのかを見つけられます。

ldd /path/to/python/site-packages/PyQt5/Qt/plugins/platforms/libqxcb.so | grep "not found"

qiita.com

解決しました!