だぶるばいせっぷす 新館

ホワイトカラーではないブルーカラーからの視点

【プログラミング】 python奮闘記 その10 ~記入欄を作る

この記事は、現在進行系でゼロからプログラミングを勉強している私が、勉強の一環として進展状況をアウトプットする目的で投稿しています。
その為、間違った記述や無駄な作業が結構多めとなっていますが、『それでも良いから一緒に勉強している気になりたい』という方に向けて書いていますので、予め御了承ください。

前回は、ウィンドウを作成したところまで書きました。
kimniy8.hatenablog.com

今回からは、このウィンドウに色々と部品であるウィジェットを貼り付けていきます。
まず、右上の分かりやすい部分に『お見積り』と表示させたいと思います。
画面に文字を表示させるためには、お馴染み『tkinter』の『Label』を使います。
この『Label』は、ものにラベルを貼り付けるように、渡した引数を指定の場所に貼り付けてくれる便利な奴です。

# テキスト表示
heading = tkinter.Label(text="お見積り")
heading.place(x=10, y=10)

英語で見出しのことを『heading』というらしいので、変数名は『heading』とし、そこに、引数に(text="お見積り")を渡したtkinterのLabelを代入しています。
tkinterのLabelが代入された『heading』の位置『place』として、x,yともに10ピクセルを指定しています。

次に必要になるのが、ユーザーが箱の寸法を入力することが出来る、テキストボックスの導入です。
テキストボックスの導入は、『tkinter』の『Entry』で可能になります。
箱には、『幅』と『長さ』と『高さ』がある為、数値を打ち込めるスペースは3つ必要です。早速書いていきましょう。

# テキストボックス表示
box_width = tkinter.Entry(width=10, bd=4)
box_width.place(x=10, y=40)

box_length = tkinter.Entry(width=10, bd=4)
box_length.place(x=110, y=40)

box_height = tkinter.Entry(width=10, bd=4)
box_height.place(x=210, y=40)

f:id:kimniy8:20180604224500j:plain
変数名には、それぞれ『box_』の後に『幅』『長さ』『高さ』を表す英単語を付けています。
テキストボックスを表示してくれる『Entry』には、テキストボックスの長さと装飾具合を引数として渡してあります。
この数値を変えてみると、どうなるのでしょうか?
変数『box_width』に代入している『Entry』の引数を変えてみましょう。

box_width = tkinter.Entry(width=5, bd=20)
box_width.place(x=10, y=40)

こうすると…
f:id:kimniy8:20180604224403j:plain
テキストボックスの長さが半分になって、縁取りの部分が凄いことになりました。『bd』の部分は縁取りの装飾度合いのようです。
大きくするほどにデカくなっていくっぽいですね。

入力欄も出来たことですし、この入力を元に、材料費を算出していこうと思います。
材料費を計算するのに、まず必要なのが、材料をどのぐらい使うのかということですよね。
紙箱のベースとなるボール紙を製紙会社から買う場合は、大きさが決まっていますので、それを何分割出来るのかによって、材料の単価が決まってきます。

今回の簡易見積りでは、細かい計算はせずに、このボール紙を2分割・4分割・6分割・12分割の4つのカテゴリーに分けて、原価に手間賃をプラスした値を材料費とします。
4つのカテゴリーと手間賃を加えた材料費を表にすると、こんな感じ。
f:id:kimniy8:20180604224543j:plain
カテゴリー分けが出来たので、次に、入力された数値を、原材料であるボール紙の大きさに変換しようと思います。
どうやれば、原材料の数字が出てくるのかというと、単純な箱の展開図を思い描いてもらえれば分かりますが、『幅+高さx2』『長さ+高さx2』で出せます。
f:id:kimniy8:20180604224607j:plain
計算式が分かったので、早速、入力欄に打ち込まれた数値を取り出して、計算式を関数に組み込んでみようともいます。
という事で早速、関数の定義です。関数名ですが、見積もりボタンを押した際に発動する予定なので、質問という意味の英単語『ask』とクリックをあわせて、『ask_click』にしておきます。

# ボール紙の大きさ
def ask_click():
    b_hi = box_height.get() # 箱の高さ
    b_wid = box_width.get() # 箱の幅
    b_long = box_length.get() # 箱の長さ

特定の場所から値を取り出すには、get関数を使うと取り出せます。
記入欄の名前は、記入欄の要素を代入した変数なので、その変数に『の』という意味の『.』を付けて、『get()』とし、それを、新たな変数である『b_hi』などに代入しています。
getの隣の『()』は、引数無しで関数を実行するという意味合いのカッコです。

これで、計算の元となる『幅』『長さ』『高さ』の数値が関数内の『b_hi』などの変数に代入できました。
後は、この変数を計算式に組み込む事で、ボール紙の大きさが出せそうです。

    b_tate = b_long + b_hi*2 # ボール紙の長さ
    b_yoko = b_wid + b_hi*2 # ボール紙の幅
    b_tate_f = b_long + 5 + b_hi*2 # ボール紙の蓋の縦
    b_yoko_f = b_wid + 5 + b_hi*2 # ボール紙の蓋の横

『b_tate』という変数に、ボール紙の縦の長さである『箱の長さ+箱の高さ*2』を代入。『b_yoko』にも同様に、ボール紙の横の長さを代入しています。
下の二行は、蓋の場合です。 蓋の方が大きくないと、蓋が閉じられませんから、『+5』と長さを足しています。

これで、入欄から値を取り出して、目的の値に加工することが出来ました。
ちなみにこの関数ですが、発動条件を設定していないので、このままだと動きませんし、正常に動いているかどうかも解らない状態だったりしますがけども。
一応、ネタバレしておくと、この記述では思ったようには動きませんが、次回は、そのあたりの事も扱っていこうと思います。

今回までのプログラムで書いた、コードのまとめはこちら。

import tkinter

# ウインドウ作成
root = tkinter.Tk()
root.title("見積もり")
root.minsize(640, 480)

# 画面装飾
canvas = tkinter.Canvas(bg="black", width=640, height=480)
canvas = place(x=0, y=0)

# テキスト表示
heading = tkinter.Label(text="お見積り")
heading.place(x=10, y=10)

# テキストボックス表示
box_width = tkinter.Entry(width=10, bd=10)
box_width.place(x=10, y=40)

box_length = tkinter.Entry(width=10, bd=4)
box_length.place(x=110, y=40)

box_height = tkinter.Entry(width=10, bd=4)
box_height.place(x=210, y=40)

# ボール紙の大きさ
def ask_click():
    b_hi = int(box_height.get()) # 箱の高さ
    b_wid = int(box_width.get()) # 箱の幅
    b_long = int(box_length.get()) # 箱の長さ
    b_tate = b_long + b_hi*2 # ボール紙の長さ
    b_yoko = b_wid + b_hi*2 # ボール紙の幅
    b_tate_f = b_long + 5 + b_hi*2 # ボール紙の蓋の縦
    b_yoko_f = b_wid + 5 + b_hi*2 # ボール紙の蓋の横

# メインループ
root.mainloop()

【Podcast #だぶるばいせっぷす 原稿 】第29回【ヒッピー】ティモシー・リアリー(5) ~永遠の愛兄弟団

この投稿は、私が配信している Podcast番組『だぶるばいせっぷす ~思想と哲学史』で使用した原稿です。
放送内容は、私が理解した事を元に行っています。ご了承ください。
goo.gl

youtubeでも音声を公開しています。興味の有る方は、チャンネル登録お願い致します。
www.youtube.com
www.youtube.com

ここ最近は定型文のようになっていますけれども、この回から聴き始めた方の為に、一応、言っておきますと
第20回と21回で、ヒッピー・ムーブメントがどの様にして起こったのかという簡単な説明をし、22回と23回で、その運動に大きな影響を与えた幻覚剤、LSDについて、開発の経緯や使われ方について説明しました。
そして、24回からは、このムーブメントの中心的な人物であるティモシー・リアリーに焦点を当てて、より詳しく、この出来事を追っていっています。

その前に、当たり前の事では有るんですけれども、一応注意点として言っておきますと、ヒッピーを取り扱う回では、LSDなどの幻覚剤を始めとした禁止薬物が、頻繁に登場することになります。
それも、ネガティブな取り扱い方だけではなく、人間の可能性を伸ばすといった感じの取り上げ方をしますが、あくまでも、当時、そのように捉えられて研究されていたという解説をしているだけで
現在、使用することを推奨しているわけではありません。 現在は禁止薬物になっているものが大半なので、使用は行わないようにしてください。
法律で禁止されているだけではなく、中毒になって抜け出せなくなったり、最悪の場合は死ぬケースも有りますのでね。

という事で、本題に入る前に、前回の簡単な振り返りから始めていきます。
前回は、ティモシー・リアリーとケン・キージー達の活躍で、様々なヒッピーコミューンが登場したという話から、その一つのディガーズを取り上げてみました。

ディガーズは、資本主義とそれを前提とした社会システムに反抗し、共産主義な主張を自分達の行動で示したコミューンです。
名前の由来は、清教徒革命期に地主の搾取によって富裕層と貧民層が二極化した事に対して抵抗し、共有地とされていた荒れ地を自分達で掘って耕して、反抗する意思を態度で示した団体から取ったものです。
このディガーズを先導していた人物であるウィンスタンリーは、宗教的神秘体験によって啓示を受けて人々を扇動したとされています。
この、神秘的体験が元で考え方や物の見え方が変わり、それを行動に移すという事そのものが、ヒッピー達の行動と重なる部分が多いですよね。

このディガーズに限らず、ヒッピーコミューンは今までの価値観に対して疑問や反感を持つ物が多く、政府としては面白くなかったようです。
幻覚剤のLSDは、この動きの中心に位置していたわけですが、政府はこの薬物を1965年に禁止することになります。
政府としては、元々が冷戦時代に共産主義陣営との戦争に備えて研究開発していた薬が自国で出回り、それによって国民が反政府的な行動をする事が面白くなかったんでしょうね。

ですが、LSDが禁止されたとしても、ヒッピーはそもそもが反体制的な人達なので、そんな事を簡単に聞き入れるわけがありませんよね。
ただ、LSDを公に入手することは難しくなったのですが、禁止された年と同じ年の65年には、オーズリー・スタンリーという大学生が、大学を中退して、カリフォルニアでLSDの製法を独学で習得し、製造を始めます。
この人物の作るLSDですが、大学中退者が独学でつくった代物にもかかわらず、純度が高い最高級品として世界的に人気があったそうです。有名人では、ビートルズなんかもオーズリーの顧客だったようですね。

ヒッピーといえばカルフォルニアなどの西海岸が地域としては有名なイメージがありますが、オーズリーの拠点が西海岸だったことが、大きく影響していると考えても良いんでしょう。
オーズリーが製造するLSDを捌いていたのは、The Brotherhood of Eternal Loveという、『永遠なる愛の共同体』とか『永遠の愛兄弟団』呼ばれる団体です。

この団体は、元々がバイカーと呼ばれる日本で言うところの暴走族とか半グレとかになるんでしょうか。バイクを乗り回すアウトロー集団でした。
ですが、ある日のこと、リーダーのジョン・グリッグスが通行人に銃を突きつけて強盗をした際に、その被害者が所持品として持っていたLSDも奪い取り、それを試した事で神秘的体験をしてしまい、神秘主義にハマってしまいます。
神秘主義にのめり込んだグリッグスは、LSDが引き起こす神秘体験について研究を行っているリアリーを訪ねに、ニューヨークのミルブルックにまで会いに行き、その後、崇拝するようになったようです。これが、1966年のことです。

リアリーといえば、神話の中だけと思われていた神や天使との邂逅などの神秘体験を起こし、人間の思想や行動に影響を与える研究をしていたわけですが、その人物を崇拝しているという事で、グリッグスもその考えに傾倒していくことになります。
つまり、暴走族だった自分が変化したように、神やキリスト、ブッダは実在し、その存在を認識する経験を皆が体験する事で、世の中が本当に変わると思うようになっていったようですね。
そして同年にはカルト団体を立ち上げます。 それが、永遠の愛兄弟団です。

主な活動としては、西海岸のラグナ・ビーチに、健康食品や衣服、喫煙具の販売、そしてLSDの供給をする「ミスティック・アート・ワールド」というヒッピーショップを立ち上げたそうです。
この店は、ヒッピー文化に慣れ親しんでいたり興味がある若者たちや、芸術家を引きつけ、この店に訪れたものの多くがThe Brotherhood of Eternal Loveに共感し、入信したようです。
ラグナ・ビーチ周辺というのは、今でもアーティストに愛されている地域だそうですが、その理由の一つは、兄弟団がコミューンに引き入れたというのもあるんでしょう。

また、アートというものは神秘体験を前提としたヒッピーカルチャーと、相性が良いんですね。
近代芸術などを観てみればよくわかりますが、理解に苦しむ物が多いですよね。 何故、あのような理解がしにくい物が近代芸術に多いのかというと、アートそのもののあり方として、逸脱というものがあるからです。
まだ、誰もやっていない事であったり、既存のものに新たな解釈を与えるなど、前人未到の領域に自分がまっさきに入ることで、新たな価値観を見つけ出して、今やこれからの未来に大きな影響を与えるという事、そのものが一つのあり方だったりするんです。

その方法として一部で使われていたのが、LSDなどの幻覚剤なんですね。
幻覚剤を利用することで、今まで見たことがない景色を見れたり、今まで見ていた景色が違った解釈で見れるということがあるそうなんですが、それを利用すると、今までの常識から逸脱しやすくなるようなんですね。
まぁ、一度も観たことがなかったり感じたことがないものを、自分自身で考えた末に生み出すよりも、幻覚を使用して実際に目で見て感じるほうが早いし楽そうですもんね。

また、ヒッピー側も、アーティストという存在は必要だったんでしょう。
例えば、リアリーのように実験をし、それを元に仮説を重ねていってレポートを書いて、それを読んでもらって理解してもらうというのは、受け手側に一定以上の知識が無いと難しいです。
その一方で、アーティストに思想や考えをイメージ化して貰って、演出してもらえば、そこまで知識レベルの高くない層にも訴求効果がありますよね。

どの宗教でもそうですが、その世界観を伝えるためには、単純に文字や言葉で訴えるだけでなく、建設や絵画、そして音楽によって世界観を提示して、体験してもらうということを行っていますよね。
この様な感じで、考えを見た目で表現できるアーティストは、必要な存在だったんでしょう。

永遠なる愛の共同体は、このヒッピーショプを通じて信者を集めていって、その信者と共に共同生活を行う事でコミューンを形成していったわけですが、人数が多くなりすぎて、次第に土地が足りなくなってきます。
その土地の取得費用や共同体の運営費用を捻出する為に、麻薬販売に手を染めだします。最初はマリファナなどを取り扱っていたようですが、その後は、オーズリーがつくったLSDを取り扱うようになっていったみたいです
ただ、このオーズリーは、1967年には禁止薬物であるLSDの製造を行っていたということで、逮捕されてしまいます。

少し余談になりますが、このオーズリーさんですが、逮捕を機に、LSD製造からは完全に足を洗うことになります。
ではその後、ヒッピーカルチャーを捨てて普通の生活に戻ったのかというと、そういう事もなく、今までとは別の合法的な活動でヒッピーカルチャーに貢献することになります。
その活動が、音響システムの設計です。

オーズリーは、当時、ヒッピームーブメントの中心的存在だったアーティストであるグレイトフル・デッドと行動をともにして、彼らが目指す音を観客に提供する為に、音響システムを作り上げます。
そのシステムが、サウンドウォール、音の壁という意味を持つシステムです。どんなものなのかというのを簡単に説明すると、スピーカーを横だけではなく、縦方向に積み上げる事で、大音量と高音質を実現したようです。
これも単純に上方向に積み上げて、それを並べて壁のようにするのではなく、一列一列の高さを変えて、遠目から見ると波のように見えるよに積み上げていて、その波の形もベース音と同じ様な形になるようにしていたようですね。
この時の様子は、Amazonがオリジナル動画で『グレイトフル・デッドの長く奇妙な旅 』というのが有るんですが、そこで詳しく語られていたりします。プライム会員なら無料で見れるので、興味があったら見てみてください。

せっかくなので、ついでにグレイトフル・デッドについても軽く説明してみましょう。
よくバンドなんかでは、同じ音楽性の人達が集まってバンドを組んで、音楽性の違いによってバンドを解散するなんて事をしますが、このグレイトフル・デッドは、全く違った分野の人達が集まって組まれたバンドです。
メンバーの構成も、前衛クラシックの作曲家がベースをして、R&Bやマーチングバンドのドラマー達がいたそうです。他にも、ブルース出身のハーモニカ吹き、ブルーグラスバンジョー弾き、フォークのギターリストなど、
それぞれバラバラの道を進んでいた人間が集まって、グレイトフル・デッドというバンドを結成しました。

その音楽も、当時の音楽の常識から外れていたようですね。 
今の日本の環境からは想像しづらいですが、当時は…というか、今でもそうなんでしょうけれども、車社会のアメリカでは、ラジオというメディアが結構な存在感で地位を確立していたんですね。
それに加えて、今に比べると記録メディアなども、そんなには発達も普及もしていなかった時代なので、音楽を聞く場合はラジオを通して聞く場合が殆どだったようです。

その様な環境だと、音楽は当然、ラジオで流しやすい事を意識した形で作られることになります。つまり、イントロの長さや盛り上がり、最後の終わり方などを、ラジオ放送に迎合した形で作っていたんですね。
ですが、このグレイトフル・デッドは、当時の社会のあり方に疑問を持つビート世代であったり、これから育っていくヒッピー達の中で活動してきたバンドなので、当時としての普通の音楽は作らなかったようです。
ラジオ側としては、3~5分程度で解りやすく終わってくれる音楽の方が、番組作りがし易いために良かったそうですが、グレイトフル・デッドが作る音楽は、単調なリズムが延々と10数分続く様な音楽で、ラジオでは使われにくい音楽だったようです。

何故、この様な音楽を作ったのかというと、自分達はあくまでもカウンターカルチャー側だという意識が強かったからなんでしょうね。
音楽でメジャーになって、レコードを売って大金持ちになるよりも、ファンとのつながりを大切にする気持ちから、ライブを中心に置いた曲作りを行っていったからなんでしょう。
メンバーの構成や、その曲作りに至るまで、今までの常識にとらわれない行動を取ろうとしていたバンドだったようです。

こういった思想に傾いたのには、LSDの影響も大きかったようです。 LSDには、自分を客観視したり、他の人達を自分と同一視するような体験が出来る効果も有るようで、自分とは違った価値観を、まるで自分のモノの様に再認識出来るようなんですね。
この効果によって、仲間や自分達を支えてくれるファンたちと、より強い一体感を体験できたのも、大きな影響を与えたようです。

話を戻すと、この1967年という年に、このカルト集団がリアリーの拠点をカルフォルニアに用意することで、再びつながります。
というのも1965年にLSDは禁止薬物になた事で、違法薬物を摂取、投与して経過を見守るというリアリーの研究も、当然、違法のものとなるわけです。その為、ニューヨークのミルブルックの拠点はFBIなどからマークされていたんですね。
そして1966年には、先走った保安官、ゴードン・リディーによって、踏み荒らされる事になります。

ただ、この時は、令状も何もない状態で保安官が先走った形になったので、違法捜査という事で逮捕されたりはしなかったようなんですけれどもね。
ちなみにですが、このゴードン・リディーという人物は、愛国心が強い…というか、権力に対して物凄く忠誠が高いようで、現政権の敵とみなした者は、、方法を問わずに追い詰める為に行動する人物のようなんですね。
その為、後の1972年、ニクソン大統領時代になった際、大統領の敵になりうる者、これは、政治関係や反政府組織 問わずのようですが、大統領の足を引っ張りそうな人たちの情報収集を熱心にしまくって、その当時、違法だった盗聴器を仕掛けるなんて事まで行います。
そしてこの行動が、後に、ウォーターゲート事件へと発展し、大統領が辞任へと追い込まれていく事になるようなんですけどね。

話を戻すと、この警告なしの『がさ入れ』や、常時、政府などのシステム側から監視されるという状態に晒されることで、ミルブルックでの実験が難しくなってしまうんですね。
というのも、LSDというのは、摂取すれば いつでもどんな状態であっても、神秘体験が得られるという代物では無いからなんです。
グッドトリップする為には、精神状態を安定させて、特定の方向に持っていかなければならないようなんです。

リアリーは、その神秘的体験をより確実に起こす為に、トリップ中の人にヒアリングをしたりして情報を集めたり、空間づくりを行ったり、普段から瞑想を行ったり。
その他には、チベット死者の書という大昔に書かれた本を引っ張り出してきて翻訳を行う事で、歴史という説得力を持った物をベースにして特定の儀式を行うといった事まで行い、神秘体験が出来るように誘導していくセッションを開発し、改良を続けていました。

ここまで準備をしなければ、リアリーが目指す体験を得る事は難しいと考えられていたわけですけれども、その環境その物が、LSDの違法化や、それに伴う『がさ入れ』によって、大きく変わってしまったんです。
CIAやFBIといった権力側から、常時、犯罪者、またはその予備軍として監視され続けているわけで、リアリーが主催するコミューンの参加者は、絶えずストレスに晒され続ける状況に追い込まれたわけです。
この様な状態に置かれると、トリップによって神秘体験を行うことが難しくなる為、ニューヨークのミルブルックを拠点としたリアリーのコミューンは、次第に崩壊していくことになります。

崩壊した理由としては、この他にも、コミューン内の派閥争いなどもあったそうですね。
主観を前提としたリアリーの研究は、その性質上、意見が別れることも多かったのでしょう。 というのも、普通の物理現象の研究であれば、他の人間も客観的に観察することで確認することが出来ますが、リアリーの研究は、主観的なものですよね。
幻覚剤の投与によって、誰にでもヴィジョンが見えるといっても、そのヴィジョンが同じかどうかを確かめるすべはないですよね。 自分が体験した神秘体験と他人のそれとが同じとは限らないし、断言も出来ないわけです。

この様な性質上、様々な考えや憶測が発生したとしても、どちらの理論が優れているのか、または、正しいのかというのがわからない為、自分の考える理論こそが正しいと考える人達が、それぞれの派閥を作っていったんでしょう。
その派閥同士で、どちらの理論が正しいのかと行った闘いが続いていたらしく、その疲れと、常時、権力者側から監視されているというストレスから、崩壊していったようです。

様々な要因でコミューンは崩壊して常に監視対象となっているミルブルックにも居づらくなったリアリーに、救いの手を差し伸べたのが『永遠の愛の兄弟団』だったというわけです。
リーダーのジョン・グリッグスは、この前年にリアリーを訪問して対談した際に、神秘体験との向き合い方や考え方に対して心を打たれて崇拝していたようなので、手助けがしたかったんでしょうね。
その援助を受ける形で、リアリーは拠点を西海岸のカルフォルニアに移す事になります。

この頃ぐらいからなんでしょうかね。 西海岸のカルフォルニア州がヒッピー達の活動の場となっていくんですが、この続きは、また次回に。

【プログラミング】 python奮闘記 その9 ~関数とかメソッドとかクラスとか

この記事は、現在進行系でゼロからプログラミングを勉強している私が、勉強の一環として進展状況をアウトプットする目的で投稿しています。
その為、間違った記述や無駄な作業が結構多めとなっていますが、『それでも良いから一緒に勉強している気になりたい』という方に向けて書いていますので、予め御了承ください。

前回からは、実際にプログラミングをしてみようという事で、私の本業の見積もりソフトを製作し始めています。
その準備として、前回は『Visual Studio Code (以下 VS code)』の説明を書きました。
今回からは、本格的に書いていこうと思います。
kimniy8.hatenablog.com

作ろうと思っているプログラムは、私が本業の紙箱製作の簡易見積もりの自動化ソフトでしたね。
プログラムを作るのに必要なのは、パッと思いつく限りでは、ユーザーが寸法を入力する『入力窓』と、見積もりボタンを押すと結果が出る『ボタン』です。
この2つの機能を持つのが、『tkinter』というモジュールです。
tkinter』の使い方というのは、第1回でも紹介した本、『12歳からはじめるゼロからのPythonゲームプログラミング教室』に書かれていますので、興味の有る方は、そちらを参考にしてみてください。
取り敢えず最初に『tkinter』を使いたいという事が決まりましたので、早速、1行目に書いていきます。

import tkinter

これで、import終了です。 コンピューターはプログラムを上から順番に読んでいくので、import文は、プログラムの冒頭にまとめて書くようにしておくと良いそうです。
そして次に必要なのが、入力欄やボタンを表示させる為のウインドウです。
このウインドウも、tkinteの中に道具として存在しますので、その関数を呼び出し、ウインドウの設定をしていきます。

# ウインドウ作成
root = tkinter.Tk()
root.title("見積もり")
root.minsize(640, 480)

# メインループ
root.mainloop()

一番最初の『#』から続く文はコメントと呼ばれるもので、プログラムを後から見直す際に見やすくする為の解説文です。
『#』を付けると、その後に続く文1行分ををコードから除外してくれます。改行はできないので注意してください。

2行目で、rootにtkinterというモジュールのTkというウィンドウ作成の関数を代入しています。語尾の()で関数が実行されているっぽいです。(この辺りの認識が甘いので断定できない)
今更になりますが、関数に引き渡される値のことを引数(ひきすう)と呼び、引数がある場合は関数の後の()内に引数を入れます。今回の場合は、引数無しという事です。
3行目で、ウィンドウのタイトルを決めています。ピリオド『.』は、日本語で『の』という理解でいいと思います。
この場合でいうと、root『の』titleとして、見積もりという文字列を引数として渡しています。 見積もりの周りの『""』は、文字列ですよとコンピューターに伝える記号で、『''』でも代用可能です。
最後の列の、root.minsize(640, 480)というのは、root『の』メインサイズを決めるメソッド『minsize』に(640, 480)という引数を渡しています。
意味は、x軸方向(横方向)に640ピクセル、y軸方向(縦方向)に480ピクセルという意味です。

ここで、x軸とかy軸といった一についての話が出てきたので、ついでに説明しておきます。
プログラムでは基本的に、一番左上の隅っこを、x軸y軸共に0として表し、xの値が増える程、右に行く事を表し、yの値が増える程、下方向に行く事を表します。

ピクセルとは単位のことで、お使いのディスプレイがフルHDの場合は1440×1080ピクセル。4kの場合は3840×2160ピクセルが画面イッパイという事になります。
4kやフルHDのテレビを思い出してみれば分かると思いますが、同じ4Kテレビでも40インチや60インチといった幅があることからも分かる通り、ピクセルに絶対的な大きさというものは存在しません。
40インチ4Kのテレビのピクセルと60インチ4Kのピクセルの大きさは違います。
その為、ピクセルというのは『画面のどれ位を占めるのか』といった認識で良いと思います。
当然ですが、ピクセル指定をした場合、ユーザーが出来上がったソフトを4Kで使うのかHDで使うのかで観た印象が変わってくるということも出てきます。

最後のメインループによって、ここで書いたプログラムが起動します。
取り敢えずウィンドウは出来たので、次はそのウィンドウに、色を付けていきたいと思います。
ウィンドウを装飾する関数は、tkinterCanvasです。
ここでまた、後付の説明をしていこうと思いますが、前回にメインウィンドウを作った際に『Tk』という関数を呼び出したと書きましたが、実際にはクラスです。(たぶん)

関数の回で、ちょっとだけ説明をしたと思いますが、pythonでは関数そのものも関数に取り込むことが出来ます。
その特徴を使ってなのか、関数の中で複数の関数を定義している、大本の関数というものが存在するのですが、その様な存在をクラスと呼びます。
書き方は

class クラス名:
	変数の定義、処理など

	def メソッド名:
		処理1
		処理2
	def メソッド名:
		処理1
		処理2

って感じで、クラスの中に組み込まれている(インデント内に有る)『def』から始まる関数のことをメソッドと呼ぶようです。
クラス名の命名方法は一文字目を大文字にして、『_』などは利用しないというのが、暗黙の了解で決まっているそうなんですね。
どうしても『_』を利用したいって時は、使わずにその次の文字を大文字にすることで差別化するようです。例えば、『Japan_kyoto』というクラスを作りたい場合は、『JapanKyoto』って感じ。
これは、後から読んだ時のわかり易さを重視しているだけなので、こう書かないと動かないというわけではないですが、この様なルールを皆で共有できれば、無駄な時間が省けたりしますよね。

一通り説明が終わったところで、本題に戻りましょう。
最初に書いたコードえを繋げたのがこちら

import tkinter

# ウインドウ作成
root = tkinter.Tk()
root.title("見積もり")
root.minsize(640, 480)

# メインループ
root.mainloop()

この、ウインドウ作成とメインループの間に、画面装飾を追加します。
最初に書いておきますと、メインループは一番下固定にしておき、これより下には何も書きませんので、注意してください。

# 画面装飾
canvas = tkinter.Canvas(bg="black", width=640, height=480)
canvas = place(x=0, y=0)

変数『canvas』にtkinterCanvasという引数(bg="black", width=640, height=480)と入れたクラスを代入します。
Canvasの引数の意味は、『bg』がbackground(バックグラウンド、背景)の略で、そこに『"black"』を指定しているので、背景色が黒という意味になります。
『width』と『height』は、日本語直訳そのままの意味で、幅と高さを意味しますので、ここでは『Canvas』の大きさ指定をしているという意味。
次の行では、『canvas』に場所を指定しています。前回も書きましたが、基本的には左上が基準になる為、xとyが共に0のところに置くことで、rootとcanvasを左上で揃える感じで重ねることが出来ます。
今回は、分かりやすいように真っ黒にしましたが、この『canvas』を使うことによって、背景に画像やイラストを指定することも出来ます。

これを実行すると、大きさが640x480ピクセルの、真っ黒な画面が出てくると思います。
これでした準備は終了!この真っ黒な画面の上に、色んなウィジェットと呼ばれる道具を置いていくことにしますが、続きは、また次回にということにします。
kimniy8.hatenablog.com

今回のプログラムで書いたコードのまとめはこちら。

import tkinter

# ウインドウ作成
root = tkinter.Tk()
root.title("見積もり")
root.minsize(640, 480)

# 画面装飾
canvas = tkinter.Canvas(bg="black", width=640, height=480)
canvas = place(x=0, y=0)

# メインループ
root.mainloop()

【プログラミング】 python奮闘記 その8 ~初めてのプログラミングに挑戦

前々回の投稿では、モジュールの簡単な説明を、そして、前回の投稿では、モジュールのimportの仕方を書いていきました。
kimniy8.hatenablog.com
これで、今まで勉強してきて出来るようになった事は、『変数に値を代入』『条件分枝』『関数』『モジュールのimport』と増えてきたわけですが、これだけあれば、物凄く簡単な計算プログラム程度ならかけるようになります。
という事で今回からは、実際に私がプログラムを作っていく過程を、解説を加えつつ書き綴っていこうと思います。

その前に、今までにも何度も注意点として書いてきましたが、この『python奮闘記』は、プログラミング自体を1から始めた人間が、現在進行系で勉強している過程を書いている投稿です。
当然ですが、まだまだ知識不足ですし、プログラミング上級者から見れば、無駄な記述なども多数あると思いますが、そういうものだと思って読んでください。
プログラミングの知識があって、他の人間が書いたスマートなコードを読んで勉強したいって方は、もっと上級者の書いているブログなど検索して見つけて、そちらを読まれることをお勧めします。

前置きはこの辺りにしておいて、早速、簡単な計算プログラムを作っていきましょう。
プログラムを書いていく前に、まず、しなければならない事は、計算プログラムで何を計算するのかというのを明確にしておく事です。
作るべきものがある程度、明確になっていなければ、そもそも作り始めることが出来ませんからね。

という事で今回は、私の本業の『簡易見積もり』を自動で行ってくれるプログラムを作っていきたいと思います。
私の本業は、紙の箱を作るという仕事なのですが、その箱の簡易見積りを自動化しようという試みです。

最終的にコンピューターにやって貰いたいのは、ユーザーが、箱の『幅』『長さ』『高さ』を入力するして『見積もり』ボタンを押すと、一箱あたりの値段が表示してくれるという事です。

箱というのは、モノを入れる側の『身』の部分と、蓋をする『蓋』の部分で出来ています。
『蓋』と『身』は、ボール紙という厚紙を土台にして、その上から色や模様の付いた紙を貼り付ける事で完成します。
つまり、『蓋』と『身』のそれぞれの、『ボール紙の値段』と『紙の値段』を特定し、それらを全て足し合わせれば、最終的な商品の値段が出てくる事になります。

箱の大きさを固定化すると、単純に数個の選択肢から選ぶだけになるので、プログラム的には簡単になりますが、それでは面白くない。
という事で、箱の大きさは、ユーザーが自由に決められるようにします。

とはいっても、製造の設備の問題から、製造できない大きさの箱というのも存在します。
仮にユーザーがその様な数値を入力した場合は、『設備の関係上、作れません』という警告文を出し、値段は表示されないようにしたい。

つまり、まとめると、ユーザーが数値を入力すると、それを元に材料の価格が算出されて、その合計値としての見積もりが表示される。
設備の問題で作れない場合は、その旨を伝えるメッセージを表示させるというのが最終目標です。

という事で、早速作っていきましょう。
・・・と、その前に、プログラムを何処に書いたら良いのかという話をしましょう。
私が主に使っているのは、マイクロソフト提供のフリーで使えるソフト、Visual Studio Code(以下 VS code)です。
使っている理由は簡単で、フリーで使えるからです! プログラムを書くソフトは沢山ありますが、機能が充実しているものほど、有料だったりするんですよね。
プログラミングが本業であるなら、そんなのは必要経費として良いものを使うべきでしょうが、まだまだ勉強中の私は、いつ飽きるかもわからないので、フリーで使えるものを使っています。
他に良いソフトがあれば、教えてください!

という事で、VS codeの簡単な使い方から。
まぁ、私自身が機能を使いこなせてないから、簡単な使い方しか解説できないんですけれどもね。
詳しい解説が観たい方は、googleで検索してください。

まず、VS codeを立ち上げてください。次にすることは、作業用のフォルダーを作る事です。
練習用のプログラムを入れる為のフォルダーを作り、セーブデータは全て、そこに入れるようにしておきましょう。
フォルダーは、普通にマウスを使って作ることも出来ますが、そうすると次の作業が面倒なので、他の方法で制作します。

VS codeを立ち上げると、画面が3分割に分かれていますが、その右下の場所に注目すると、『問題』『出力』『デバックコンソール』『ターミナル』と言葉が並んでいると思いますが、ターミナルを選択します。
すると、windowsコマンドプロンプトと同じ様な画面が立ち上がります。
PS C:~と書かれているのは、今現在自分がいる場所なので、取り敢えず、そこにフォルダーを作ります。
作り方は、『md フォルダー名』と入れれば完成です。

次に、新規で作ったフォルダーの中に移動してみます。
方法は、cd フォルダー名です。 エラーが出ていなければ、今まで書かれていたPS C:~の部分が書き換わり、一番右に先程記入したフォルダー名が書かれているはずです。
これで、ひとまずの準備は完了です。
f:id:kimniy8:20180529205652j:plain
準備が終わったら、左上にある『ファイル』から新規ファイルを選ぶと、上のウィンドウにプログラムが書けるようになります。
プログラムを書く前に、ファイル名を決めて保存しておくと良いかも知れません。
保存方法は、同じく『ファイル』から、『名前をつけて保存』で良いです。 保存先には、先程自分で作ったフォルダーを指定しましょう。
先程自分で作ったファイルの場所がわからない場合は、『ターミナル』のC:~以下の文をコピーして、フォルダーのアドレスを書き込む場所にペーストでも大丈夫だと思います。
保存する際のファイル名は、python(.py)を指定するのを忘れないようにしましょう。じゃないと、動きません。
f:id:kimniy8:20180529205748j:plain
書いたプログラムを実行する際は、ターミナルからファイル名を書くことで実行できます。
ここでも注意ですが、単純にファイル名だけを指定してプログラムを実行しようと思う場合、自分がいる場所にファイルがないといけません。
先程、ターミナルからフォルダーを作って、その場所に移動したのも、保存ファイルを移動先に指定したのもその為です。
実行する際は、.バックスラッシュと打った後に、ファイル名.pyと打ち込みます。

バックスラッシュは、使用しているOSや使っているアプリによっては『\』と表示されてしまいまうので、カタカナで書いているだけで、スラッシュの逆向きの事です。
キーボードでいうと平仮名の『ろ』の場所を半角文字の状態で押すと、バックスラッシュになるはずです。『\』になってしまう場合は、そのまま『\』で置き換えても問題ないと思います。
簡単な操作の説明はこれぐらいにして、次回からは、実際にプログラムを書いていきます。
kimniy8.hatenablog.com

【プログラミング】 python奮闘記 その7 ~モジュールの使い方

前回の投稿では、モジュールの説明を簡単にしました。
この『奮闘記』を最初から読んでくださっている方は、『今更』って感じになりますが、この投稿自体は、pythonどころかプログラミングの初心者が、プログラミングを1から勉強し直す過程を書いていますので、書いている私自身が間違って理解している部分もあると思います。
その際は、優しく指摘していただけたらと思います。

という事で本題です。
前回は、python自身に拡張機能が存在し、モジュールを入れる事で出来る事が増えるという事を書きました。
kimniy8.hatenablog.com

このモジュールは、pythonをインストールする際に一緒にダウンロードされてくるものもあれば、自分自身で別途、ダウンロードしなければならないものまであります。
別途、ダウンロードが必要なものは、単にダウンロードしただけで使えるものだけではなく、別にインストールする必要があったりするので注意が必要です。

私の場合は、前に紹介した本


      

を読んで、書かれているプログラムを写経する際、pygame というモジュールをインストールしなければならない状態になりました。
早速、pygame をダウンロードし、インストーラーを実行してPCにインストールしたのですが… にもかかわらず、pygame が認識されない。
結局、このインストールで詰まってしまい、少しの間、やる気を無くしていました。
結果としては、コマンドプロンプトを立ち上げて、『pip3 install pygame』と打ち込んだら、改めてインストールが始まったので良かったのですが、初心者からしたら、『じゃぁ、最初のインストール作業は何だったの?』って感じですよね。

話がずれたので戻しますと、python というのは、自分で使いたい機能を実現してくれる関数やメソッドが入ったモジュールを探してきて、それを import する事によって、プログラムを作っていきます。
ここで、『メソッド』という新たな言葉が出てきたので、一応解説しておきます後、メソッドとは関数と同じようなものです。
書き方も使い方も関数と同じで、そこだけを切り抜いてみると、関数なのかメソッドなのかわからない程に似ているものです。

では、何が違うのか。 これは、微妙な違いすぎて、私が誤解して理解している可能性も高いですが、クラスに紐付いている関数がメソッドという認識で良いのだと思います。
つまり、基本的には同じものだし、理解としても動き方としても同じものだけど、存在する場所が違うから名前が違うって感じなんでしょうね。
京都の人間は『今川焼き』というけれども、大阪の人間は『回転焼き』という。
両者のお菓子としての違いはわからないし、見分けもつかないけれども、『今川焼き』と呼んだ人間が京都出身で、『回転焼き』と呼んだ人間が大阪出身というのは分かる。

本やブログを読んだ時に、関数と書いてあれば、それは独立した関数の可能性が高いし、メソッドと書いてあれば、何らかのクラスに紐付いていると考えられる…
こんな感じの理解で良いのだと思います。

そして、これは前回の繰り返しになるわけですが、プログラミングというのは、基本的には『自分がプログラムを使ってパソコンにやらせたい操作』は、どのメソッドを使えば実現できるのか、そのメソッドは、どのモジュールに入っているのかを調べる事が、かなり重要な作業だったりします。
『プロとしてプログラマーをやってる人は、どのモジュールでどんな事が出来るのか、全部覚えてるんでしょ?』なんて、私みたいな素人は思ってしまいますが、実はそうでもないようで、『何をimportすれば実現できるのか。』というのは、IT業界の一線でバリバリ働いている人も、ググって探しているようです。
まぁ、python を普通にインストールするだけで、勝手にオマケでついてくる数多くのモジュールを、図書館のように管理して調べられるようにしてくれている『標準ライブラリ』を読むだけでも、頭がくらくらするレベルですし、別途ダウンロードが必要なモジュールまで全部覚えるってのは、現実的じゃないですよね。
Python 標準ライブラリ — Python 3.10.0b2 ドキュメント

そんなわけで、『よく使うモジュール』を覚える程度にしておいて、後は、グーグルの検索能力を磨くのが、プログラマーになる為の一番の近道かもしれません。

モジュールについて復習が終わったところで、次は、実際にインポートする方法を書いていきます。
インポートの方法は3つあって、最初に書くのが一番基本で分かりやすい
import モジュール名
で導入する方法。 余計なものがついていないので、直感的に分かりやすいと思います。

次に紹介するのは、as を使った方法です。書き方は
import モジュール名 as 別名
『as』を利用することによって、モジュール名を別名に変換してインポートすることが可能になります。
これによって、『tkinter』というモジュール名を『TK』って感じで省略して短くすることが出来ます。

『何故、別の名前に置き換えて省略する必要があるの?』と思われる方も多いと思いますが、pythonでは、importしたモジュールのメソッドなり関数を使おうと思うと、最初にモジュール名を宣言しないとダメなんです。
例えば、『tkinter』というモジュールの『canvas』という機能を使おうと思うと、『tkinter.canvas』って感じで書かなければなりません。『tkintar』モジュールの機能を使うたびに、その前に『tkinter.』と付けなければならないので、長いモジュール名だと単純に面倒くさい。
ですが、『as』を使って省略しておくと、『TK.canvas』と書くだけで良いので、文字数が省略できます。ここで注意が必要なのが、略称は、他の関数やメソッドの名前とバッティングしないようにするって事です。

そして最後の方法ですが、最初に書いておきますと、この方法はあまり使わないほうが良いようです。
ただ、色んな所で紹介されているので、一応紹介しておきますと、『from』を使った方法です。
from モジュール import 名前1, 名前2
こう書くと、モジュール内の特定のものだけをピンポイントでインポートすることが出来ます。
from モジュール import *
この様に書くと、モジュール内のみで限定された変数以外を全てインポートすることが可能です。

何故、この様な限定されたimportの方法があるのかというと、この方法で書くことによって、importした部品を使う際に、モジュール名を書く必要が無くなります。
つまり、『tkinter』モジュールの機能を『from』を使ってimportする事によって、本来なら書かなければならない『tkinter.』、『as』を使って『TK』に省略した場合は、『TK.』というモジュール名を書かなくても良くなる為、手間が省けるからです。
かなり便利な機能ですが、何故、あまり使わないほうが良いとされているのかというと、問題が起こりやすいからです。

例えば、複数のモジュールをimportした場合、もしかすると、同じ名前のメソッドや関数、変数があるかも知れません。
この様な名前のバッティングが起こってしまっている状態で、その関数なり変数が呼び出された場合、どのモジュールの値が呼び出されたのかが判断できません。
病院の待合室で順番を待っている状態に例えると、看護師さんが『レオナルドさ~ん』って呼んだ際に、その場に『レオナルド』という同じ名前の人物が3人いれば、皆が立ち上がってしまって困ってしまいますよね。
でも、『ヴィンチ村のレオナルドさ~ん』と補足情報を伝えておく事で、この様な自体は避けれます。

また、少し時間が経過して、後からプログラムを見返した場合に、モジュール名も略称も書いていなければ、その関数なり変数が、どこから呼び出されたのかが分かりません。
そういうのを避けるためにも、モジュール名はできるだけ書くようにした方が、後々のことを考えると良いのかも知れません。

という事で今回は、モジュールのimportを中心に書いていきましたが、次回からは、実際にプログラムを書くことに挑戦してみようと思います。
kimniy8.hatenablog.com

【プログラミング】 python奮闘記 その6 ~モジュールってなに?

前回は、ざっくりとして関数の話をしました。
kimniy8.hatenablog.com
実際の書き方などについては、今後、実際にプログラムをしていく過程で実践していけたらなと思っています。
というのも、関数は過去に紹介したモノ全てを扱える上に、関数自体も関数内に組み込めたり出来るので、例を1~2個書いただけでは伝わらないと思うんですよね。
それに、私自身が勉強を始めたばかりという事で、まだまだ分からないこと尽くしですし…

という事で、関数の話は概念だけに留めておいて、次はモジュールの話をしていきます。

実はpythonというのは、インストールして実行しただけでは、使える能力というのがかなり制限されていたりします。
正直、出来ることが少なすぎて、何が出来るのかすら想像するのが難しいほどです。
まぁ、私と違って物凄く賢い人は、今までに私が紹介してきた事柄だけを使って、自分で『出来ること』を増やしていくんでしょうけれども…
凡人の私には、そんな1を聴いて10を実行するなんて事は出来ません。

では、どうするのか。 pythonでは、モジュールをimportする事によって、機能を拡張することが可能になり、それによって様々なプログラムが利用できるようになります。
他の例で例えるなら、レゴブロックのようなもんです。

pythonをダウンロードしてインストールするというのは、レゴで言うなら、基本パーツを買ってくるだけの状態と同じです。
物凄く想像力が豊かな人であれば、基本パーツを組み立てるだけで、自分の想像通りの世界観を再現できるかも知れません。
想像力が豊かなだけでなく、類まれなる知識や技術があれば、基本パーツを加工することによって、なんでも作ることが加工でしょう。

でも、凡人の私達のような人間は、基本パーツだけを渡されたとしても、積み木遊びの延長のようなことしか出来ません。
『宇宙船を作ってみたいなぁ』と思っても、どうやったら格好の良い宇宙船が作れるのかも分からない。

自分が想像する世界観を実現する為には、どうしても、宇宙船が欲しいけど、自分じゃ作れない…
じゃぁ、どうするの?って時に、レゴの世界ならどうしますか?
そうです。 レゴのスターウォーズシリーズを買ってくれば良いんです!
『格好いい車が欲しいな…』と思えば、レゴニンジャゴーを買ってくれば良い。

この発想はpythonにも当てはまり、自分が実現したいプログラムがある場合、それを実現する為のモジュールをimportすれば、出来る事がグッと広がるんです。

モジュールには、pythonのパッケージをダウンロードした時点でついてくるものもあれば、独自にダウンロードしてこなければならないものもあります。
自分の作りたいプログラムには何が必要なのかを見極めて、そのモジュールをimportする事が、素人がプログラムを完成させるために必要な第一歩となります。

ここで、『じゃぁ、必要なモジュールをimportさえしてしまえば、プログラムを作るのって簡単なの?』と思われる方も多いかも知れません。
確かに、この考えは間違っていないと思います。
適切なモジュールをimportして、その機能を理解して使いこなせれば、自分が全くの1から作るよりも、飛躍的に楽になると思います。
何なら、モジュールが提供している機能を知るだけで、想像力が刺激されて『プログラミングで作りたいもの』がポンポンと出てくるかも知れません。

プログラムに限らず、新分野の勉強をする際に一番重要なものって『ゴール』の設定ですし、そのゴールである『完成品』のアイデアがポンポン出てくるのは、勉強にとってかなりのプラスになると思います。

ただ・・・
モジュールに関しての一番の問題点は、『素人には、どのモジュールがどんな機能を提供しているのかを簡単に調べられない』って事です。
誤解のないように書いておくと、モジュール一覧を検索して見つけて来ること自体は、誰でも簡単に出来るんですが、それを読み解くのに、かなりの根気と知識が必要になってくるんです…
https://docs.python.org/ja/3/library/index.html

リンク先を読んで『余裕で理解できた!』って方は、こんなブログは読みに来ていないと思いますので、多くの方が、逆に混乱したんじゃないかと思います。
私もそうでした。
ただ、こればかりは、日々の勉強によって覚えていくしか無いようにも思えます。

ちなみにAmazonでは、まず最初に『やりたいこと』を決め、そこから逆引きでモジュールを調べられるという本なども売られていたりします。


      

書籍を紹介しておいてなんですが、私はここで紹介した2冊は読んでませんので、この2冊を勧めているわけではありません。買ったあとで文句言うとかは止めてくださいね。
あくまでも、こんな本もあるよって紹介しただけなので、使いやすいかどうかは知りません。読んだ人は感想を教えてください。

モジュールに関して他に書いておきますと、モジュールそのものは、クラスの定義や関数を人まとまりにしたファイルなので、自分自身でクラスや関数の定義が出来るのであれば、自分自身でモジュールを作ることも可能です。
つまり、プログラムを作る際に一度作ったクラスや関数は、他のプログラムを作る際にも使いまわしが出来るってことなんです。

心の広い方などは、自身がプログラムする際に創ったモジュールを、他の方も使えるように一般公開されたりもしているので、モジュールというのは時間が経つ毎にドンドン増えていく。
それに加え、自分自身で創ったモジュールも増えていくので、プログラムは最終的には、自作パソコンを組み上げる様な感覚に近くなっていくんだと思います。

自作パソコンの場合、自身でCPUの開発などはしなくて良く、各メーカーが出す部品を組み立てるだけで、部品を作り上げる知識が無かったとしても、部品のスペックや相性問題を知っていれば、パソコンを作り上げることが可能になります。
それと同じで、オブジェクト指向のプログラミングというのは、色んな人達がクラスや関数の定義をするので、部品がドンドンと積み上がっている状態で、その部品の存在や特性を理解してさえいれば、複雑なプログラムも作り上げることが可能になると言ったものなんでしょう。

簡単に言いましたが、実際にはその『部品』の量が多すぎて、日々の継続した勉強が必要になってくるんでしょうけれどもね。
今回は、モジュールの簡単な説明をしましたが、次回は、モジュールの導入の仕方などを書いていこうと思います。
kimniy8.hatenablog.com

【プログラミング】 python奮闘記 その5 ~関数

前回は、条件分岐であるif文と、それに付随するインデントの話を書きました。
インデントとは、半角スペース4回押し、または、tabボタンを1回押すことで文字の書き始めに空間を開ける『アレ』の事です。
kimniy8.hatenablog.com
このインデントは、if文だけではなく、pythonの文法では基本中の基本っぽいので、確実に覚えておきましょう。
プログラムをまとめる時は、文末に『:』を付けて改行し、文頭に半角スペース4つかtabボタンで空白です。

このインデントは、関数と呼ばれるものにも使われます。
関数とは何なのかというのを詳しく説明するだけの知識は私にはまだないので、私やこのブログを読まれている水準の方の理解としては、一まとまりの計算式として覚えて置く程度で良いと思います。
言い方を変えれば、長ったらしい計算式に名前がつけられるのが『関数』という認識で良いのでしょう。

関数の定義の仕方としては、『def』を利用します。
文頭で『def』を書いて、関数の名前を書いき、文末を『:』で閉めて改行します。
当然ですが、改行をした次の行からはインデントを忘れないようにしましょう。

def 関数名:
  処理1
  処理2

この関数ですが、この中では単純な計算式を書いても、if文の様な条件分枝を書いても変数を定義しても良いです。
つまり、今まで勉強した事を全て使えるということです。
言い換えれば、この『関数』自体が小さなプログラムのようなもので、この関数を組み合わせることで、大きなプログラムが完成するという事。

ただ、ひとつだけ注意が必要なのは、『変数』です。
このブログでは、『プログラムでは変数の理解が重要』と度々書いていますが、関数の登場によって、変数への理解がより重要になってきます。
どの様な理解が必要になるのかというと、関数の外と内側、どちらで変数が定義されているのかというのが、とても重要になってくるんです。

関数の外で定義されている変数は、グローバル変数と呼ばれ、関数内で定義された変数は、ローカル変数と呼ばれます。
両者の違いとしては、グローバル変数は何処からでも呼び出せるのに対し、ローカル変数は関数内で完結します。
また、グローバル変数は 『global』という宣言をしない限り、関数内からは代入して数値を変えることが出来ません。

そして、ここからが重要なのですが、変数は基本的にはローカルで定義し、グローバル変数は極力使わないようにします。
ここで、『何故?』と疑問に持たれる方も多いと思います。私もそうでした。

だって、どう考えても、グローバル変数の方が便利じゃないですか。
一度書くだけで、どこからでもアクセスできるんだから、同じ様な数値をイチイチ関数内に書いたり、関数内の変数に代入するなんて事をしなくても良い。
こんな便利な変数を、何故、使ってはいけないのでしょうか。

答えとしては、グローバル変数を使ったプログラムの場合、後々重大なエラーを引き起こしてしまう可能性が高まるからなんです。
例えば、物凄く簡単で短いプログラムを書く場合は、グローバル変数が問題を起こすなんてことはありませんし、仮に問題を起こしたとしても、そのエラーを見つけるのは簡単です。
だから、グローバル変数やローカル変数を区別する重要性は無いのですが、これが、大規模なプログラムになった場合はどうでしょう。

プログラム内で扱っている関数の数も多くなってきて、それらを全て覚えきれないような量にまで膨れ上がった場合、どの関数がグローバル変数に関連しているのかというのが分からなくなってきます。
『自分は記憶力高いから大丈夫!』という方もいらっしゃるかも知れませんが、一人のプログラマーが作っているのではなく、複数人で作っている場合を想定してみてください。
誰が、どんな関数を作っているのかもわからないし、下手をすれば関数内から『global』宣言をして、グローバル変数に別の数値を代入する輩が出てくるかも知れない。

もしそんな身勝手な人が現れれば、グローバル変数を直接読み込んでいる他の関数が有った場合、その関数が答えとして出す値そのものが変わってきてしまいます。
そういうのを避ける為に、変数は基本的には関数内で完結するローカル変数を使うのが暗黙の了解となっているようです。

話を関数の方に戻しましょう。
関数というのは一連の処理をまとめたものなので、同じような処理をコンピューターにもう一度やらせるといった場合に、本領を発揮します。
つまり、普通に書くと物凄く長ったらしいコードになる可能性があるプログラムでも、共通部分をまとめて関数としておけば、書く量を大幅に減らせるという事です。
一度、関数を定義してしまえば、次からは 関数名()と書くだけで実行出来ますし、プログラムに不具合が出て治す場合も、関数を治すだけで大丈夫。
仮に関数が無い場合を考えると、同じ様なコードを何回も書かされるという面倒くさい状況になりますし、修正する場合は、何箇所も同じ修正を繰り返さなきゃいけませんが、その手間をなくしてくれるのが関数です。

つまりプログラムとは、変数を関数によって変化させて、思い通りの動作を可能にするものといえば良いのかもしれません。

何かに例えた方が分かりやすいと思うので、プログラムを車に例えましょう。
車というのは、細かい部品が数多く合わさって出来ていて、素人がパッと見て構造を理解できるものではありません。
ただ、車が動く原因をドンドンと遡っていくと、燃料の爆発まで遡ることが可能で、これをひとつひとつ追っていけば、実は単純な動作の繰り返しだったりします。

車のエンジン内で爆発した燃料は、ピストンという関数によって上下運動を経て、回転運動に変えられます。
エンジンによって回転運動に変えられたエネルギーは、様々な形の歯車によって、そのエネルギーの方向性を変えて伝えられていき、最終的にはタイヤの回転運動に変わります。
タイヤに到達するまでに数多くの歯車によって方向を変えられるわけですが、この、方向を変えられるエネルギーが『変数』で、方向を変える歯車が『関数』という理解でいいと思います。

この、車の流れに乗って、もう一つ上の説明をすると、関数にはその上の存在として、クラスというのが存在します。
このクラスを利用する事で、複数の関数の共通部分をまとめ上げる事も可能っぽいです。
例えば、歯車というのは『回転する』という共通の働きがあります。 なら、その『回転』だけを取り出して、その動きをクラスとして定義してしまえば、それぞれの歯車が持つ『回転』に関する項目はまとめられるという事。
また、クラス内で変数を定義することによって、グローバル変数使わずに、複数の関数間で変数を利用することも可能になります。

この様な構造をみていくと、良いプログラマーとは、共通している部分を如何にして見つけ出し、それらをまとめ上げることが出来るのかという事なんだろうと思います。
共通項を見つけられれば見つけられる程、書くコードの量はドンドン削減されていく事になりますし、結果として早くプログラムを組むことが可能になる。
コード自体が短ければ短い程、読むのに時間がかかりませんし、シンプルであるが故に、エラーが出た時に手直しするのが楽。

ただ、これって、文章で書くのは簡単なんですが、実践するのは非常に難しいような気もするんですよね。
でも、最終的にはその境地を目指す方向で頑張らなくてはならないんでしょうけれどもね。

という事で、ざっくりとした説明だけになりましたが、関数の話はこれで終わりで、次回はモジュールの話をしていこうと思います。
kimniy8.hatenablog.com

【プログラミング】 python奮闘記 その4 ~条件分枝 if文

前回は、主に代入について書いていきました。
私自身の理解がまだまだのせいか、初歩的な部分しか触れられませんでしたが、変数と代入は頻繁に利用するので、普通に勉強をしていれば触れる機会も増えていくので、今のところは、徐々になれていくしか無いと思っています。
kimniy8.hatenablog.com

という事で、変数はこの辺りにしておいて、次は条件分枝に挑戦していこうと思います。
条件分枝を覚える事で、出来ることが大幅に広がりますし、より、複雑な事をパソコンに命令できるようになります。

ではまず、『条件分枝』とは何なのかという所から説明しましょう。
条件分枝とは、『ある条件』に当てまった場合、先に進むという感じの作業をコンピューターに行わせます。

これを読まれている人達には分かりづらい例になりますが、その昔、『ゲームブック』というジャンルの本がありましたが、それを読み進める作業を自動で行ってくれるのが、『条件分枝』です。
一応、ゲームブックの説明をしておくと、ゲームブックは、最初のページから順番に読み進めていく、所謂『普通の本』とは違います。
ゲームブックは、物語の主人公に自分がなったつもりで読み進めていき、主人公が下す決断は、自分自身で決めていくことになります。

例えば、『貴方は洞窟に入って一本道を道なりに進んでいくと、道が2つに別れていました。 右に進む場合は、20ページへ、 左に進む場合は63ページに飛んでください。』こんな具合に、自分が下す決断によって、次に読むページが指定されていきます。
こんな感じの構成になっている為、普通の小説のように、最初から最後まで読めば、読んだ人が皆、共通の物語を楽しめるといった感じにはならず、読む人間によって、ストーリーが変わります。
当然、選択肢を失敗すればバッドエンドなんてことにもなり、物語が完結しない状態で終わったりもします。

これと同じことを、プログラミングを使って行おうというのが、『条件分枝』です。
条件分枝には、『if』文を使います。

ifは、英語で『もし…』という意味があり、使い方としては、『if』の後に条件を指定して、その条件に当てはまった場合の処理を書きます。
ifを使って書く事で、条件に当てはまった時だけ計算式に誘導し、それ以外の場合は無視するといった事が出来るようになります。
書き方としては

if 条件:
  処理1
  処理2

といった感じで書いていきます。
ifの後にスペースを開けて、条件を書き込んでから、最後に『:』で終わります。
その後、改行してから、どの様な処理をしていくのか書いていくわけですが、ここで注意が必要なのが、『:』を付けた後に改行した際は、半角スペース4つ、または『tab』ボタンを押して、空間を開けなければならないという事。
処理が1つで終わらずに2、3…と続いていく場合は、書き出しは、全部の書き出しの前に空間を開ける必要があります。

空間を開ける意味合いとしては、if文の処理を一纏めにする為です。
普通のプログラムの場合は、1まとまりを{}で括るなどして表現するようですが、pythonでは、空間をあける事でプログラムのまとまりを表現しています。
この一連の行動を『インデント』と呼び、これをしっかりと行っていないと、単にプログラムが見づらいというだけでなく、エラーが出たりしますので、注意しましょう。
『インデント』は、if文だけでなく、この後に説明する『関数』など、他の行動でも頻繁に出てくる為、絶対に覚えておかなくてはならないモノの一つです。

if文の続きを書くと、当てはまった場合は計算式に誘導し、当てはまらなかった場合は、別の行動に誘導するというように、『条件に当てはまる』『条件に当てはまらない』といった条件分枝で、それぞれに別の行動を取らせようと思った場合は、『else』を使います。
書き方は if の時と同じで、最後に『:』を付けて改行し、次の行は処理が終わるまで『インデント』を付けます。

if 条件:
  処理1
  処理2
else:
  処理1
  処理2

ここでの注意は、『else』の書き出しは、if と合わせるということです。
間違って

if 条件:
  処理1
  処理2
  else:
    処理1
    処理2
と書かないようにしましょう。
こう書いてしまうと、『if』で付けた条件を満たさないと『else』が発動しないとい事になってしまい、条件分枝の意味が無くなります。
では、『条件を満たした場合』と『満たさなかった場合』の2つしか道を枝分かれさせることは出来ないのでしょうか。
そんな事はありません。if文には、満たされるべき条件を複数個設定し、それぞれの道に分岐させる為の方法も用意されています。
それが、『else』と『if』を合体させた、『elif』です。書き方も、これまでと同じで

if 条件1:
  処理1
  処理2
elif 条件2:
  処理1
  処理2

とします。『elif』は何個でも好きなだけ追加する事が出来るので、結果として、自分の好きなだけ条件分岐が出来ることになります。
更に、先ほど紹介した『else』を最後に書いてから処理を追加すれば、どの条件にも当てはまらなかった場合の処理も追加することが可能です。
このif文を利用すると、何らかのデータを自動で振り分けるという事が出来たりもするので、応用範囲は非常に広いです。

また、if文で設定する条件ですが、一つの『if』の中に複数個の条件を書くことも可能です。
先ほどから例で書いているので説明すると、『条件1』に複数個の条件を設定できるということです。

それを可能にしてくれるのが、『and』『or』『not』です。 意味は、英単語の意味そのままの意味なので、理解がしやすいと思います。
例を書くと

if a>5 or a<20 and not(a==8):
  処理1
else:
  処理1

って感じで書くと、『a』という変数が5より上か20より下、且つ、7より上で10より下の数字では無いときだけ、if文を実行という事が出来ます。
『and』は両側の条件を両方満たす場合という意味で、『or』はどちらか一方を満たすとき、『not』は、()で括った範囲の条件を反転します。
その為、この例でいうと、aという変数が5より大きい時か、20より小さくて8では無い時にだけ、if文の処理が行われます。

読者の方からご指摘が有って、もう一度見直すと、条件式が間違ってました…
先ほど紹介した場合だと、aが5以上の時か、aが20以下で8以外の時という条件のどちらかを満たせばifが発動するので、結局、全てのケースでifが当てはまってしまい、if文の意味がなくなってしまいます。 自分すら予測してない状態で、『悪い失敗例』を紹介してしまいましたね。
例で『and』『or』『not』の全てを使わなきゃと思って何度も書き直している内に、変な条件式になってしまいました。 まだまだ身についていない証拠ですね。

という事で、改めて条件式の例を書いてみます
if a<2 or 5< a <20 and not(a==8):
  処理1
else:
  処理2

こう書くと、aが2より少ない時か、aが5より大きくて20より小さい時、且つ8以外の時にだけ if が発動し、それ以外は else になるはずです。。

not()内に『or』や『and』を書くと、それの効果も反転するので、注意が必要です。
not(条件A and 条件B)の場合、『条件AとBを両方満たす時』というのが反転し、『条件Aか条件Bを満たさない時』と変化します。
今回例で使った変数aには、単体の数字が含まれているという想定で書いているので、『and』と『or』の違いに然程意味がないような印象を受けるかも知れませんが、扱う変数が複雑なものになった時に、or や and の使い分けが重要になってきそうなので、覚えておくと良いかも知れません。

今回で『インデント』という、段落によって『プログラムを塊ごとにまとめる』という方法を学んだので、次回は、同じく『インデント』を使った関数について書いていきます。

【プログラミング】 python奮闘記 その3 ~変数と代入

前回は、プログラミングを使うと計算ができますよ。ということについて書き、その後、代入の重要性に少し触れたところまで書きました。
kimniy8.hatenablog.com
今回は、その続きを書いていきます。

プログラミングでは、自分で勝手に作った『変数』と呼ばれるものに、様々なモノを代入することが出来ます。
代入によって数値がコロコロ変わるので、代入される側は『変数』と呼ばれています。
そしてプログラミングとは、大雑把に言ってしまえば、『変数』に『代入』するという行為の連続ともいえるかもしれません。

他の例で考えてみると、学問の分野に『経済学』と呼ばれる分野があります。
複雑な計算式などを使って様々な指標を生み出し、その指標を読み解くことで経済を読み解いていこうという分野で、素人目に観ると、複雑そうで難しそうな印象を受けてしまいます。
しかし、経済学を基本レベルまで分解してみていくと、小中学生で習う『需要』と『供給』というところに行き着きます。

例えばパンを製造販売している店が有って、パンを買いたいと思っている消費者がいる。
この場合、店側が供給サイドで、消費者側は需要サイドと言うことになります。
店側は、同じ手間暇をかけて作ったパンなら、『出来るだけ高く売りたい』と思うその一方で、消費者側は『できるだけ安く買いたい』と思っている。

ただ、供給サイドは『売れなければ売上にならないし収入も増えない』為に、妥協して売れる値段で販売しなければならない。
一方、需要サイドは、食品を買って食べなければ、いずれ餓死してしまう。
両者ともに、『売らなければならない理由』と『買わなければならない理由』があり、妥協した末に、両者が納得できる価格を見つけ出す。それが、現在の価格ということになります。

経済学の理論や計算式は複雑に見えるかも知れませんが、経済の基本を突き詰めていくと、最終的には『需要』と『供給』というところまで行き着きます。

プログラムも同じようなものらしく、どんなに大きなプログラムであったとしても、突き詰めていくと、ユーザーが起こしたアクションを『変数』に『代入』して数値を加工するというところに突き当たります。
プログラムは、ユーザーが数値を打ち込んだり、何らかの選択肢を選ぶ事で元となる数値が入力され、その数値を計算によって加工して、目的となる答えを導き出します。

つまり、プログラムが進むことで、変数がどのように変化しているのか、そして、変化させる為にどの様な方法が使われているのかという事が完璧に理解できるのであれば、プログラムは読み解けるし、応用すれば書くことも出来るというわけです。
前回、変数を制するものはプログラミングを制すると書いたのは、この理由からです。

では具体的に、『変数』にどのようなものを代入できるのでしょうか。
私の様にプログラミングの知識がゼロの初心者では、代入と聞くと、単純に数値を当てはめることぐらいしか思いつきません。
例えば
a=3
b=7
と数値を代入した場合は、a+cを実行すると『10』という答えが返ってくる。でも、これだけであれば、わざわざ代入する必要もなく、普通に3+7とすれば良いだけですよね。
何故、わざわざ代入するのかというと、この変数は、素人が考えるよりも多くのものを代入できるからなんです。

例えば、複数の数値や計算式その物を代入することが出来ます。
x=200, 300, 400 といった具合に、一つの変数に複数の値を代入することも出来ますし、 x=x+1 といった計算式も代入することが出来ます。
ここで、x=x+1 という計算式に違和感を持たれる方も多いかも知れません。 『=』を、普通の算数と同じ様に『右辺と左辺が同じ値(イコール)』だと思っている場合、計算式自体が成り立ちませんよね。
ただ、プログラミングでいうところの『=』は、前回も書きましたが、『右辺の数値を左辺に代入する』という意味しか無く、算数的な意味合いのイコールを使いたい場合は、『==』とイコールを2個続けて表記する必要があります。
この辺りをしっかりと認識しておかないと、プログラムを読む際にも書く際にも面倒な事が起こりがちなので、注意が必要ですね。

その他には、比較的理解もしやすく重要な代入の使い方として、『数値のわからないものを仮定する』という使い方も出来ます。
先程も書きましたが、プログラムとは、基本的にはユーザーに何らかのアクションを起こして貰って、それをキッカケにして計算結果を出すものです。
例えば、3つ程の数字を記入する欄があり、その欄に数字を記入して『開始』ボタンを押すことで、何らかの計算結果を出してくれるプログラムが有るとします。
このプログラムは、ユーザーに3つの数字を入力してもらい、その数値を元に計算を行うわけですが…

プログラムを書いている時点では、ユーザーがどの様な数値を入れるのかは分かりません。
ですが、ユーザーが入力する数字を変数に代入するという作業を行い、その変数を利用して計算式を書くという方法であれば、入力欄にはどの様な数字を入力されたとしても、計算が行えることになります。

例えば
入力欄A【  】 入力欄B【  】 入力欄C【  】
という入力欄を作り、入力された数字の合計値を出したい場合、それぞれの入力欄にA.B.Cという名前をつけて代入し、その変数を元に計算式を書けばよいということになります。
A=入力欄A
B=入力欄B
C=入力欄C
answer=A+B+C
こうすれば、入力欄にどんな数字が入力されたとしても、簡単に計算することが可能です。
ちなみにですが、この場合はA+B+Cの合計値を『answer』という変数に代入しているだけなので、この変数を使って別の計算式を作ることも可能です。
また、前回から書いている作業は重ねがけが可能です。

例えば、入力欄A.B.Cで得られた値がstrという『文字列』属性を持っている場合は、answerに代入される答えば、自分が思っているような答えになりません。
『整数の数字』で足し算をしたいのであれば、A=入力欄A を A=int(入力欄A)、小数点以下も扱いたいのであれば、A=float(入力欄A) という風に属性指定する必要も出てくる場合があります。

この代入に関しては、かなり奥が深い様なので、私自身もまだまだ表層的な部分しか理解できていませんが、代入に関しては一旦ここまでにしておいて、次回は、プログラムでより複雑な計算ができるようになる、条件分枝をやっていきたいと思います。
kimniy8.hatenablog.com

【プログラミング】 python奮闘記 その2 ~プログラムは計算が出来る

前回の第1回では、読んだ書籍について書いていきました。
kimniy8.hatenablog.com
第2回からは、実際に私が学んだことや理解した事について書いていこうと思います。
というのも、私はプログラミングの勉強をしている際に、本だけでなく様々なサイトにも目を通しているのですが、多くのサイトで、アウトプットの重要性について書かれていたんです。
自分で本などを読んで完結するだけでは、理解も浅いし発展もないようなんですね。それよりも、理解した範囲や試したことをアウトプットするほうが、自分自身で整理も出来て良いようなんです。

という事で私も自分自身の発展の為に、プログラミングで理解できた部分などを書いて公開していこうと思い、このシリーズを始めてみました。
プログラミングの超初心者が書いている投稿なので、理解不足の点や間違った知識で書く事も多々あるとは思いますが、その辺りは御了承ください。
この先、自分でプログラムを書いて、その過程を公開する予定ですが、その際にも間違ったり効率が悪い方法で取り組んでいたりする場合も有ると思いますし、詰まって先に進めないといった場合もあるとは思いますが…そういった際は、優しく教えていただければ幸いです。

まず、私の勉強している『python』で何が出来るのかというのを書いていきます。
『プログラミング 出来ること』と書いてgoogleなどで検索すると、質問が漠然とし過ぎているのか、色んな『出来る事』がヒットしてしまい、余計に混乱してしまいます。
まぁ、そうですよね。 電卓のような超簡単な計算や、Twitterの様な世界レベルで展開されているサービスやPS4のゲームまで、同じ『プログラム』によって出来ている為、『何が出来るの?』と漠然とした質問をしても、『何でも出来るよ。何がしたいの?』と質問し返されて終わりです。
こんな状態な為、知識の無い私のようなものからすれば、プログラミングで出来る事を調べてゴールを定めようとしても、余計に混乱してしまうだけです。

そこで、もっと単純に基本に返って『プログラミングで出来る事』を私なりに考えた結果、辿り着いて理解できた答えは、『計算』です。
IT系の仕事をしている人が聞いたら『何当たり前のこと言ってんの?』と怒られそうなんですが、素人はその当たり前が分からなかったりするんですよ。
という事で、私と同じ様にプログラミングを1から勉強する人は、これだけは覚えておいてください。 プログラミングとは、コンピューターに計算させる事なんです。

これを踏まえて、まず、『python』の基本から。
pythonプログラミング言語で、言語とついているので難しそうな印象を受けるんですが、基本的に行っている事は計算です。
まぁ計算と言っても、足し算のように小学生でも分かる計算から、大学を出ても頭を悩ませる計算まで有るわけで、難しい計算方法を知っている人ほど、コンピューターに難しい指示(計算式)を出すことが可能なわけで、より複雑なものを創り出すことが可能になるわけですが…
まぁ、素人がパッと思いつく『作りたいもの』には、そこまで複雑な計算は使われていないと思いますので、その辺りの心配は、今はしなくて良いのかも知れません。 必要になった時に勉強するってレベルで良いのかも?

…と、前半部分が長くなりましたが、それでは本題に入っていきます。
まず、pythonというプログラムを書いて実行するためには、pythonをダウンロードしてきてインストールするという作業が必要になってくるわけですが、その辺りの事は、『python インストール』でgoogle先生に教えてもらってください。
pythonをインストールすると、晴れてpythonでプログラムを書いて実行することが可能になります。
プログラムは、普通にメモ帳に書いて『.py』で保存しても良いのですが、それよりも、エディターを使用したほうが良いと思います。何故なら、エディターで書いた場合は、書いたプログラムが間違っていたりした場合は、その時点で教えてくれたりするからです。

エディターは様々なものがありますが、使いやすくて親切設計になっているものは、お金を払わなければいけないものも有るので、私はマイクロソフトが出している『visual studio code』というフリーソフトを使っています。
プログラミングの先輩方で、『もっと良いのが有るよ!』って方は、教えてください。お願いします。

プログラミングを書ける環境が揃う事で、準備は万端となるわけですが、ここで、初心者である私達はつまづくことになります。
『何を書いて良いのかわからない…』『ってか、したいことって何? 何が出来るの?』
ここで、先程の私が理解した基本に立ち返ってください。 プログラミングを使うと、『計算』出来るんです!

visual studio codeを使っている人の場合は、ソフトを立ち上げると、画面が上下に二分割されていると思いますが、その下の部分に『ターミナル』というタブがありますが、それをクリックすると、コマンドプロンプトと同じ様な画面になります。
その部分に『python』と入力すると、pythonが実行されて使用可能になり、その合図として、『>>>』と表示されるようになります。

その状態で、1+3と入力してreturnを押すと、4と表示されます。
『+』の部分に『-』を入れると引き算になり、『*』を入れると掛け算になり、『/』を入れると割り算になります。
当然ですが、複数の数値を入れても計算は可能です例えば
1+3*8の様な感じも可能ということ。

計算方法は普通の算数と同じで、掛け算と足し算がある場合には掛け算が優先されますので、答えは25ということになります。
足し算を優先させたい場合は、これまた算数と同じで、足し算部分を()で囲ってしまえばよいというわけ。
(1+3)*8とすれば、答えは32になります。

その他にも、このpythonという超凄い計算機では、文字も計算式に組み込めます。例えば
"だぶる"+"ばいせっぷす"
と書いてreturnを押せば、『だぶるばいせっぷす』と返ってきますし、"だぶる"*2 と書くと、『だぶるだぶる』と返ってきます。

文字でも数値でも、なんでも計算に組み込めるのが、このスーパー計算機の凄いところなんですが、一つ気をつけなければならないのが、値の属性です。
ソシャゲでも、水属性のキャラに合成できるのは水属性だけ!みたいなルールがあるゲームもありますよね。それと同じで、pythonでも、計算する際には、式に含まれる値の属性に気をつけなければなりません。
属性は3つで、int(整数) float(不動小数点) str(文字列)で、扱う属性がどのようになっているのかに気を配っておく必要があります。

例えば、100+100という計算をした場合、普通なら200という答えが返ってこないといけませんが、この『100』という数字が、str(文字列)として認識されている場合は、答えとして『100100』という値が返ってきてしまいます。
プログラムでは、自分で数字を入力して計算させるという機会は少なく、何処かから値を取ってくるという方法で計算式に数値を組み込んでいきますが、取りに行く数値が文字列型となっている場合は、これを数字に変換して扱う必要が出てきます。
そういった場合は、int(整数に変換したい対象)と言いた感じで、intの後に()を付けて変換したい対象を書き込めばOKです。 小数点にしたい場合も同じで、float()とし、数値を文字列に変換したい場合はstr()で書くと、数字が文字として扱われます。

ただ、これだけでは、ただのちょっと凄い計算機に過ぎません。
プログラミングの凄いところは、変数というものを利用して数値を代入できるところにあります。

例えば
a=3
b=4
a+b
とした場合、答えが7になるという事。
ちなみに言っておきますと、『a=3』の『=』は、算数でいうところのイコール(同じ)という意味ではありません。 右辺を左辺に代入するという記号です。
pythonで同じという表現を行いたい場合は、『==』とイコールを2個続ける必要があります。ただややこしいのが、『<=』の場合は、普通に『小なりイコール』になり、『<==』と書かなくて良かったりしますが…この辺りは暗記でしょうね。

代入の話に戻ると『で?何が凄いの?』と思われる方も多いでしょう。私もそうでした。でも、この代入できる事が凄いことで、おそらくプログラミングで一番多く使用するのが、この代入だと思います。
一番良く使うし、代入が無いプログラムなんて考えられないって感じで、代入を制するものがプログラムを制するといっても良い程に代入は凄かったりするのですが、続きはまた、『奮闘記その3』で書いていこうと思います。
kimniy8.hatenablog.com

【プログラミング】 python奮闘記 その1

ここ最近、本業がヤバイぐらい暇になり、この先も続けていけるのか不安になってきた為、今のうちに新たな技術を身に着けておこうと、プログラミングの勉強をはじめてみました。
勉強している言語は『python
何故、『python』を選んだのかというと、最初に書いた事をTwitterで呟いたところ、『python良いですよ!』と進められたからです。

勉強し始めてからわかったことですが、pythonは今流行りの機械学習なんかで、ほぼ独占状態になっているので、結構、熱い言語みたいですね。
また、言語自体も分かりやすいらしく、初心者がプログラミングを習うにはもってこいなんだそうです。
ただ、PearlでもRudyでも『初心者が始めるにもってこい!』って主張してるんで… 本当は何から勉強すれば良いのかは、正直わかりません。

こんな感じで、結構適当に『勉強しよう』と思って始めたのは良いのですが、プログラミングの勉強そのものが初めてなので、何から初めて良いのかわからない…
私は過去には、【HTML】や、それに付随する【CSS】なんかは勉強して、本業の宣伝サイトを作ったことがあるのですが、それとは全然、勝手が違う。

というのもHTMLというのは、基本的にはタグで囲むだけで出来るから、基本構造を理解するのに1時間もかからないし、勉強しようと思ったその日から、試しにテストページを作るなんて事も出来るんですよね。
HTMLの知識がない人の為に書いてみると、こんな感じ。

<p>段落でまとめる</p> <b>太文字にする</b>
<>でタグを作って、同じタグを『/』を付けたタグで閉めればOKで、後はタグを使ってレイアウトしていくだけなんです。
こんな感じなので、テストページを3日程かけて作ってしまえば、、後は、それを装飾する為に他のタグを覚え、編集しやすくするためにCSSを勉強するという筋道もハッキリしているし、何よりも、HTMLを使って作りたいページというのが明確にイメージできる。
ゴールを明確にイメージできるのであれば、後はゴールに向かって進むだけなので、作りながらわからない部分を検索して、自分のソースに導入するなんてのもイメージしやすい。

でも、これがプログラミング言語となると、話が変わってきます。
初心者では、HTMLの様に直感的にイメージできるものではありませんし、そもそも、どこから勉強してよいのかも分からない。
本当は、人に習うのが一番いいのかも知れませんが、pythonを京都で教えている所がまず無い状態ですし、他の言語を教えるプログラミング教室がないこともないですが、料金が結構高めに設定されている。

何となくプログラミングを始めた私が、そんな出費を覚悟しているわけもなく、取り敢えず本を購入するところから始めてみました。
まず最初に購入した本はこちら。


      

まず、『Pythonスタートブック』というネーミングが良いですよね。
しかも、『全くのゼロからでも大丈夫!』って書いてあるので、プログラミング知識ゼロの私にはもってこいのはず。 って事で、早速購入して読み始めてみました。

読んだ感想としては… 『まぁ…良いんじゃないですか?』って感じ。
社会人がプログラミングを勉強する事を前提として書かれている感じで、『hello world』の出力から始まり、簡単な計算や変数への代入。
関数の作り方や、モジュールのimportの仕方、ifを使った条件分枝やforを使ったループの文まで一通り丁寧に解説してありましたが…

じゃぁ、これを読んでプログラミングが出来るようになるのかといえば、私は出来るようにはなりませんでした。
料理で例えるなら、人参やジャガイモと言った素材の説明から、それを調理するための切り方が懇切丁寧に書かれていて、その後に、『切った野菜に塩等のスパイスをかけると、良い感じになりますよ。』ってことが書かれている。
そして次の章で、『野菜の切り方とスパイスの存在は理解してもらえたと思うので、後は自分で試行錯誤して、カレーを作ってみましょう!』みたいな感じ?
書かれているソースを丸写しする事でプログラムは動くのですが、それを自分で一から作れと言われても、何処から作り始めてよいのかもわからないし、他に応用も出来ない。

まぁ、これは単純に私の理解能力が低すぎるだけで、並の学力がある人間であれば、これを読むだけで自分でプログラムが書けるようになるのかも知れませんが、私が読んだ限りでは、書ける様にもなりませんでしたし、どんな事が出来るのかも想像できませんでした。

その事を、再びTwitterに投げかけてみたところ、ゲームのプログラムが付属している本が有ると紹介頂いたので、次はそちらを読んでみました。


      

この本は、前半部分は最初に紹介した本と同じで、基本的な部分からの説明になってはいるのですが、違う部分が有るとすれば、pygameという別のモジュール?のインストールが必要になる事です。
最初に紹介した本の内容を前半部分だけで説明しているだけあって、内容は最初の本に比べると圧縮されていますが、既に1回説明を受けている私にとっては、これぐらいの説明の方がまどろっこしくなくて良かったです。
そして後半部分では、ゲームが紹介されていて、そのソースコードそ解説が載っています。

買った当初こそは、『これこそ、求めていた本!』って感じで喜んで読めてましたが、ゲームのソースの説明になった辺りから、全く読み進めない状態に。
というのも、書いてあることが理解できないんですよね。 取り敢えず、写経でもしてみれば良いんじゃないかと思ってゲームのソースを書き写して観るというのを数回繰り返してみたのですが…
そもそもソースに書かれている事が理解できてないので、写経の意味があるのか無いのかすら分からない。
仮に、『ここに紹介されているゲームと似たゲームを作って。』と誰かに言われたとしても、絶対に作れない自信がある。
何度も言いますが、何処から書き始めてよいのかすら想像ができない状態なので、当然、ゲームを完コピで作ることも出来ませんし、アレンジなんてもっての他。

賢い人であれば、このレベルの本でもスムーズに読み進めることが可能なのかも知れませんし、私にもっと知識があれば、書かれていることを理解して応用することも出来たのかも知れませんが、私にはまだ、早過ぎたようでした。。

とうとう行き詰まり、プログラミングについての興味も徐々に失われていってしまったのですが、ここで、ある言葉を思い出しました。
『新分野の勉強をする際には、社会人に向けられて小難しく書かれた本ではなく、小中学生向けの入門書を読むと良いよ。』

この言葉を思い出し、元々そんなに無いプライドを捨て、購入した3冊目の本がこれ

      

こ・れ・が、大当たり!!
この本も、ゼロからと謳っている通り基本から親切丁寧に書かれているのですが、親切度合いが違います。
普通に基本を勉強してプログラミングをした場合、素人考えならこんな感じでコードを書くんじゃないかな…って事を予測して上で、素人っぽくコードを書いて紹介してくれています。そして、実際にそのコードを実行すると、見事にエラーが出ます。
エラーが出たあとで読み進めると、『エラーが出てしまいましたよね。 普通はこんな感じでコードを書きたくなってしまいますが、pythonの設計上、そう書くとエラーが出てしまうので、回避する為にこの様に書きます。』
って感じで、素人が失敗しそうな行動を敢えてとって解決方法を提示するという方法で書かれているので、かなり理解がしやすい。

また、この本では5つぐらいのプログラムが紹介されているんですが、それを自分なりに書き換えることで応用する事が結構簡単に出来る感じです。
例えば、最初に紹介されている、テキストボックスに適当な数字を入れると、それを時間に換算してくれるというプログラムがあります。
書き込みスペースに『360』て書くと、『6時間です』って返してくれるプログラムなんですが、それを応用すれば、私の本業用の簡易見積りツールなんかも作れる感じです。

その他にも、簡単なRPGのプログラムがあるのですが、これを応用すれば、時間さえかければファミコン版のドラクエレベルならすぐに作れそうな感じもします。
つまり、この本の素晴らしいところは、『このプログラムを応用すれば、こんな事もできるんじゃないか?』と思わせてくれるところなんですよね。

プログラミングに限らず、あらゆる分野で成長するために必要なのは、モチベーションの維持とモノを作り続ける事だと思いますが、プログラミングの場合、そもそも何がどんな方法を使えばどんなモノが出来るのかというのが分かり辛く、そもそも初心者の段階ではゴールの設定が出来ない訳ですが、この本は、そのゴールを見つけさせてくれたという点で、私にはかなり合っていたんでしょうね。
という事で、現在、本業が暇すぎる私は、簡易見積りツールを作っているわけですが、機会があれば、奮闘記シリーズで進捗状況を報告していこうと思います。
kimniy8.hatenablog.com

今は景気が良いのか悪いのか

ここ最近は不景気なのか、わたしの本業がかなりヤバイ状態です。
詳しい業務内容は書きませんが、京都の土産物産業に関わる仕事をやっているのですが、ここ数年の落ち込みがかなりヤバイ。
京都といえば、外国人観光客で賑わっていて、その消費で物凄い活気づいているというイメージを持たれている他府県の方も多いかも知れませんね。
随分前のことになりますが、前の国政選挙で安倍首相が『日本人が観光旅行しても全然カネを使わないが、外国人が旅行に来ると、京都に来て1回あたり20万も使う!』なんていってましたが…
実際に京都に住んでいる私の印象では、外国人が増えてからの方が景気の減速が加速している感じです。

『それは、お前だけの印象だろ!?』なんて反論もあるかも知れませんが、京都の税収は落ちているという事実が有るので、主観的な印象だけというわけでも無かったりするんですけどね。
まぁ、先程の首相のセリフに反論させていただくと、平均滞在日数が10日で、一回来たら九州から首都圏まで移動しまくり、交通費も含めて20万使って帰る外国人旅行客と、日帰り旅行で15000円使ってくれる日本人観光旅行客を比べるのがオカシイわけで…
京都に来ても、伏見稲荷祇園をぶらつくといったお金を落とさない行動に終止する外国人が増える一方、お土産物を購入する層の日本人観光旅行客が来なくなったと考えると、旅行者数が増えているのに仕事が無い状態の辻褄も合うのかも知れません。

…と、こんな感じで、私は日々、不景気を肌で感じる生活を送っているわけですが、日本の政府は、そんな事はありえないというスタンスのようです。
これは、先日、麻生太郎氏が『今の日本で景気回復の実感が得られないのは、余程の無能か運が悪いかのどちらかだ。』とおっしゃっていた事からも分かりますよね。

では、何故、こんな認識の違いが生まれるのでしょうか。
今回は、この事について考えていこうと思います。

まず最初に、簡単に結論を書いてしまうと、原因は『二極化』です。

現在の日本で好景気の実感が得られないのは人口の8割になるようですが、逆にいうと、2割の人間は好景気が実感できるほど景気が良いことになります。
麻生氏を始めとする政治家の生活範囲内には、この2割の人間しか居ないから、この様な認識の差が生まれてしまったのでしょう。
本来であれば、国民の意見を幅広く集めるのが代議士である政治家の本文だと思うのですが… 政治献金を持って近寄ってくる人間にしか興味を示さないので、そういう認識になってしまっているのかも知れません。

では何故、この2割の人達は、景気の波に乗れているのでしょうか。
2割の人間が物凄く有能で、日々、自分磨きを惜しまなかったから、チャンスを逃さずに景気の波に乗って大成功したのでしょうか。
もちろん、中にはそういった方もいらっしゃるでしょう。

ですが、おそらく大半は、日銀が2%のインフレ目標を掲げて行っている金融緩和で恩恵を受けた人でしょう。
今現在は、日銀は2%の目標を取り下げて、いずれ達成できれば良いなと言う方向に変更したようですが、現段階で量的金融緩和は行われているので、その恩恵は続いています。
では、量的金融緩和によってどの様な恩恵が受けられるのかというと、ほぼゼロに近い低金利です。

ここで、『金利がゼロになったら、恩恵は全ての人が受けられるのでは?』と思われる方もいらっしゃるでしょう。
しかし実際は、そんな事はありません。というのも、日本のゼロ金利というのは【担保がある場合に限る】という前提条件が着いているので、無担保でお金をかりる場合には、消費者金融並みの10%超の金利を取られるなんて当たり前だったりします。
つまりは、担保入れられる程の資産家か、その資産を買う為の資金を借りる場合のみ、低金利で借りられるということです。後者の場合で具体例を挙げると、住宅ローンなどが当てはまります。
買う予定の土地を担保に入れて、それを元にお金を借りるという事ですね。
簡単に言えば現状は、担保を入れるだけの資産がある人間にとっては、ほぼゼロに近い金利でお金を引っ張ってこれる環境という事になります。

では、この状態でどの様な二極化が起こるのかというと、物価の二極化です。
先程も書きましたが、日本の金融機関はリスクを計算して融資するという能力が無い為、担保を差し出せる資産家にしかお金を貸しません。
ですが、大量の資産を持っていて、余裕を持って暮らしている人間が資金を欲しているのかといえば、そんな訳はありません。
結果として何が起こるのかといえば、金余りです。

では、余っている金は何処に行くのか。
そのまま金庫に保管していても意味はないので、何処かに投資しなければならないという事になるのですが、事業を起こすなんてリスクが高くて面倒くさい事は資産家は行いません。
では、何に投資をするのかというと、一番手っ取り早くて分かりやすいのが株式投資です。
『株にもリスクが有るんじゃないの?』と思われる方もいらっしゃるでしょうが、今の日本では、株価が下がったら日銀と、我々が収めている国民年金の資金で買い支えるという金融政策を取っているので、下値リスクは限定的です。

今の日本の上場企業は、下請けや中小企業に対しての締め付けによって、バブル期を超える程の最高益を出す企業が多数。 最高益を得ているにもかかわらず、新分野への投資などもしないので、得た利益は株主に分配され、利回りもかなり高い状況になっています。
下方向に進むリスクが少ない上に、それなりの利回りが得られるのであれば、資産の一定割合を株式投資に回すというのは普通の判断でしょう。

では、株式投資だけで余ったお金を吸収できるのかといえば、そうではありません。
株式は買われれば買われるほどに価格が高騰し、得られる利回りも下がり、旨味はなくなってしまいますので、安全に資金管理をするためには他分野への投資も必要になってきます。
その矛先が向かった一つが、不動産です。

『人口減で空き家が増えている中で、不動産?』と思われる方も多いとは思いますが、ここでいう不動産は投資用不動産です。具体的には、タワマンの上層階。
日本は、地方が疲弊していく中で東京一極集中が進んでいます。 その中でも、都心に有るタワマンの上層部は固定資産税の関係からも節税対策で買われれる事も多く、これに加え、今は団塊の世代の方々というのが次々とこの世を去りつつあり、その方々がまとまった資産を持っている場合は、相続税対策としても利用されます。
この為、現状では需要がなくなることが無く、需要が無くならない上昇しやすい状態です。 一部では『バブル』なんて言われていたりもしますが、逆に言うと『バブル』と言われる程に、この界隈は景気が良いという事になります。
一応書いておくと、これを読んで誤解しないで欲しいのですが、タワマン投資を呼びかけているわけではありませんからね。 ほぼ確実に儲けが出るようなタワマンは、情報を最前線で受け取れる不動産屋が自分が儲けるために購入するので、客に回ってくることはありませんし、そのタワマンは、相続で泡銭を得た人達に割高な値段で売却されますので、庶民の私達には関係がありません。

その他にも、もっと細かいところでいうのであれば、ウィスキーなどの嗜好品も暴騰してます。
一部のネトウヨが『北京オリピックが終わったら中国景気は終わり!』と言っていた中国の経済成長が現状でも毎年6%以上で推移し、富裕層が増えてきた為に嗜好品の売れ行きが増し、一部の商品が高騰していたりもします。
先程挙げたウィスキーなどが、その一つです。
2年ほど前は普通に定価で買えていた山崎12年が、その4倍の2万を超える価格で取引されるまでになっています。

何故、短期間でここまで暴投したのかというと、それがインフレの性質だからです。
インフレ値というのは徐々に上昇していくものではなく、指数関数的に伸びていって、最終的には手がつけられないところまで上昇します。
インフレになる一連の流れを簡単に説明すると、まず最初に、需要増から価格が上昇して安定的に物価が上昇し始めます。ただ、この状態が長く続くと、『今のうちに買い溜めて保存しておけば、将来、転売で大儲けできるんじゃ?』という事で、価格の上昇が新たな需要を生むことになります。
当然、売り手である卸問屋や小売店を同じことを考えるので、価格が上昇し続けると売り渋りを行うようになり、需給関係はさらに崩れ始めます。
こうなると、価格が上がるから価格が上がるという循環に入ってしまい、手がつけられなくなります。

この様に、日本の富裕層を取り囲む環境では需給関係が改善し、価格は上昇し、その流れに乗って大儲けする人達が実際に出てきているというのが、現状だったりします。
では、一部の資産や商品が大幅な値上がりをしているのに、何故、日本の物価は上がらないのか。
これは単純に、好景気を実感していない我々庶民を取り囲んでいる経済状態が悪化している為、先程挙げたインフレ要因を帳消しにする程に、庶民向け商品の物価が下がっているからでしょう。
何故、庶民の経済環境が悪化しているのかというと、先程もチラッと書きましたが、上場企業で最高益を叩き出している企業の多くは、中小零細の下請けに負担を押し付ける、所謂『カイゼン』によって業績を伸ばしているので、締め付けられる側で働いている多数の人達は、苦しい立場に追いやられているということです。

toukeidata.com
リンク先には、平均所得と所得の中央値の推移がグラフ化されていますが、これを見れば分かる通り、割合で見ると中央値の下落幅が大きいです。
平均所得に比べて中央値の下落割合が多いという事は、多くの人達が貰っている給料の額が下がっているのに、それを足し合わせて人口で割った平均値はそれ程下がっていない事になる為、単純に考えて、二極化が加速している事になります。

これに加えて、消費税増税や年金支払額の増加や支給開始年齢の先延ばしなども考慮に入れると、庶民の可処分所得は、かなり減っていることが分かると思います。
可処分所得が減れば、当然のように、消費を行うことが出来なくなるため、物を買わなくなる。 若者の◯◯離れの原因は、現金の若者離れによるものと考えるのが妥当でしょう。
この様な現状でも、庶民向けサービスを展開している企業は『自分達の提供する商品・サービス』を購入してもらわなければなりません。こうなると当然、『需要不足』となり、別の観点から見ると供給過多になる為、モノやサービスの価格は下落するという事。

つまり、需給関係・消費動向・収入など、あらゆる分野で二極化が進んでいているのが現状で、景気の良い分野に偶然いた人は景気を実感できるし、その分野にいない人は好景気を実感できないというだけなんですよね。
冒頭の麻生氏の話に戻ると、あの方の主張は少しだけ当たっていて、景気実感が出来ないのは、景気が良い分野で働けなかった不運という事になります。ただ、余程運が悪い人ではなく、8割の人間が運が悪い側に属しているという部分では間違っていますけれどもね。
合っているのはそれぐらいで、前半部分の『余程の無能か…』の部分は、指摘するのもアホらしい感じですが… というか、政治家て、普通に資本主義をしていれば起こってしまう富の偏在をどのように解消するのかってのが仕事の大部分だと思うんですが、それを完全に放棄している時点で、政治家としてはどうかと思ってしまいますけどね。

まぁ、現政権の主張は、富の偏在は放置しておけば自然に解消するという『トリクルダウン理論』でしたから、期待するだけ無駄なのかも知れませんけども。

【ゲーム紹介】 Wipeout Omega Collection (ワイプアウト)

今回紹介するゲームは、つい先日購入してプレイした『Wipeout Omega Collection』です。
ジャンルとしてはレースゲームに属する物で、反重力技術で車体が常に浮いている乗り物に乗ってレースをして実績を残し、コースを開放していくタイプのゲームです。

PS storeでGWセールが開催されていた為、この機会に購入してみました。
f:id:kimniy8:20180507183119j:plain

普通の車を使ったレースゲームと一番違う点を挙げると、普通の車を使ったレースゲームの場合は、地面とタイヤが接触しているという事。
接地している状態なので、コーナリングもスピードによって曲がれる角度に限界がありますし、コースの位置取りが重要となってきます。アウト・イン・アウトみたいな感じですね。
また、急なカーブを高速でロス無く曲がる為には、フットブレーキハンドブレーキ等の操作技術が必要になってきますし、慣れないと直ぐにクラッシュしてしまうし、慎重に進みすぎると高い順位を狙えません。

しかしこのゲームは、そんな従来のレースゲームとは違います。
ワイプアウトの機体は接地しておらず、絶えず反重力技術によって浮いている状態だからか、従来のレースゲームでは重要なハンドブレーキフットブレーキといった概念が存在しません。
常に押し続けるボタンとしてアクセルボタンが存在しますが、基本的には、スタートからゴールまでは、このスタートボタンを押しっぱなしの状態で加速し続けます。

では、急なカーブなどはどうするのかというと、【L2】【R2】の2つのボタンがエアブレーキに対応していて、これをタイミング良く押すことでコーナリングをスムーズにします。
例えば、右に急カーブをしたい場合は【R2】を押して車体の右側だけ空気を逆噴射する事で、車体を右側に急速に曲げます。
エアブレーキボタンは押している間はずっと逆噴射しっぱなしなので、コーナーの角度によって押す長さを変える必要はありますが、従来のレースゲームに比べると操作はかなり簡単で、レースを2回ぐらい体験すれば誰でも慣れる事が出来る程の難易度です。

私はリアルでは車に全く興味がないからか、レースゲームをそれ程プレイしておらず、偶に気まぐれでレースゲームを購入しても、クラッシュの連続であまり楽しめないという状態になってしまうのですが…
このゲームは、操作が簡単だからか、数回プレイするだけで、クラッシュする事無く完走するまでに成れました。

ここで、『数回のプレイでスムーズにプレイできるようなゲームが面白いのか?』『ゆとり?』と思われる方もいらっしゃるでしょう。
ただこのゲーム。ただのレースゲームではないんです!

というのもこのゲーム。コースの方に様々な仕掛けが施されているからです。
レースゲームといえば、決められたコースを進んでいくというのが当たり前なのですが、このゲームでは、様々なところにショートカットが隠されていたりします。
では、ショートカットを利用して最短距離を進めば有利に慣れるのかといえば、そうでもなかったりします。

コースには、アイテムBOXと加速レーンが実装されていて、順路によって置かれているものが違ったりします。
例えば、道が二股に別れている際に、右に進むとアイテムが回収できるけど、左に進めば加速レーンがあるといった感じ。

では、アイテムBOXに入っているアイテムはどんな物があるのかというと、得られるアイテムの大半は武器だったりします。
プラズマ弾やホーミング機能のついたロケットなど、様々な武器があって、1個だけ所持することが可能。
所持している際は、□ボタンで使用することが可能で、こちらの攻撃がライバルの機体に当たると、当たった直後にスピード減を、また、シールドを減らせることが出来ます。
シールドがゼロになると機体が破壊され、ペナルティーを食らってしまう為、レースの順位に大きな影響を与えます。

高い順位を狙うために必要なのは、機体を破壊されない事なのですが、その為に優位に働くのが、これまたアイテムです。
例えば、『シールド』というアイテムは、使用する事で一定時間の間、攻撃を防御することが可能な為、敵が仕掛けた地雷原を突破する際には役に立ったりします。
その他にも、アイテムを武器として使用するのではなく、武器を所持している状態で◯ボタンを押すことで、武器エネルギーをシールドエネルギーに転用することも可能です。
簡単にいえば、他の機体から攻撃を受けてライフが低い状態になったとしても、アイテムBOXを取りまくって◯ボタンで使い続ければ、ライフを回復できるということです。

こんな要素がある為、、必ずしも先頭を走っているから有利というわけではなく、先頭は常に後ろから武器で狙われ続ける為、アイテムBOXか加速レーンでぶっちぎるのかといった選択を迫られたりするわけです。
追っている側も、どのタイミングで武器を使ったら当たるのか、目の前の敵が落とした地雷を瞬時に避けるなんて判断を迫られる為、注意を向けなければいけない所が多いんですよね。
そんなわけで、単純にコースを周るという従来のレースゲームの核になる部分については、割と操作が簡単に設定されているんです。

このゲームを、他のゲームに例えて解りやすく説明するのであれば、『F-ZERO』+『マリオカート』って感じでしょかね。
マリオカートのアイテム要素と、F-ZEROのスタイリッシュさや未来館が合わさってブラッシュアップされた感じのゲームです。

このゲームは、日本ではダウンロード専用ということで、パッケージで欲しい人は海外版を買う必要があります。
海外製品も買いやすいAmazonで観たところ、結構前に発売されたのにもかかわらず値段はパッケージの方が高いので、プレイ後はサッサと売りたいという方以外は、ダウンロード版を買うことをお勧めします。

この作品ですが、リリース日は2017年の6月6日。
その約1年後の今になって購入しようと思ったのには、理由が2つあります。
一つは、GWのセールが開催され、前から気になっていた このソフトが、PS plus会員なら30%offで販売されていたから。
そしてもう一つの理由が、このソフト、今年(2018年)の3月28日に無料アップデートにてVRに対応したからなんです。

普通のレースゲームとは比べ物にならない程のスピード感を味わえて、その上、シューティング要素もある。
これをやらずして、なんの為のPSVRか!という事で、発表があった2017年の年末からVR対応を待ち望んでいたわけですが、PSstoreの方のVR対応タイトルに一向に出現しない。
『予想以上にアップデート作業が長引いているのかな?』と思い、日々のチェックもしないようになり、半ば諦めた感じで日々を過ごしていたのですが…

冒頭でも書いたGWのセールで30%オフされていることを確認。 VR対応タイトルセールにも出現を確認。『アップデートをGWに合わせてきたかぁ』と思ったのですが、その後、独自でgoogle先生に質問してみると、実は3月末にアップデートが配信済みしていたようです。
という事で早速購入。実際にプレイしてみた完走としては、浮遊感が凄い。

私は、ドライバーズクラブというレースゲームもプレイ済みなのですが、それとは感覚が全く違った感じで、疾走感も段違いですね!!
スピード感があって、ギミックがあり、急なカーブも多数あるという事で、VR酔が心配でしたが、それも私は問題がありませんでした。
以前にドライバーズクラブをプレイして酔ったという知り合いがプレイして、こちらのタイトルは酔わなかったと言っていたので、良い対策もしっかりしているんでしょう。

私はPSVRのゲームはそれなりに体験してきましたが、この作品は買って損はないと思える数少ない作品の一つですね。
PSVRを持っているのであれば、購入することを進めたい作品です。

【ゲーム紹介】 トロピコ5

今回紹介するゲームは、『MEGA盛りトロピコ5 』です。


      

トロピコというタイトルだけを聴いて、どんなゲームなのか想像も出来ない方も多いと思いますが(私もその一人でした)、このゲームは、街づくりシュミレーションゲームです。
街づくりシュミレーションといえば、鉄道会社の経営者になって未開の地を都市に育てる『A列車で行こう』シリーズや、市長になって街運営をする『シムシティ-』シリーズが有名ですが…
このゲームは、植民地を収める独裁者になりきるシュミレーションゲームです。

ゲームの一番最初は、帝国から主人公である自分自身が総督として未開の地に派遣されるというところから始まります。
総督という名の使いっ走りなので、当然、任期があり、任期中に結果を残せなければクビになり、ゲームオーバーとなってしまいます。
では、ずっと上司の顔色を伺いながら、着々と命令だけをこなしていくのかというと、そんな事もありません。

託された未開の地は地理的にも重要ではなく、資源的にも恵まれているとは言えないからか、帝国にとっては然程、重要ではない地のようで、一定の上納金を収める事で独立宣言をする事が可能です。
独立してしまえばこっちのもので、独自の憲法などを制定する事で、より、自分好みの国運営が可能となります。
帝国とは外交上の付き合いだけしていれば、とやかく言われる事もありませんが、そのかわり、大統領選挙が数年おきに開かれることになります。

大統領選で勝利する為には、当然、支持率が重要になってくるわけですが、この支持率は住民の幸福度と直結している為、今度は住民の顔色を伺いながら街づくりをしていく必要があるんですよね。
当然ですが、選挙に落ちればゲームオーバー。 ただ、そこは独裁者なりきりシュミレーションという事で、支持率が微妙な場合は、不正を行って投票を操作することも可能です。
じゃぁ、今選挙したら絶対に負ける!って時はどうするの?思う方もいらっしゃるかも知れませんが、そういう時は、選挙その物を行わないという選択も出来ます。

『選挙しなくて良いなら、支持率とか関係なくない?』と思われるでしょうが、選挙をせずに国家運営を続けていると、国民が政府に対して不満を持ち、暴動に発展します…
国民にデモや暴動を起こさせない為にも、選挙によって選ばれたという実績が必要になってくるというわけです。

では、国民の幸福度を高めて高い支持率を維持していれば良いのかというと、それだけでもダメ。
このゲームは、1900年前半から始まって、年月が過ぎていく毎に技術が進んで時代も進むという状態になるのですが、時代が進んで世界大戦時代に突入すると、連合国か枢軸国のどちらに付くのか迫られて、どちらかを選択すると選んでない方から攻め込またりするんです。

敵からの侵攻に抵抗するためには、軍隊を揃えておく必要があるのですが…
軍備を増強すると、『軍事力で民衆をねじ伏せようとしているのか?』と民衆から思われてしまい、反政府運動が活発化してしまうというね。

メインミッションを中盤まで進めた私の感想としては、独裁者も楽じゃないって事。
独裁者シュミレーションという事で、このゲームではいろんな方法で裏金を貯め込むことも可能なのですが、色んな事に気を配っていると、そんな余裕は全然無い。
なんなら、北朝鮮の指導者って、有能だったんじゃないかとすら思えてしまう程、国の運営は難しい。

独裁者だからって、自分の好き勝手をやって私腹を肥やそうとすると、支持率が下がりまくって暴動が起こる。
暴動の鎮圧の為に軍隊を増強すると、基地の建設費用や人件費などの運営費でお金がドンドン減っていく。
お金が減って国庫のお金が無くなっていくと、財政不安から更に政府の支持率が低下する。

支持率を回復させる為にも、娯楽施設や労働kん今日を整えようとしても、お金がないとそもそも施設が建てられない。
こうなってしまうと完全に詰みになる為、一からやり直さなければなりません。

結局の所、ゲームクリアーの一番の近道は、国民の幸福度に気を配って、国民が欲しそうな施設を前もって建設しておく事が重要で、更に言うなら、必要な施設がいつでも建てられるように国庫のお金を潤沢にしておくことが重要になってくる。
では、国庫のお金を潤沢にする為にはどうすれば良いのかというと、産業を育てて経済を回さなくてはならない。
経済を回す為に効率が良いのは、第二・第三次産業なのですが、その産業の原材料を手に入れるためには、第一次産業を育てないとダメ。

じゃぁ、第一次産業をドンドン建設すればよいのかというと、、第一次産業である農場や牧場は、生産効率が周囲の環境に左右される為、建設できる地域が限定されていたりする。。
その上、周囲に工場や住宅があると環境汚染がひどくなる為に、隣接しておくのは非効率だったりする。
また、これが結構重要だったりするんですが、農場や工場で作られた成果物というのは、トラックによって運び出さなければお金に変わることはありません。
効率的に商品を流通させる為には、輸送業者をそれなりに置いて置かなければなりません。

こんな事を考えながら、私服を肥やす暇なく、ドンドンと施設を作っていかなければならないのですが、施設を作ったら作ったで、今度は労働者の数が足りなくなったりします。
労働者の数が足りなくなると、給料が低いところから労働者がドンドンと逃げていくようになるのですが…
給料が低い労働環境って、大抵は第一次産業だったりするんですよね。 第一次産業が停止して材料の供給が止まってしまうと、第二次産業の売上にも影響が出てくる為、人のやりくりも重要になってきます。

こんな感じで、ただでさえやる事や考えることが多いのに、定期的に訪れるミッションや選挙、そして前触れもなくやってくる、自然災害。
これらに対処しなければならない為、街づくり系のシュミレーションなのに、結構、忙しかったりします。

ただ、やることが多い分、ミッションをクリアーした際は、達成感を得られたりするんですけどね。

こんな感じで、独裁者シュミレーションと言いつつも、本当に好き勝手すると直ぐにゲームオーバーになってしまいがちなので、好きな人が限定されそうな作品なんですが、登場人物などが歴史上の人物のパロディだったり、過去の実際の出来事をオチョクルようなテキストが出てきたりするので、歴史好きの人は結構楽しめるんじゃないかと思います。
これを読んで興味を持たれた方は、今回、リンクで貼って紹介している商品がDLC全部入り商品で、バラで買うよりも得だと思うので、気になった方は是非、こちらを購入することをお勧めします。


      

【Podcast #だぶるばいせっぷす 原稿 】第28回【ヒッピー】ティモシー・リアリー(4) ~ディガーズ

この投稿は、私が配信している Podcast番組『だぶるばいせっぷす ~思想と哲学史』で使用した原稿です。
放送内容は、私が理解した事を元に行っています。ご了承ください。
goo.gl

youtubeでも音声を公開しています。興味の有る方は、チャンネル登録お願い致します。
www.youtube.com

ここ最近は定型文のようになっていますけれども、この回から聴き始めた方の為に、一応、言っておきますと
第20回と21回で、ヒッピー・ムーブメントがどの様にして起こったのかという簡単な説明をし、22回と23回で、その運動に大きな影響を与えた幻覚剤、LSDについて、開発の経緯や使われ方について説明しました。
そして、25回からは、このムーブメントの中心的な人物であるティモシー・リアリーに焦点を当てて、より詳しく、この出来事を追っていっています。

一応注意点として言っておきますと、ヒッピーを取り扱う回では、LSDなどの幻覚剤を始めとした禁止薬物が、頻繁に登場することになります。
それも、ネガティブな取り扱い方だけではなく、人間の可能性を伸ばすといった感じの取り上げ方をしますが、あくまでも、当時、そのように捉えられて研究されていたという解説をしているだけで
現在、使用することを推奨しているわけではありません。 現在は禁止薬物になっているものが大半なので、使用は行わないようにしてください。
法律で禁止されているだけではなく、中毒になって抜け出せなくなったり、最悪の場合は死ぬケースも有りますのでね。

という事で、本題に入る前に、前回の簡単な振り返りから始めていきます。
ハーバードに就職した後に幻覚剤に魅せられて、シロシビンの研究をし、その後、LSDの研究を始めたリアリーは、ハーバードを退職することになります。
大学からの研究費が得られない状態になった為、リアリーはIFIFという団体をメキシコに作り、入会金を徴収してメンバーを集め、メンバー向けに、自身の幻覚剤の研究成果をまとめたレポートなどを配布しだします。
その他にも、幻覚剤の体験施設を作って運営するんですが、CIAに邪魔をされては、拠点を移すという生活を続ける事になります。

そんな活動を続ける中、リアリーはビリー・ヒッチコックという人物に出会い、その人物から 邸宅を貸し与えるという申し出を受けて、拠点をニューヨークに移します。
CIAに睨まれている中で、アメリカへ拠点を移すという事で、IFIFの様な派手な活動はせずに、ひっそりと研究を行います。
これが、1963年の出来事です。

その翌年には、リアリーとは別でアシッドテストと呼ばれるLSD実験を行っていた、ケン・キージーが、リアリーの元を訪れます。
この人物は、自身が幻覚剤のトリップで見たヴィジョンを元に書いた小説、『カッコウの巣の上で』のヒットが有名な作家で、その体験を広める為に活動していたようです。
ケン・キージーは、誰にでもLSDを与えるスタイルで、ファーザーと名付けたバスで旅をしながらアシッドテストしてまわるツアーを行っていました。

アシッドテストを開く際には、グレイトフル・デッドなどに演奏も依頼していたようで、トリップには雰囲気が重要だと認識していたようですね。
この様な考え方だった為、リアリーとは意気投合し、リアリーもケン・キージーの影響を受けて、自分のコミューンメンバーに世界を見て回ることを推奨し、自身もインドなどに出かけたようです。

この頃になると、リアリーやケン・キージー達の活動が実を結んだのか、サイケデリック思想に魅せられた人たちや団体が、そこに独自の解釈などを加えて、同じような意見の人たちと集まることで、コミューンを形成していきます。
コミューンというのは、共同体とかそういった捉え方でいいと思います。似たような考え方を持った人達が集まって、共同生活を送ったりする団体のことです。
有名なところでいうと、ディガーズなどですね。

ディガーズの名前の由来は、ウィンスタンリーに導かれて、ピューリタン革命期、清教徒革命期とも言うんですが、そこに最左翼として登場し、共産主義革命を主張した団体ですね。
清教徒革命というのは、簡単に言うと、イギリスで起こった内戦のことです。起こったキッカケとしては、貧富の差ですね。
日本でもそうですが、農民は一律で貧しいわけではなく、土地を所有している人間というのは比較て裕福なんですが、土地を持たないものは貧しいんですね。日本でいうと、庄屋と小作人みたいな感じですかね。

庄屋は、小作人に土地を貸し与えて、小作人が労働をする事で米という成果物を作るわけですが、庄屋が土地を所有しているのに対し、小作人は雇われているだけなので、ここに力関係が生まれます。
労働の分野で力関係が生まれると、当然のように搾取が行われるので、庄屋は土地を貸し与えるだけで大量のお金を手に入れ、現場で働いている小作人は、身を粉にして働いてもその日暮らしが精一杯の生活になります。

そしてときが流れるに連れて、この流れに拍車がかかっていく事になっていきます。
地主は、自身の体を動かすわけではなく、搾取によって得られた利益を投資に回す事で、耕せる土地を購入していくことで、取り扱う土地の量が増えていくわけですけれども、労働者の数はそれに比例して増やすわけではありません。
土地の所有者からすると、労働者は経費でしか無いので、雇えば雇う程、自分達が手に入れる富が減ってしまうので、労働者は極力雇わないようにします。

当然のことですが、この様な環境になると、地主の取り分が増える一方で、労働者は給料が同じで労働時間だけが増えていくことになるので、時間辺りの収入は減っていくことになります。
つまり、豊かなものはより豊かに、貧しいものはより貧しくなる一連の流れが完成してしまうんです。
労働環境が悪化していくと、その職業に就いたとしても、一生奴隷の生活で終わってしまいます。

そんなシステムに疑問を持つ人は、地方で農業に従事する事を選択せずに、僅かな可能性を求めて都市、特にロンドンに集まるようになります。
ですが、都市に集まったところで、都合よく職が転がっているわけではないので、無職の状態で街をうろつく事になります。
イギリスはキリスト教が主な宗教で、本来であれば、恵まれない貧民層は慈善の対象なんですが、この頃から宗教の解釈の仕方が変わっていって、貧民層は、働かない怠け者集団と認識されることになって、迫害対象になっていったそうです。

では、国が再分配をしっかりすれば良いんじゃないかという話になるんですが、そうも行かないんですよね。
というのも、一部の富裕層に富が集中すると、その富裕層はシステムを作っている側を買収したり圧力をかけることが可能になります。結果として、国のシステムが富裕層が利益を受けやすいようなシステムに改変されていくことになります。
ただこの場合、本来であれば税を重点的に徴収しなければならない富裕から税が集められないことになるので、国の財政的には厳しくなっていきます。

この流れは、今の日本で考えると分かりやすいと思います。
今の老人は、今の若者が根性がなく、働かないから成長せずに停滞していると主張する人たちも、少なからずいますけれども、今の日本の若者達が手にする生涯賃金の平均値は、20年前と比べて3000万円程下がっているんです。
では、20年前に比べて今のほうが楽なのかというと、そんな事はありません。 この20年でIT技術は大幅に進化しているので、1人の人間がこなす仕事量は数倍になっています。
つまり、一人あたりの仕事量は増えているのに、生涯賃金は3000万円減少しているわけです。

求人倍率なども、最近は上昇傾向で、働き手が不足しているなんて報道されていますが、では、募集の給料が増えているのかというと、そんな事はありませんよね。常に求人広告を出しているところは、労力の割に給料が安いところが大半です。
ここ最近では、少子化と言われているのに保育所が足りないと言われていますが、これは単純に考えて、共働き世帯が増えたからですよね。
にも関わらず、世帯の可処分所得が増えないのは、何かがおかしいですよね。 また、企業業績がバブル全盛期を超えたと報道される中、日本の借金は増え続けている状況にも陥ってます。

このおかしい状態に対して、『システムがおかしい』というと、今の日本では左翼だとかパヨクなんてレッテルを貼られて、頭がおかしい扱いをされるなんて事もある状態です。
そして、貧しい人達は、努力してこなかったから貧しい環境なんだ。 怠けていたんだから自業自得だという主張が、賞賛されたりします。このように、日本の場合は、政権側に立って意見を言う人が多かったりするんですが…
ヨーロッパの人たち、今回取り扱っている清教徒革命ではイギリスですが、この人達は、この様な受け入れられないシステムに対しては、明確にNOを突きつけるんですね。

その結果として、革命が起こることになります。なので、よく、ヨーロッパの社会システムが弱者に優しいとか、労働環境が日本に比べて良いなんて話を聴きますが、こうして振り返ってみると、それは市民が勝ち取ってきたものだという事が分かります。
ヨーロッパの場合は、搾取の割合が酷くなっていくと、搾取されている側が革命を起こすんですね。 フランス革命などは、搾取してきた側はギロチンで処刑されたりしてるので、こうした市民革命の結果を受けて、システムを改善していった結果なんでしょうね。
この動きは、ストライキを起こす素振りを見せただけで、労働者側をバッシングする日本とは対照的ですよね。

話をイギリスに戻すと、貧富の差が決定的になって、富裕層に富が集中して国の権力者と癒着しているとはいっても、貧民層のほうが圧倒的に人数が多いわけです。
また、富裕層は現場の仕事を知らないわけで、貧民層が団結して一斉に仕事を放棄すれば、システムは簡単に崩壊してしまいます。
こういう状態が定着して、不満のエネルギーが溜まり続けると、普通は一気に爆発し、それによって大きな混乱が起こります。

この混乱期に登場したのが、ディガーズと呼ばれる団体です。
作ったのはウィンスタンリーという思想家で、この人物は、元々は商人をしていたそうなんですが、革命の混乱期に破産して、田舎で隠居生活をしていたそうなんですけれども、その中で、神の啓示を受けることになります。
その神秘的な宗教体験を元に、本などを執筆するようになります。

その後、貧困層に追いやられた人々を率いて、もともと共有地とされていた荒れ地を自分達で耕して行くんですね。
この耕す行動、つまり、地面を掘る、英語で言うとディグする人たちという意味で、ディガーズと名乗る団体が誕生したようです。
ディガーズのスタンスは真正水平派と呼ばれるもので、簡単に言うと、人は生まれながらにして平等なんだから、貧富の差が有ることそのものが、おかしいという考え方ですね。
これは、地主で金持ちの家に生まれた場合は生まれながらにして富裕層になるけれども、小作人の子供として生まれれば、一生、貧困にあえぐ生活になってしまう。これは、おかしいという主張です。

では、貧富の差をどのようにして解消するのかというと、土地の所有と賃金労働の否定です。
お金というものが存在して、それによって土地という、元々誰のものでもなかったものが、誰かのものになってしまう。
そして、賃金労働という存在によって、土地を持たないものは低賃金で働かされることで、富の二極化が起こって、不平等が起こるという考えで、これは近代社会主義の先駆的運動と一部で評価されているようです。

社会主義とか共産主義といった主張では、マルクスという哲学者が有名ですが、マルクスが活躍するのが1800年代半ばで、その200年も前にディガーズ運動が起こったというのは、先駆的だったんでしょうね。
で、共産主義社会主義マルクスという名前が出てくると、アレルギーのように嫌がる人というのも、一定数存在しますよね。そして、そういう人たちは決まって、社会主義国家はみんな滅びてると、勝ち誇ったように主張するんですが…
マルクスの理想を実現した国家というのは、まだ、世の中には無かったりするんですね。

社会主義国家が崩壊していくのって、多くの場合は、全ての権限が政府に移って、国民が全員公務員になることで統一した思想のもとに経済を動かせるけれども、全員が公務員で給料が同じだと、多くの人がサボりだすので、
生産性が下がって崩壊するといったパターンが多いと思います。
ですが、私が読んだマルクスが青年期に書いた草案には、こんな国家システムは書いていないんですね。
マルクスの主張の重要な点は、マルクスは人間の生活の中心に労働を置いていることなんです。
資本主義によって効率化を求めて競争する経済では、効率性を重視するあまり、仕事の分業化が過剰なまでに進んでしまい、それが人間性を剥奪すると主張しているんです。

マルクスの主張には、本来の人間は社会的な動物なので、仕事を通して社会とつながる事そのものに不満はもっていないという前提があるんです。
例えばパン屋を例に出すと、小さなパン屋を個人で経営し、客のニーズを汲み取りながらパンを製造し、それを販売する。そして買ってくれた客は、『いつも美味しいパンをありがとう』と言ってくれる。
この様な仕事が苦痛で仕方がないという人は、それ程いないという事なんですよ。

ただ、このパン屋が巨大になって、全国をカバーする程に大きくなった場合はどうでしょう。
全国の顧客の為に、一人でパンを作る事なんて不可能なので、生産工程は分割されて分業体制になります。
Aさんは倉庫から粉を出す係になって、Bさんは粉を配合する係になって、Cさんは生地をこねる係になる。Dさんは、出来上がった製品を小売店においてもらう為に頭を下げる営業を行い、Eさんは、会計で金の流れだけを追いかける。

Aさんは、朝から晩まで倉庫と製造所を粉を持って往復するわけですが、そんな仕事が好きになれるんでしょうか。
マルクスは、この状態を、本来なら好きであるはずの仕事から、人間が疎外されているとして、このシステムに異論を唱えたんです。
つまり、Aさんの仕事は本当の意味で人間らしい行動なのかということです。 そして、半ば機械のように倉庫と製造所を往復させられているのは、資本家がより多くの利益を得るためです。

そして資本主義のシステムは、いずれ二極化が決定的なものとなって、豊かなものはより豊かに、貧しい人達は、より貧しくなっていく。この流れに警鐘を鳴らしたのがマルクスです。
ですが、今まで崩壊した社会主義国家は、資本主義でいう資本家の役割を、国が代替しているだけで、人が仕事から疎外されている状態は変わっていないですよね。
そういった意味では、マルクスの主張をそのまま実践して失敗したというより、マルクスの主張を自分達の都合の良いように解釈したシステムが崩壊したともいえます。

では、話を1964年に戻すと、この時代に登場したディガーズも、当時のディガーズと同じ様な思想をいだき、共産主義的な思想を持って、実際に行動していた人たちです。
無料で炊き出しを行ったり、いらない物資を集めて無料で品物を持ち帰れるフリーストアを開店したりと、自分達で行動することで、主張を行っていきました。

ただ、この様な文化が一つのブームになりだすと、面白くないのが政府です。
このブームの中心には、LSDが存在するわけですが、CIAの認識としてはLSDは精神病を誘発する為の薬でしか無いですし、軍の認識では、化学兵器でしかありません。
そしてCIAと軍の両方が、冷戦を優位に進めるために幻覚剤の研究開発を行っていたわけですが、その薬物を自国民が使い、意識拡張によって認識が変わった人々は反体制的な主張を掲げてしまった。
冷戦とは、資本主義と共産主義との戦いなんですが、ヒッピーコミューンには、反体制的な考えから、ディガーズの様な共産主義に同調する人も多かったので、政府からすると、自分が研究開発した薬物で共産主義陣営がが優位になっている状態が、面白くなかったんでしょうね。

この為か1965年には、LSDは禁止薬物に指定されるようになります。これ以降、ヒッピーの活動は、よりアンダーグラウンドになっていくわけですが、この続きはまた次回に。