どこかの選挙事務所に就職した人が4日で辞めたという話がバズっています。以下のあたりが火元ですが

責任感のない人たちが、世の中の「好意のバトン」を落とすこと


目標を持って頑張った人と、突然消えた人


まあ辞めた人が適正がなかったとか折角のチャンスなのに情けないとか、そういう話で済ましてしまえば全て丸く収まる話だとはいえ、いつもこの手の話をみると、上の方から語る人に一つの視点が抜けていることが気持ち悪く感じます。それは「人間はストレスを掛けすぎると壊れる」ということです。L.starの知る世間一般では物を壊すと壊した人の責任ですが、人を壊しても壊れた人が悪い、という話になります。不思議です。

日本でこの「ストレスをかけ過ぎると壊れる」というのが認識されないのは簡単で、日本の成功者の殆どが「過度のストレスを耐え切った」選別された人たちだからです。でも当人は選別されたと気づいていません。自分の回りにいるのが選別された人ばかりだから、世の中の人はみんなこんなものだと思っています。弱い人がいるとは全く思わないので、そういうのにぶち当たると異常にしか見えません。苦労して成功すれば成功するほど、この傾向は強まります。雇用者が松田公太議員と聞いてむしろ納得です。

同じような話は、以下からも感じました。

入社2日目の明日から試して欲しいこと


これもバズって大変なことになりましたが、岩瀬氏の思いのなかには、正しい部分がたくさんあります。一方で、彼は人より優れていたから成功したのであって、普通の人は彼よりもずっと無能だし、脆いものです。その上、人の弱さとはボトルネック的なもので、何か1点でも問題があると底が大きく足を引っ張ります。だからこそ、努力をし続けることは並大抵のことではないのです。

L.starは面識は無いけれども、岩瀬氏は(平凡な人と比べると)とても優秀でタフな努力家で、しかも幸運なことに目立った弱点も(そんなに)持っていないことでしょう。その上意識が高いから友人にもそういう素晴らしい人材に恵まれていることでしょう。だから、普通の人がそんなに脆いことには気づけません。

そんな人のアドバイスを聞くのは、平均的な人にとって危険なことです。

平均的な人に必要なアドバイスは、むしろ平均的なところから努力して、程よい上まで辿り着いたような人からのアドバイスです。そういう人こそ、むしろ凡人が陥りやすい罠の回避法とか、根性のない人が人並みのふりを出来るぐらいの努力法とかをむしろ教えてくれるわけです。そっちのほうがよっぽど重要です。

もちろん、挑戦することは大事ですし、時には大きな賭けも必要になります。しかし、それをやるにしても、一番重要なのは本人のサステナビリティです。心ない上司からの無茶振りや他人の尻拭いで自分の精神を壊すようなことは、まっさきに避けなければいけません。

そういうのをいろいろ考えていくに、今若者に必要なのは「無茶でない挑戦」をできるよう指導してくれる「師」を探しなさい、ということかなと思ったりします。「師」は上司とは限りません。同僚かも、伴侶かも、友人かもしれません。大切なのは、あなた個人にカスタマイズされたものが必要だということです。

 

 

 

 

 

 

 

クジライルカを食べてはいけない理由を僕たちはまだ知らない


というKoshianの記事だが、欧州暮らしの長かったL.starから見ると、元々のエントリ

あのフォアグラ弁当抗議団体を直撃! 「動物はごはんじゃない」という言葉の真意とは

は、昔から言われている話で別段新鮮味を覚えない話しであった。こういう意見は欧州や米国の意識の高い上流層を中心にある程度受け入れられていて、ああそういう言論が日本にもやってきたのね、という程度である。どういう話かというとKoshianの説明する以下の部分そのままである。
この考え方を理解するには、ギリシア時代にまで遡る必要がある。快楽主義という思想があるのだが、これは「快=善、苦=悪」という考え方であり、できるだけ苦を減らし快を増加させることが善に繋がるというものである。個人の生き方としてはとてもよい考え方だと思うし、俺もこの考えに沿って生きてる快楽主義者だ

とこがこの考え方を社会に適用した人たちがいる。功利主義者たちだ。功利主義は快を「効用」として計測できるものと考えた。よく言われる最大多数の最大幸福はこの功利主義が前提にある。実際に効用を計測できるのか、社会は効用だけで考えていいのか、などいろいろと疑問のある考え方である。

ピーター・シンガーはこれをさらに動物にまで拡大した人である。世界の苦が減って快が増えることが善ならば、動物の苦も減らすべきだし動物の快も増やすべき。確かにそう言われると一理あるように思う。

ただし、これを「欧米の倫理観です」というと話を見誤る。これは文化の違いでも何でもなく、単なる前提の違いだからだ。

 

有史以前から「食べられるものはなんでも食べる」というのは集団の最も基本的な生存戦略であり、初期の文明社会はほとんどこれに従ってきた。そういった社会では、集団が要求する理想的な栄養素総量よりも、生産あるいは採取可能な栄養素総量の方が少ない。だから採取できたものは可能な限り無駄なく摂取しないといけないし、それが推奨される。

過去の日本社会、特に江戸時代あたりの場合、閉鎖された環境にあったことからこれに拍車がかかっている。肉食は推奨されなかったし、口減らしのような、現代では嬰児殺しとしか言いようのない残虐な行為なども公然とではないが行われた。それもこれも、起こりうるリソース不足のもたらす破局を避けるためには、やむを得なかったからだ。そんな中で育ったのが「もったいない」であり「いただきます」であろう。限られた資源のなかで、分配を受けられるというのはそれは恵まれたことだからだ。

欧米はこのような日本人の持つ価値観を共有していないのだろうか?実は「共有している」のだ。なんとなれば、資源が潤沢になってくると、短期的な資源不足以外の要因が首をもたげてくるから、優先順位的に単純になんでも食べるわけには行かなくなる。

一番極端な例は人肉食である。これを読んでる人で、人食い人種に人肉食をダメと言い切れる理由をご存知の人はいったい何人いるだろうか。にもかかわらず、人肉は十分食用可能な栄養源であるにもかかわらず、動物性蛋白質が極端に不足しやすい場所など以外では行われない。ちなみに答えは人肉食により感染する疫病があるから、である。牛に肉骨粉を与えるとBSEが、というのと同じ理由だ。

それ以外にも、「調理に手間が掛かり過ぎるから」「長期的に環境を毀損するから」「実際には効率が悪いから」などなどの様々な理由で、短期的には合理的な「なんでも食べる」は否定されていく。

「動物はあなたのごはんじゃない」というセリフは、あるいは功利主義的価値観に動物を加えようという話は、これらをすべてクリアした後にようやく出てくる。つまり、十分資源もあり、分配も可能なときに、不要な残虐行為を働く必要などどこにもないだろう、という形としてだ。

ところで、日本という国は、どこにいるのだろうか。一時は世界第二位の経済大国となり、落ちぶれたとはいえ最も豊かな国の一つである。そんな国が「資源の足りない国です」とは全く言えないと思うのだが、人の心はそれに追い付いていないのを感じる。例えば袴田事件に関する以下のエントリを覧て痛切に思う。

「耐え難いほど正義に反する」と裁判長は。


「袴田事件」は、英語圏ではアムネスティ・インターナショナル(AI)が積極的な取り組みをみせてきた。AIは死刑そのものに反対しているが、それ以前に、日本の死刑制度は執行前の段階で、あまりに残忍で非人道的である点が非常に深刻に問題視されている。つまり「死刑囚は外界との接触を断たれる」、「独房に入れられる」、「いつ死刑が執行されるかが事前に知らされない」、「吊るされる本人も当日の朝までそれを知らない」。死刑判決が確定したら、1人拘禁された状態で、今日吊るされるか、明日か……という不安が常に、片時も、そばを離れない。「不必要な苦痛」である。それを問題視しているのはAIだけではない。

人ですら不必要な苦痛を受けることを平然としている社会に、ガチョウの痛みを思いやるゆとりなどあるだろうか。そう考えずにはいられないのである。別に死刑囚だけの話ではない。満員電車、過酷な労働、随所に残る差別は類居に暇がない。

 

最後にKoshianはフォアグラとイルカ・クジラを同列に論じていたが、L.starはこれは明確に別の問題だと理解している。なんとなれば、日本人にイルカ・クジラを食べなければいけない必然性がある程度存在したであろうことはほぼ間違いないわけで、その必然性が文化的にも消失するには非常に長い時間がかかることで、文化の変化というものは常に人の痛みを伴う部分である。ご理解いただかないといけないところは確実に存在する。とはいえ、結局日本人は「イルカ漁は自発的にやめる」という形で、長い時間をかけてこれを解決するだろうなとは思っている。身も蓋もない言い方をすると「どうせ廃れるよね」ってことだが。

一方で、フォアグラは純粋に人為的に作成されたもので、しかもその二千年ちかい長い歴史の中で食べる必然性をついぞ得ることのなかった完璧な贅沢品である。無印良品のフカヒレスープのときのように混獲品で、今より環境悪化というわけでもないという言い訳も成り立たない。そんな贅沢品を食べるのが本当に「いただきます」の文化なのかというと疑問を感じる。というか要するに美味ければそれがどれだけ他人に迷惑をかけるものであっても平気なんだろう?という非常に「4本足は椅子以外なんでも食べる」中華的な感じを受け、「いただきます」と言ったら何でも許されるという傲慢さすら感じる。まあ環境悪化という意味では廃棄はよろしくないので「今回売り切ったら次はやらない」のほうが良かったのではないかと思うが・・・

 

このエントリはPostgreSQL Advent Calendar2013の19日目になります。今回は便利ツールとして、今年作ったpgsqlenvの解説を書いてみました。

このツールは、いわゆるPostgreSQLに特化したhomebrew環境を構築するもので、コマンドでインストール、初期化、起動、終了そのほかの作業が行えます。githubで公開しています。

インストール


インストールは簡単で、gitから取得し、取得したあとでそこにパスを通すだけです。以下の例では、~/git/以下に展開するようにしています。

$ cd ~/git/
$ git clone http://github.com/yutakat/pgsqlenv/
$ export PATH=$PATH:~/git/pgsqlenv

使い方


pgsqlenv [オプション] コマンド バージョン [引数...]

が基本になります。オプションは2種類、-a (全体に実行)と-f (強制実行)があります。
例えば実際にバージョン9.3.2(最新)をインストールして起動させたい場合、以下の順でコマンドを実行します。
$ pgsqlenv install 9.3.2
downloading...OK
configuring...DONE
building...DONE
regression test...DONE
installing...DONE
building contrib...DONE
installing contrib...DONE
$ pgsqlenv initdb 9.3.2
9.3.2    : initdb completed
$ pgsqlenv start 9.3.2
9.3.2    : OK

な お、ソースコードから自動でcontribこみでコンパイルしますので、ネットワーク接続などや、ダウンロードツールとしてのwget(指定)gccだのbison, flexだののインストールは必須になります。ソースコードは~/.pgsqlenv/pgsql-build/以下に、バイナリは~ /.pgsqlenv/versions/{バージョン名}/以下に格納され、PGDATAも~/.pgsqlenv/versions/{バージョン 名}/data/に自動的に設定されます。

各バージョンの管理もバラバラに行っていますので、同時に他のバージョンもインストール可能です。たとえばこのあと9.2.6をインストールしたい場合は同様に以下のようにします。
$ pgsqlenv install 9.2.6
$ pgsqlenv initdb 9.2.6

管理

複数のインストールを管理する機能もそれなりに充実しています。まっ先に重複して困るのはポート番号で、今先ほどインストールした9.2.6を起動しようとしても、デフォルトのポート番号5432を共有しているせいで動作しないはずです。これを簡単に変更できるよう、ポート番号の管理には専用のコマンドportとsetportを用意しています。
$ pgsqlenv -a port
9.2.6    :5432
9.3.2    :5432
$ pgsqlenv  setport 9.2.6 54392
9.2.6    :54392
$ pgsqlenv  setport 9.3.2 54393
9.3.2    :54393
$ pgsqlenv -a port
9.2.6    :54392
9.3.2    :54393

起動、終了、状態の取得はstart,stop,statusコマンドを使います。
$ pgsqlenv status 9.2.6
9.2.6    :Not Running
$ pgsqlenv stop 9.3.2
9.3.2    :OK
$ pgsqlenv -a start
9.2.6    : OK
9.3.2    : OK

PostgreSQLの各種コマンドを実行するためには、該当バージョンに自動で接続できるpsqlコマンドがあります。
$ pgsqlenv psql 9.2.6 postgres
psql (9.2.6)
Type "help" for help.

postgres=# select version();
                                           version
----------------------------------------------------------------------------------------------
 PostgreSQL 9.2.6 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit
(1 row)

postgres=#

ものぐさ向けの人には、自動で自分のユーザ名と同名のDBとユーザを作ってくれるsuperコマンドもあります。
$ pgsqlenv super 9.2.6
9.2.6 :  DONE
$ pgsqlenv psql 9.2.6
psql (9.2.6)
Type "help" for help.

yutaka=#

同様に、cmdコマンドでpsql以外のコマンドも実行できます。たとえばpgbenchとかも以下の通り。
yutaka@www:~$ pgsqlenv cmd 9.2.6 createdb bench
yutaka@www:~$ pgsqlenv cmd 9.2.6 pgbench -i bench
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
creating tables...
10000 tuples done.
20000 tuples done.
30000 tuples done.
40000 tuples done.
50000 tuples done.
60000 tuples done.
70000 tuples done.
80000 tuples done.
90000 tuples done.
100000 tuples done.
set primary key...
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "pgbench_branches_pkey" for table "pgbench_branches"
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "pgbench_tellers_pkey" for table "pgbench_tellers"
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "pgbench_accounts_pkey" for table "pgbench_accounts"
vacuum...done.
yutaka@www:~$ pgsqlenv cmd 9.2.6 pgbench bench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 1
number of threads: 1
number of transactions per client: 10
number of transactions actually processed: 10/10
tps = 292.269472 (including connections establishing)
tps = 324.422528 (excluding connections establishing)

pg_dump等も実行できますので、先程作った9.2.6のデータを9.3.2に移行するのも以下のようなコマンドで簡単にできます。
yutaka@www:~$ pgsqlenv -f initdb 9.3.2
9.3.2    : waiting for server to shut down.... done
server stopped
initdb completed
yutaka@www:~$ pgsqlenv setport 9.3.2 54393
9.3.2    :54393
yutaka@www:~$ pgsqlenv start 9.3.2
9.3.2    : OK
$ pgsqlenv cmd 9.2.6 pg_dumpall | pgsqlenv psql 9.3.2 postgres
(省略)
yutaka@www:~$ pgsqlenv cmd 9.3.2 pgbench bench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 1
number of threads: 1
Number of transactions per client: 10
number of transactions actually processed: 10/10
tps = 91.455329 (including connections establishing)
tps = 96.065171 (excluding connections establishing)

制限等


基本的なところはまあ動作するように作ってありますが、まだまだ細かい部分で改善の余地があります

  • ポート番号の指定はinitdb時に消えます

  • 本来pg_dumpは移行先で実行する必要がありますが、バージョンをまたがって接続するような機能がありません。

  • 既存のマイナーバージョンのアップグレードには対応していません。8.4.5と8.4.6は完全に別バージョンとして取り扱われます。


最後に


同 時に複数のPostgreSQLを使う、というのは実際にはあまりないとは思いますが、バージョンアップの検討、複数の案件がある場合、あるいは勉強のた めなど、意外に役にたつシーンは多いのではないでしょうか。これを機会に、ぜひ導入してpostgresqlでちょっと遊ぶのに役立てていただければ幸い です。

↑このページのトップヘ