りきゅーの技術メモ

SFC18。東京に魂を売った関西人。コンピュータサイエンス、ドローン、お茶、弓道、哲学とか。スケボーかスノボー始めたい。

【メモ書き】理想と現実の乖離について。

きっかけ

苫野 一徳さんの「はじめての哲学的思考」という連載の第二回『宗教とは何が違うの?』を読んでいて、ふと現実と理想の関係について頭の中が整理され、言語化できたのでメモメモ。
www.webchikuma.jp

メモ

以下がきっかけになった文。

 「ノアの方舟」に代表される、洪水神話もまた各地に存在する。エリアーデによれば、これは、実際の洪水の記録である以上に、世界の終わりと再生を象徴しているという。
 農業には、季節の移り変わりや水の循環なんかがとても大事だ。だから人びとは、この世界がいつかその“循環”をやめてしまうことを怖れていた。そこで彼らは、古くなった世界がいったん滅びて、また若返ってよみがえるという神話を考え出したんじゃないかということだ。

> 純粋に考えると自然環境が変わって循環をやめてしまうことはあるだろう、でもそこに神話を作り出すほどの不安を抱くのは、人間の認知機構が未来のことや世界の複雑性を全て捉えることが可能なほど優れてはいないという事実に反して、またはその結果として、「循環は終わらない。」のように世界を自分たちの都合の良いように解釈し、その解釈を疑う術がない(ほぼ現実と同化する)ことに由来するのではないか。

 つまり苦(肉体的ではない)や不安とは、頭の中に不自然に秩序だった(自分たちに都合のいい)世界・幻想・理想を創り出し、それに”現実味”を帯びさせていることに端を発するのではないか。人間の認知能力の限界として、現実と理想の境界線が曖昧になる。その結果、理想通りに行かないという状況になった時、または理想とは異なる姿の世界の可能性を発見した時、「現実のものではない。本当ではない。こうあるべきではない。」といった現実の打ち消しの思考法によって、現実の否定に走りはじめるのでないか。。。
そしてニーチェが指摘したように、現実の打ち消しの思考法の結果として、宗教や一部の思想が生まれるのではないかと考えた。

組織に東洋思想をインストールする

はじめに

 今回の記事は大学の授業で、組織戦略を変えうるものは何かという課題の回答として書きました。タイトルに東洋思想と入っていますが、簡単に要約すると、考え方の可能性を広げよう!というお話です。

組織戦略に東洋思想

 たとえば組織文化などの戦略において、組織や人に対して哲学や価値観を適用したり、広めようと企画することがある。この時、組織がどの様にあるのが良いか、人間はどういう性質を持っているかなど、戦略を考える上でベースにする思考体系や哲学的問いは、世界中の人類がこれまで築き上げてきた様々で膨大な思想や考え方の体系の中の一握りにすぎない。この局所解的状況から抜け出すことは戦略の可能性を広げる意味で大いに価値があるだろう。

東洋思想が受け入れられるために

 組織や社会、個人に東洋思想が応用されるためには、根本的な2つの命題が受け入れられなくてはならないと考える。
それは、

  1. 世界は無秩序で変化に富んでおり、確かな真理は存在せず、ただ世界への解釈が複数あるということ。
  2. 人間や社会に対する問いは原因論だけで説明することは難しく、目的論の立場も取れるということ。

の2つである。

原理的に解釈自由な世界

 私たちは日本人であるが、物事の考え方は西洋的な(特に近代西洋的な)考え方を多分に含んでいる。これは民主主義などの西洋で作られた近代的な社会制度を輸入していることからある程度必然的である。日本に限らず西洋的社会制度を輸入した他の国や地域も同様であろう。
 自然科学や社会科学は元を辿るとギリシア哲学から続く西洋哲学に行き着く。では、西洋的な思考体系はどの様な点で他の地域のものと区別できるのか。特に重要なことは主知主義であることだ。
 ニーチェによると、ソクラテス弁証法よって論理的に思考していけば必ず真理に辿り着けるとした。このソクラテスによるギリシア世界への主知主義の導入によって、西洋形而上学・近代科学の「真理」感が生まれたという。これは換言すると、世界を秩序立ったものとしてみようとする流れが生まれたということである。
 ニーチェは、この秩序を求める流れに対してディオニュソス的という言葉を挙げた。ディオニュソスとはギリシア神話に登場する酩酊の神で、秩序や形式化された世界に再び根源的な無秩序を取り戻すと言われる。こうして真理を「見つけ出す」という活動を否定し、解釈を「作る」だけだとしたことで、様々な解釈や考え方が許容される、「原理的に自由」な世界が説かれた。

原因論と目的論

 次に原因論と目的論だが、これもギリシア時代から存在した問題である。原因論とは自然科学の様に何かの要因によって何かが一意に引き起こされるといった具合の厳密性を持った因果関係で物事を捉える方法である。対して目的論は、人間のこうしたいという目的をベースに物事の捉え方を決定するということである。
 原因論的に物事を捉えると様々な解釈の可能性を自動的に狭めてしまうため、目的論の立場に立ち、目的を達成するための考え方を広く許容することで、東洋哲学の様に西洋的な思想によって忘れ去れかけている思想も「利用する」可能性が生まれるのではないか。

最後に

 東洋思想がどの様に戦略を変えるかについてはまだわからないが、上記で論じた様に、現代の物事の考え方の枠組みを出た別の考え方を取り入れることによって、戦略は大いに変貌しうるのではないかという可能性を提言する。

参考文献

  1. 丸山宏, 2019「高次元科学への誘い」https://japan.cnet.com/blog/maruyama/2019/05/01/entry_30022958/
  2. 岸見一郎, 1997「原因論と目的論-ギリシア哲学からの考察-」http://adler.cside.ne.jp/database/024/024_01_kishimi.pdf
  3. 竹田青嗣, 1994, ちくま新書ニーチェ入門」
  4. 竹田青嗣, 2002, 岩波ジュニア新書「哲学ってなんだ」

【Django】on_deleteは何をするのか。

何ついて話す?

 DjangoでRESTfulなAPIを開発中です。そんな中models.pyでのモデル記述において、ForeignKeyフィールドを使う際には必ずon_delate引数をしていなければいけません。デフォルトではCASCADEになっているので何となくそのままCASCADEにしがちですが、ちゃんとコイツの意味を知らない思い通りのデータベースを構築できないと気づいたので話します。

on_delate

 on_deleteは例えばmodels.pyの以下のような場面で登場します。

class UserLike(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    artist = models.CharField(max_length=16)

 userフィールドはUserスキーマとのリレーションフィールドになっています。そしてon_deleteが指定されています。
 on_deleteとはリレーションとして繋がっている先(つまりUserスキーマ側)のユーザーデータが削除された時に、UserLikeスキーマ側のデータをどうするかの挙動を示す引数なのです。
 この値にはいくつかの種類があります。いくつか基本的なものを紹介します。

CASCADE

 CASCADEはリレーション先のデータが削除されると、こちら側のデータも一緒に削除されることを意味します。

SET_NULL

 SET_NULLはリレーション先のデータが削除されると、こちら側のデータは残り、リレーションとして紐づいていたフィールドだけがNULL値になります。例えば以下の例では、、、

class MatchingLog(models.Model):
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    teacher = models.ForeignKey(Stylist, on_delete=models.CASCADE)
    datetime = models.DateTimeField()
    rate = models.ImageField(blank=True, choices=RATE_CHOICES)

 これはユーザーと家庭教師のマッチングアプリのモデル(?)ですが、例えばユーザーのデータが退会などで削除されても、家庭教師のレイティングは削除されて欲しくないのでon_deleteをSET_NULLにして置くことで、ユーザーの値はNULLになってデータは残ります。こういう時に使えます。
 ちなみにSET_NULLに設定するにはnull=Trueという引数も指定し、そのフィールドでNULL値を使うことを許可しなくてはいけないです。

PROTECT

 PROTECTを指定すると、リレーションとして紐づいているデータがあれば削除ができないようにできます。例えば上記の家庭教師マッチングアプリの場合、一度マッチングをし、MatchingLogスキーマ側から参照されたユーザーデータは削除ができなくなります。一度もマッチングをせず、MatchingLogスキーマ側のデータと全く紐づいていないユーザーデータは削除できます。

SET_DEFAULT

 SET_DEFAULTはリレーション先のデータが削除されると、default引数に指定しておいた値が削除されたデータの代わりに入るようになっています。

class Food(models.Model):
   name = models.CharField(max_length=16)
   category = models.ForeignKey(Category, on_delete=models.SET_DEFAULT,
                                default=Category.objects.get(name='中華'))

 上記の例の場合、例えば’和食’というカテゴリーが削除されれば、そこに紐づけられていた食品はずべてデフォルトに設定していた'中華'のカテゴリーになります。めちゃくちゃですが.....

参考記事

Djangoon_deleteを使う(django2.0から必須)
narito.ninja

【読書】『哲学ってなんだ』(竹田青嗣, 2002)を読んで。

きっかけ

 この本を読もうと思ったのは、岩波ジュニアということで比較的読みやすそうで、かつ哲学についての概観を掴めるのではと思ったためである。
「ジュニア」と書いてあるが、結構内容は濃く、考えさせられるところも多々あり、活字慣れしていない自分にとってはちょうど良いくらいのウェイトだった。
 これまでラッセルの『幸福論』やパスカル『パンセ』(こちらは読みやすい解説書)、ニーチェの『ツァラトゥストラ』などを読んできたが、ツァラトゥストラに至っては何を言っているのかさっぱり分からなかった....
 ニーチェの解説書などは確かにたくさんある。それでもニーチェの思想は理解できるだろう。それでも原書が読まれるのはなぜか。そこにはニーチェ自身の言葉からしか汲み取れないエッセンスがあるのではないか。哲学とは何か、哲学はどうのような歴史を歩んできて誰がどんなことを考えたか。それを知れば原書も読めるようになるのではないか。そんな考えからこの本を手に取ったのだった....

鳥瞰

 自分は本を読むとき大きな3つのエッセンスだけを汲み取るようにしている。細かな内容はこの3つに関係ある事だけしか記憶しない。
 そんな訳で『哲学ってなんだ』の自分的3つのエッセンスを始めに紹介して、この本を鳥瞰しておこう。

  1. 哲学は普遍的世界理解を編むための「方法」
  2. 異なる世界観、価値観の並立は自然である。(現象学が教えてくれること)
  3. 人間は関係的存在である。

哲学は普遍的世界理解を編むための「方法」

 哲学というとアリストテレスがどうだ、プラトンがどうだ、ニーチェの思想はこうだ、という風に個々の哲学者を思い浮かべる人がいると思う。また「哲学的ゾンビ」とか「アキレスと亀」のように有名な命題やパラドックスを思い浮かべる人がいると思う。自分もその一人だった。しかしこの本を読んでそれは変わった。哲学とは普遍的な世界理解を編むための画期的な「方法」だったのだ。ということが分かった。
 人は死んだらどうなってしまうんだろう。自分はどうしてこの世に生まれてきたのだろう。生きる意味ってなんだ。愛ってなんだ。そもそも人ってなんなんだ。人間なら誰でもこのような疑問に悩まされる時期が訪れるものである。それは今も昔も変わらない。人々はこれらの疑問に対して解を求める。これもまた今も昔も変わらない。
 近代以前の世界においてその解を与える役割を果たしていたのは宗教であった。宗教には例外なく神話が存在する。ギリシャ神話、創世記、日本神話。神話は物語によってこの世界を説明し、人々を「納得」させていたのだ。
 しかし宗教による世界像の説明には問題があった。それは世界がグローバル化へと向かう時間の流れの中で顕在化し始めのだった。
 宗教というものは地域によって非常に多様であり、文化的束縛を強く受ける。よって同じ人間、世界のはずなのに、それぞれ違った文化の元で育った宗教Aと宗教Bは世界に全く違った説明を与え、人々は困惑する。争いを起こす。ここで哲学は文化の枠を超えて全ての人を納得させる世界説明を与え得る。
 哲学が文化に拘束されず普遍的な世界像を編むことができるのは、それが3つの重要なルールを持った方法だからである。

  • 概念を用いる。
  • 原理を提出する。
  • 1からやり直すことを許容する。

概念を用いる。

 概念はどの国、文化、言語においても共通しているものである。英語のwaterと日本語の水は別のものを指しているだろうか。この人類に普遍的な概念を用いて、論理的に世界を説明することこそ、哲学が宗教に代わり世界説明の役目を担うようになった、3つの中でもとくに重要なルールである。

原理を提出する。

 原理とはいわば提案だ。世の中に、同じように普遍的な世界の説明に挑む人達に対する提案だ。
 概念は人類に普遍的なものだと説明した。それでは概念という枠の外側はどうか。当たり前だが人々は初めて目の当たりにするものが何であるかを知らない。つまり概念を持たない。また身近な事象でもその内実がよくわからないものは多々ある。そのようなものに対して納得のいくようなキーワードとなり得るのが原理だ。
 科学が発展する以前の世界に生きる人間に電気について問いただしたとして、我々のよく知る「電圧」や「抵抗」という概念、「電気にはプラスとマイナスがある」という説明を引き出すことができるだろうか。もちろん不可能だ。それはまさにこの「電圧」や「抵抗」、「プラス・マイナス」こそが科学の歴史の中で作り上げられた原理(キーワード)だからなのだ。
 科学が我々与えてくれるものは世界の絶対的な「真理」だと勘違いしている人はかなりいると思われる。それは間違いだ。科学が与えるものはあくまで世界に対する普遍的理解である。
 それは人類の間における了解に過ぎない。というのは言い過ぎかもしれないが、真理というのも言い過ぎだ。というのも自然科学とは哲学から派生した営みなのだ。自然科学は哲学の3つのルールを踏襲し、実験による検証を行うなどして、その方法をさらに高度で精緻なものにしていった。ゆえに信頼性は高いが真理を提出するわけではない。
 現在では自然界の原理を提出する役割は科学が担っているが、人間や社会、さらには科学では説明できない(踏み込まない)領域に対する原理はなおも哲学の担当である。

1からやり直すことを許容する。

 宗教は教祖の教えや予言、神話を何代にも渡り守り続ける。それを覆すことは許されない。このため神話の「解釈」問題という形をとって宗派の分裂が起きたりする。
 対して哲学では一度提出された原理や、それを使って編まれた世界説明を否定、変更することが許容されている。いかに偉大な哲学者が提出した原理であろうと、それよりも人々をより納得させる原理を考え出せたのであれば、古い原理を更新できるのである。これが哲学による世界説明の質を担保してきた。自然科学においても然りである。

異なる世界観、価値観の並立は自然である。(現象学が教えてくれること)

 異なる世界観、価値観の並立が自然であることを納得してもらうにはまず現象学について話さなくてはならない。

主観と客観の一致問題

 近代以前の世界においては宗教がその説明を担っていたことは既に説明した。ヨーロッパにおいてもキリスト教がその役割を担っており、秩序の主でもあった。具体的には、人間も世界も神の被造物であり、存在の意味は神によって与えられていた。そして神は王に民を統治する権限を与えたので、人々は清らかな心で信仰し、王の支配に服することが正しい生き方だと信じていた。
 やがて自然科学や近代思想が支持され始めると人々はこれまで信じていた「真理」がどうやら真理ではないかもしれないという不安に駆られるようになる。これまではおとなしく支配されることが正しいはずだったのに、急に自由だなんて言われても戸惑うのも無理はない。
 近代哲学はこれを「主観と客観の一致問題」として取り上げた。つまり複数の対立するイデオロギーや世界像が並立したときどのようにして「真理」に導くか、どのようにしてこの対立を終わらせるかについて問題化したのだ。以後近代哲学はこの問題に悩まされ続ける。

現象学的還元

 現象学フッサールが体系化した哲学における方法論である。その中でも重要な思考法の一つとして現象学的還元が挙げらられる。この方法とはズバリ「確信の条件を確かめる」ということである。ここで確信とは、信条やイデオロギー、世界観、価値観などのことだ。それまでの哲学は複数の並立するこれらの中から、いかにして「真理」(みんなが納得できる理解)を導くかを問題に指定なのに対して、現象学的還元はどうしてそれぞれの文化や人は異なる世界像や価値観を持つようになるのか、どういう条件でそのような考えに至るのかを確かめようとする方法なのである。
 この方法は重要な認識を世界に与えた。それこそが「異なる世界観、価値観の並立は自然である」ということだ。具体的にはこの方法によって以下のようなことが少しずつ分かってきた。

  • 誰にでも、どの文化でも、同じように通じる世界理解の領域「共通認識」が存在すること。
  • 価値観や美意識の領域は文化や人によって様々で、この領域が同一である理由がない。
  • 従って世界に統一的な世界観や考えは存在し得ない。
  • このことが了解されたとき、はじめて世界像の対立は解決の可能性を持つ。つまり、それは異なる美意識や価値観は相互に承認し合うことによる。

 以上のことを解りやすく示した図が本書にあったので、それを参考に以下の図を書かせていただいた。
f:id:shinta2000ttt:20181018185856p:plain

人間は関係的存在である。

 この記事では紹介しないが本書では近代から現代初期の哲学者とその思想を説明している。著者はその中でも「自己意識の自由」論を説くヘーゲルと、「無意識」の存在を示したフロイトの2人の思想を挙げ、自己と他者の関係について自身の思想を述べている 。自分的に特に印象的だったのはヘーゲルの思想だ。

ヘーゲル

 ヘーゲルは18世紀後半から19世紀前半を生きたドイツの哲学者。近代の先人たちの思想をまとめあげた近代哲学の巨人である。彼の重要な思想の一つに「自己意識の自由」というものがある。彼はそれこそが人間の本質であると説いた。

自己意識の自由

 近代哲学史の初期に活躍したカントは人間の本質は「自由」であると説いた。ヘーゲルはこれに半分賛成し、半分批判した。カントの思想では不十分であると考えたからだ。ヘーゲルは、人間の本質は「自由を求めること」であるとしたのである。この「自由を求めること」と「自己意識の自由」はイコールである。
 自己意識の自由とは、簡単に言い換えるならば「自己への欲望」である。賞賛されている自分、尊敬されている自分、愛されている自分。人間は誰でも例外なくこの欲望を生まれ持っていると指摘したのがヘーゲルだった。
 彼はまたこの欲望は人間関係における他者との「承認ゲーム」でしか満たされないと説明した。友達に認められる、恋人に愛される、親に褒められる、チームメイトに賞賛される。承認ゲームでの成功は自己アイデンティティの維持を助け、時には社会的地位にもつながる。承認ゲームでの成功を通じて、人は「自由」を獲得したと感じるのだ。ここまでくれば承認への欲求は自由への欲求であることが理解できるだろう。
 青年期は人間の自我がもっとも発達する時期である。自らの欲求を満たし自己アイデンティティの安定を図るには本来他者との関係が大切なのだが、それを知らない青年達はここで典型的に3つの間違った方法でそれを解決することが多い。

  • ストア主義(禁欲主義)
  • スケプチシズム(懐疑主義)
  • 不幸の意識
ストア主義(禁欲主義)

 ストア主義とはもとはローマ時代の哲学流派の名前で、禁欲主義とも言われる。その別名の通り、ストア主義の理想は、自然の摂理に従って生き、欲望にかき乱されず常に心の平静を保つことだった。自己アイデンティティを確立しようとする青年達もまたストア主義者のよう振る舞うことがある。
 例えば授業中、教授が質問を投げかけた。多くの学生が手をあげて自分の意見を述べる中絶対に手をあげようとしない生徒がいる。彼らはストア主義者の可能性が高い。
 ストア主義者は「自分はみんなの様に醜い自我の張り出し合いなんかしない。自分はみんなとは違うんだ。」と考える。上の授業の例なら、彼らは、「自分の意見なんて言おうが言わまいが何も変わらないじゃないか。それなのに自分はこんなことを考えてますよ!なんて。かっこつけるなよ。僕はそんなに堕落していないぞ。」とか思ってることだろう。

スケプチシズム(懐疑主義)

 スケプチシズムもまたギリシャ・ローラ時代の哲学流派の名前で別名は懐疑主義。スケプチストの主張は「世の中に絶対なんてものはないのさ」である。その為彼らは全ての物事を相対化しようとする。
 彼らは「みんなは気付いてないけど、世界に絶対的なものなんてないんだから全てのことは相対化出来るんだ。それを理解しているのは自分だけだ。」と考えて自己アイデンティティの確立を図る。授業の例で言えば、「Aくんの意見はここがダメで、Bくん考えはこう仮定するなら全然弱くて、Cくんの意見はそもそも前提が....」という具合で揚げ足取ることだろう。そうスケプチストは揚げ足を取るのが上手い。

高邁な物語

 スケプチストは論破には長けているが、一方で自身は独自の意見というものを持っていない。これを見破られれば彼らは勝てない。そこでスケプチストよりもひとつ進んだタイプが存在する。彼らは高邁な物語を信仰する。
 高邁な物語とはなんだろうか。20世紀初めなら社会主義運動であっただろうし、現代ならポストモダン思想になるだろう。これらは知力のある人間たちが時間をかけて編み上げた世界像だ。そしてこれは重要な性質なのだが、社会ではまだ一般的ではなく理想を含んだ新しい考え方・世界像なのである。これが青年たちを刺激する。
 高邁な物語を支持する青年は彼の口をしてこの世界について理路整然と語ることが出来る。この世界の問題点とその解決方法もだ。これをもって彼らは自分は「正しく高邁な人間」で、他の人たちは遅れた人間だと確認する。同時に彼らは自分の味方をしてくれる仲間を得る。同じ物語を信仰する仲間を。
 著者は高邁な物語のことを「不幸の意識」とも表現している。これはどういうことか。青年たちの信仰する思想は彼らに、その思想が語るところの理想像を強要する。しかし人間は不完全な存在だ。彼らの内側で、理想と現実の自分との乖離が彼ら自身を蝕む。まったくに不幸なものである。
 若者が新しい思想に傾倒することは歴史を鑑みてもよく見受けられることだ。かの悪名高きヒトラーの理想に刺激されてか、彼を支持したドイツ国民は若者が多かったというし、日本でも60年代〜70年代の学生運動は高邁な思想に同定できる。革命はいつだって若者の仕事だった。いい意味でも悪い意味でも若者は社会の代謝を促進する。

人間は関係的存在である。

 これは自分にとっては心が軽くなる言葉だった。自分の性格を客観してみると完璧主義的・理想主義的なところがある気がする。理想主義は自分や自分の個性を絶対視するような側面を持っている。自分も高慢な物語に苦しんでいたのかもしれない。この言葉はヘーゲルのような大哲学者が言っているからこそより響くのかもしれない。普通の人間が言ったところでここまで響く言葉にはならないだろう。一見当たり前で、人生のうちで経験的に学ぶことだろうから。
 上記3つの間違った自己アイデンティティ確立法は自己意識の内部でのみ自らの価値を認めようとする試みである。しかし前述したように自己価値は他者との「承認ゲーム」の中でしか認められないし、欲求も満たされない。これらは不毛な試みなのだ。しかし青年たちはやがてそれに気が付く。そこで彼らは新しい世界の見え方(主観)の存在に触れる。新しい人生が始まる。
 この記事の残りで、フロイトが残した「無意識」という概念、そしてこの「無意識」とヘーゲルの「自己意識の自由」を参考に、現象学的プロセスによる自らの考えも盛り込んだ著者の「自己論」を紹介し、ついでにこの本を読んだ感想を付け加えて終わりとしよう。

フロイト

 フロイトヘーゲルの生きた時代よりもおよそ1世紀後、19世紀後半から20世紀前半を生きた精神科医精神分析学者。現代人に人気なユングアドラーなどの学派も属する深層心理学の祖である。彼の理論は独創的なものが多く、未だに賛否両論が存在しているが、彼の示した「無意識」という概念は人間の心という構造に新たな視点を与えた点で価値が高い。

無意識

 人は生まれながらにしてその性格や人柄が決まっているものだろうか。生まれながらの善人や悪人が存在するだろうか。無意識論の存在する以前において、人間の性格や人柄は生まれながらの性質として変えがたいものと考えられがちだった。現代に生きる私たちの中でこの考えを肯定する人はごく少数だろう。これはフロイトの打ち立てた無意識論によるところが大きい。
 フロイトの語るところでは、無意識とはその人が生まれてからこれまでの人生で、他者や社会の関係の中で経験として得てきた欲望や情動、感受性、関係態度のことである。またこの無意識こそが人間の主体であり、我々が意識している自分とはたんに「主観」であると説明している。そして著者はこの無意識を「身体性」と言い換えている。これは無意識が知らぬ間に形成される要素だからだ。
 上記のことから人間には身体性と主観という2つの体系が存在していることがわかる。また身体性は後天的なものであるから、これからもこれを変えていくことができる。そのアクションを取るのが主観なのだ。
 ヘーゲルの自己意識の自由に加えて、フロイトの無意識論で身体性と主観という概念を使うことで著者は簡潔な「自己論」を読者に与えている。

他者と身体性との対話

 著者は本書の後半部分で以下のように述べている。

人間は自分自身を社会の中の関係的な「実存」として自己了解する必要があるとともに、自己の欲望や感情に対する関係的な実存としても、自己了解できる存在になったのだ。

また世界を知ることについて、

世界に対する自分の理解のありかた、また自分と他者との関係のありかたを了解する、ということなのである

という言葉を残している。
 主観という実存が我々の意識であり、それは内的世界や外的世界との対話の中で内的世界をより快適な状態(自由)に持ってゆくプレイヤーなのだ。最終的に自分はそのように解釈した。
f:id:shinta2000ttt:20181018184205p:plain
なんか主観ってシェルみたいな位置にいるよなあ。

読み終えて

 まずはじめにこの本によって哲学とは何かの明確な答えを得ることができたのは大きな収穫だった。同時に近代から現代の哲学の流れや著名な学者を知ることができたのも良かった。しかしこの本から得たものの中で自分にって最も価値があった思うのはヘーゲルフロイトの思想から導かれた自己論だ。
 最終的に著者がまとめた主観・身体性・他者の3つのプレイヤー。世の中には他人なんて気にするな!とか、他人に好かれる方法とか、色々な自己啓発系の本やWEBの記事があったりするが、その辺りの関係性を綺麗にまとめあげて、身体性と他者とのインターフェースとして主観を鍛える方向性を示唆している点が非常にスッキリして気持ちいいし、きっと同じように感じる人もいるはず。
 この記事で紹介いた以外にも、著者によって現象学的還元や本質観取(本記事未紹介)を使って友人や家族など様々な関係性が分析されていたりする。人によって学び取ることも様々だと思う。

哲学ってなんだ―自分と社会を知る (岩波ジュニア新書)

哲学ってなんだ―自分と社会を知る (岩波ジュニア新書)

自分を知るための哲学入門 (ちくま学芸文庫)

自分を知るための哲学入門 (ちくま学芸文庫)

【Python基礎講座2】変数・データ型②

f:id:shinta2000ttt:20180923164744j:plain:w600

変数

変数とはデータを格納しておく為の箱みたいなもの。以下のように、イコール(=)で変数を定義・代入する。
Pythonにおいてイコールは同値の意味を持たない。

fruit = "apple"

one = 1

右辺のデータを左辺の変数に代入することで、変数で代入したデータを表現できるようになる。

>>>company = "google"
>>>print(company)     #変数companyと文字列"google"は同じものだと認識される
google

変数の名前は文字(a,b,c..)でも数字(1,2,3...)でも構わない。ただし文字はアルファベット小文字を使うこと!また複数の単語を使う場合は単語間はアンダーバー(_)で区切る。
これらはPEP8というPythonのコーディング規約で定められている。

os_name_1 = "Linux"

os_name_2 = "macintosh"
変数の値の更新

変数の中のデータを更新したい(変えたい)時は、もう一度定義時と同じイコールの構文で新しいデータを代入すればいい。

>>>animal = "cat"     #変数animalに文字列”cat”を代入
>>>print(animal)
cat

>>>animal = "dog"     #変数animalの値を文字列”dog”に更新
>>>print(animal)
dog

データ型②(リスト・辞書)


プログラミング言語には複数のデータをまとめて扱うためのデータ型がいくつか存在する。

["a", "b", variable, 9, 26]     #リスト

{"a": "aaa", "b": 26, "k": variable2}      #辞書

("a", "b", 2018, variable3)     #タプル

{"a", "b", 30, variable4}     #セット

これらのデータ型はどのプログラミング言語にも存在していて、これらはあくまでPythonの名前である。例えば、JavaScriptではリストは配列、辞書はオブジェクトと呼ばれたりする。
Pythonの辞書はディクショナリと呼ばれることもある。(まあ英語にしただけだよね。)

リスト・辞書・タプル・セットもまた変数に代入できる。
タプル・セットに関しては次回紹介する。

リスト

リストは角括弧( [] )で表される。リストに収納されるデータをその要素という。
リストは要素に番号をつけて管理する。この番号のことをインデックスという。
インデックスは0番からなので注意!

リストを作るには各括弧で要素を囲うか、list関数に文字列やリスト、タプルなどを渡す。

>>>test_list1 = ["Fortran", "CPBOL", "Lisp", "Algol", "Scheme", "Pascal"]   #角括弧でリストを作る
>>>test_list1
['Fortran', 'CPBOL', 'Lisp', 'Algol', 'Scheme', 'Pascal']

>>>test_list2 = list(("Fortran", "CPBOL", "Lisp", 1, 2, 3))     #list関数にタプルを渡してリストを作る
>>>test_list2
['Fortran', 'CPBOL', 'Lisp', 1, 2, 3]

>>>test_list3 = list("Apple")     #list関数に文字列を渡してリストを作る
>>>test_list3
['A', 'p', 'p', 'l', 'e']
インデックス参照

リストを変数に代入した後、その変数名の後ろに角括弧でインデックスを指定すると、代入されているリストの指定したインデックスの要素を参照できる。

>>>fruits = ["apple", "orange", "grape", "strawberry"]
>>>print(fruits[0])     #リストfruitsのインデックス0を参照
apple

>>>print(fruits[2])
grape     #リストfruitsのインデックス2を参照

ちなみに最後のインデックスは-1 番、最後から2つ目は-2番....とも表現できる。

>>>print(fruits[-1])     #リストfruitsのインデックス-1を参照
strawberry
要素の更新

インデックス参照を用いて、指定したインデックスの要素を更新することができる。指定したインデックスに新たな値を代入するという形で書ける。

>>>fruits[2] = "banana"     #2番目の要素"grape"を"banana"に変更
>>>fruits
['apple', 'orange', 'banana', 'strawberry']
スライス

リストが代入された変数に対して角括弧でインデックスの範囲を指定すると、その範囲の要素を取り出せる。これをスライスという。
※正確には指定範囲の要素のみのリストが新たに作られる。

範囲は角括弧内に、インデックスの数字とコロン(:)で指定する。
例えば、インデックス1番から3番までの要素を取り出したいなら、変数[1:4]という風に指定する。つまりn 番まで取り出したい時は、n + 1番まで指定する必要がある。

>>>animals = ["cat", "dog", "pigeon", "giraffe", "zebra", "penguin"]
>>>animals[1:4]     #1~3番の要素取り出し
['dog', 'pigeon', 'giraffe']

>>>animals[0:3]      #0~2番の要素取り出し
['cat', 'dog', 'pigeon']

>>>animals[1:-2]     #1~-3番の要素取り出し
['dog', 'pigeon', 'giraffe']

>>>animals[-4:-1]     #-4(2)~-2(4)番の要素取り出し
['pigeon', 'giraffe', 'zebra']

ちなみに始まりのインデックスを指定しない( [:4など] )と0番から指定のインデックスまで、終わりのインデックスを指定しない( [3:]など )と指定のインデックスから-1番(最後のインデックス)までを選択できる。

>>>animals[:4]     #0~3番の要素取り出し
['cat', 'dog', 'pigeon', 'giraffe']

>>>animals[3:]     #3~-1番の要素取り出し
['giraffe', 'zebra', 'penguin']
ステップ

スライスの角括弧内のインデックス指定に続けてさらにコロンと数字を書くと、指定の範囲を何個飛ばしで取り出すかを指定できる。これをステップという。
変数[n:m:k]はnからm-1の範囲の要素をk-1個飛ばしで取り出すという意味。注意が必要なのは、例えば1個飛ばしにしたい場合はkのところを2にしなくてはいけないこと!

>>>animals[1:5:2]     #1~4番の要素を1個飛ばしで取り出し
['dog', 'giraffe']

>>>animals[::3]     #最初から最後まで2個飛ばしで取り出し
['cat', 'giraffe']
リバース

変数[::-1]と書くとリストの要素を逆順にしたリストを取得できる。リバースという。

>>>animals[::-1]     #要素を逆順にしたリストを取得
['penguin', 'zebra', 'giraffe', 'pigeon', 'dog', 'cat']

辞書(ディクショナリ)

辞書は波括弧( {} )で表される。
辞書にはインデックスはなく、それぞれの要素に固有のキーというものを対応させて管理する。キーは文字列リテラルで書き、名前に重複があってはならない。

student = {"name": "Kenji", "age": 19,"city": "Tokyo", "university": "Keio univ"}
#{キー:値}と書く、キー&値の間はコンマで区切る
値の参照

リストではインデックスで要素を参照したが、辞書にインデックスは無い。辞書では対をなすキーで値(要素)を参照する。変数["キー"]でそのキーに対応する値を参照できる。

>>>print(student["name"])
Kenji

print(student["city"])
Tokyo
値の更新

リスト同様に値の参照を用いて、指定のキーに新しい値を代入するという形で書ける。

>>>student["university"] = "Waseda univ"     #キー"university"の値"Keio univ"を"Waseda univ"に変更
>>>student
{'name': 'Kenji', 'age': 19, 'city': 'Tokyo', 'university': 'Waseda univ'}

辞書を作るには波括弧で要素を囲むか、dict関数でキーワード引数を使ってキーと値を指定するか、dict関数にキーと値を要素にもつタプル、を要素にしたリストを渡す方法がある。
タプルに関しては次の記事で紹介するので、知らない人はそっちで勉強してから、もう一度この記事を読んで欲しい。
※キーワード引数については関数について紹介する記事で詳しく書くが、キーワード = という風に関数に渡すものだと考えてもらって良い。

>>>test_dict1 = {"Japan": 1.26, "Brazil": 2.63, "USA": 3.25, "China": 13.86}     #波括弧で辞書を作る
>>>test_dict1
{'Japan': 1.26, 'Brazil': 2.63, 'USA': 3.25, 'China': 13.86} 

>>>test_dict2 = dict("Japan"=1.26, "Brazil"=2.63, "USA"=3.25, "China"=13.86)     #dict関数でキーワード引数を使って辞書を作る
>>>test_dict2
{'Japan': 1.26, 'Brazil': 2.63, 'USA': 3.25, 'China': 13.86}

>>>test_dict3 = dict([("Japan", 1.26), ("Brazil", 2.63), ("USA", 3.25), ("China", 13.86)])     #dict関数にタプルを要素としたリストを渡して辞書を作る
>>>test_dict3
{'Japan': 1.26, 'Brazil': 2.63, 'USA': 3.25, 'China': 13.86}

このほかzip関数というものを使って辞書を作ることもできるが、その説明には繰り返し(for文)という処理が欲しく、それはまだ紹介していないので、またの機会に説明する。

まとめ

以上、今回は変数とリスト・辞書について基本的な部分を説明した。
リストと辞書の重要な特徴をまとめると、

リスト:インデックスでデータ(要素)を管理。ゆえにデータの重複は許される。

辞書:キーでデータ(値)を管理。よってデータに順序はない。またキーの名前に重複があってはならない。キーに重複無しならば、データの重複は許される。

質問やご意見受付中。。。

【Python基礎講座1】データ型・Print関数

f:id:shinta2000ttt:20180923164744j:plain:w600

データ型(文字列・数値)

プログラミングにおいて文字や数字は別のデータ型として扱われる。

文字列

文字列は情報用語で「文字列リテラル」と呼ばれる。Pythonではstr型と呼ばれる。文字列リテラルはクオーテーション('')かダブルクオーテーション("")で囲って表記しなくてはいけない。

>>>"文字列リテラル"
文字列リテラル
エスケープシーケンス

Pythonでは文字列リテラルに対しエスケープシーケンスというものが使える。
これはキーボードでは表現できない特別な文字を表すためのものである。
バックスラッシュ(\)で書き始めるのが特徴。
例:
\n:改行
\t:タブ
\':クオーテーション
これは通常キーボードのあるボタンを押して使うだけだが、「文字」として書けるようにすることでコードを書く上で都合が良かったりする。

>>>print('I don\'t have any knowledge about python')
I don't have any knowledge about python

数値

数値はさらにいくつかの種類のデータ型に分類される。Pythonでは
int型:整数値型
float型:浮動小数点数
complex型:複素数
etc....
数値はクオーテーションなどは必要ない。

>>>1200
1200
関数演算子

数値を紹介したので、ここで基本的な演算子を紹介する。
演算子数値計算だけでなく、文字列リテラルや変数の結合にも使える。

a + a   #加算
a - a   #減算
a * b   #積算
a / b   #除算
a // b  #切り捨て除算(小数点以下切り捨て)
a % b   #aをbで割った余り
a ** b  #aのb乗

演算において整数型と浮動小数点数型が混在する場合は、整数は浮動小数点数に変換される。

>>>2.0 * 5
10.0

Print関数

Pythonの基本的な関数の一つとしてPrint関数を紹介しよう。

>>>print("hello world")
hello world

こんな感じで使う。
print()の中に文字や数字を入れる。

文字や数値はコンマで区切れば自動で連結されるが、変数(後に学ぶ)は+演算子で接続しなくてはいけない。

>>>print(1, 2, "せぁーん(ナベアツ)")
1 2 せぁーん(ナベアツ)

nabeatsu = "せぁーん(ナベアツ)"
print(1, 2 + nabeatsu)
>>1 2 せぁーん(ナベアツ)


クオーテーション3つで囲むと改行して書けるようになる。

>>>print("""

いい
ううう""")
あ
いい
ううう
raw文字列

エスケープシーケンスが適用されて欲しくないときは文字列のクオーテーションの前にrを置くと適用されない。raw文字列と呼ぶ。

>>>print(r"~\user\desktop\name")
"~\user\desktop\name"   #\nameのところで\nが改行と認識されない

Print関数にはformatメソッドやf記法というのもあるが、それらは変数の解説時にお話する。

以上、今日はデータ型(文字列・数値)とPrint関数についてお話した。