論理の流刑地

流罪に遭い戸惑う世捨人の雑記

羽生二冠のジグソーパズル

羽生善治 闘う頭脳」pp.333-334, 沢木耕太郎氏との対談より。
どうやって羽生さんは将棋を研究しているのか?と訊かれた時の応答。

沢木:
今流行している戦型があったとして、あそこでこうじゃなくてああ指したらどうなるのか、ということを考えるわけですか。
羽生:
そうですねえ....。私の場合、何か課題があって、それを解決しているというより....、もちろんそういうこともするんですが、それより、たとえばすごく大きなジグソーパズルがあって、その中に一つピースを置いてみる、ということに近い気がします。
沢木:大海に浮かぶ小舟のように、まっさらなジグソーパズルの台にピースを一つだけおくんですね。
羽生:とりあえず一つ置く。
沢木:とりあえず?
羽生:ええ、とりあえず一つ置いてみて、まあ、見当違いで何の実りもないことが多いんですけど、でも、もう一つ、もう一つ、と置いていくうちに、ときどき「あ、全体像はこういう感じになるんじゃないかな」と分かる瞬間があるんです。


羽生さんが将棋を考える時、ひとつのピースにあたる「思考の単位」は何なのかわからない。

しかしある少数のピースを置いてから、関連のありそうなピースを置いていって、
そこから生まれる意味のネットワークを感じ取る、っていうアプローチはわれわれにもできる筈だ。

沢木:
なんか、それはすごい話ですね。百に一つか、千に一つかわかりませんけど、とりあえず置いた一つのピースから、全体が見えかかることがあるんですね。
羽生:
ええ、途中で消えてしまうことの方が多いですけど。
沢木:
でも、その一つのピースを置くことからすべては始まるんでしょうね。

天才でもない我らが、新しい知を、発見を、生み出すためには、
どういう絵になるかわかっていなくても、ピースを置いていかなくてはならない...

羽生:
つまり、私は、「こういう局面でどうするか」という個別の問題より、全体像としてこんな感じの絵になるんじゃないかなあ、とか、こういう捉え方をすればいいんじゃないかな、と、「考える」というより「捉える」ということをしているときが多いです。


あっ、これは天才だわ(察し)

ハリルホジッチの民主制と敏腕社長アンチェロッティ

監督はひとりじゃできない

ハリルホジッチ体制を、「社長が部下の信頼を失った会社」と評した記事が書かれていてもやもやしていたところ、Number Webで良記事が上がっていた
number.bunshun.jp


(日本の報道では)一般に、サッカーの監督が評されるとき、
そのサッカー哲学・トレーニングメソッド・戦術的引き出し・試合中の采配etc..が、
監督個人の能力に帰せられて俎上にあげられる。

しかし、こういった記事や、現代のトップレベルの監督の手記を読めば読むほど、
「監督ひとりではやれることが限られている」ことがわかる。

なぜならば、現代サッカーでは、フィジカル面・戦術面・技術面やその他もろもろの
専門知を動員しなければ、チームを良い状態に保っておくことは困難を極めるからである。
つまり、選手をうまく使うだけでなく専門知をもつスタッフをうまく使うことまで現代の監督には求められる。

要するに、現在のサッカーの監督ってのは組織経営ができないと話にならない。

ハリルホジッチは独裁ワンマン社長か?

チームハリルの部門構成

なぜNumberの記事がよいと思ったかというと、まずそのタイトルのセンスである。

「皆さんの担当業務って、何ですか?」ってというタイトルは、
現代サッカーにおけるチーム強化が(クラブレベル・代表レベルにかかわらず)、
複数の専門分野に分割された業務の集積として成り立っている状況を、端的に表している。
それは一般企業となんら変わりない。

ハリルジャパン(株)は、以下のような部門構成となっている。

「チーム・ハリル」はコーチ、GK、フィジカル(コンディション)に外国人、日本人が1人ずついて、ペアを組んでいる。各々が専門的な役割をこなしつつも、補完性を持たせて横のパイプを太くしているのが特徴的だ (Number Web 上記事より、以下同)

つまり、以下のようになっている。

コーチ: ジャッキー・ボヌベー&手倉森誠
GK:エンヴェル・ルグシッチ&浜野征哉
フィジカル:シリル・モワンヌ&早川直樹

この人員配置の妙は、長年付き添ってきて自分の哲学・メソッドがよく理解できている外国人スタッフが、
代表の置かれている文脈や日本サッカーや選手の状況に悉知している日本人スタッフとペアを組んでいることにより、
ハリルホジッチの考えが、ハリル→日本人スタッフだけでなく、ハリル→長年連れ添った外国人スタッフ→日本人スタッフという2つの経路で伝達できることにある。

ハリルホジッチ自身のアイディアやメソッドがどれほど素晴らしいものであろうが、
それがうまく伝わらなくてはチームはひとつの生き物にならない。
しかし、ハリルが日本人スタッフにマンツーマンで考えを伝えていくと、
時間制約等もあり、どうしても齟齬がうまれきてしまう(だろう)。

このような人員配置をしておけば、同じ部門で一緒に仕事をするなかで、
ハリルホジッチのやりかたを肌身に感じている外国人スタッフが、
日本人スタッフにより密な形で考えを浸透させることができる。

結局ゲームを行うのは選手だということを考えると、選手からみれば、
(1)ハリル → (通訳)→ 選手
(2)ハリル → 外国人スタッフ → (通訳)→ 選手
(3)ハリル → 外国人スタッフ → 日本人スタッフ → 選手

という3つのルートを通じてハリルの考えが立体的に把握できるようになっている。
※各所でのインタビュー等をみると、さらに隠れた4つ目のルートとして、
(4)ハリル→ 長谷部 → 選手、というラインがここぞというところで機能していることもわかる。

ただし、ここで重要なのは、どの伝達ルートをたどるかによって情報が変容しないかということである。
「ハリルはこういったけどテグさんはこういってたよ」みたいなことが起きると、選手が混乱する。

もし本当に、ハリル政権が「社長が部下の信頼を失った会社」だった場合、混乱は最高潮になるだろう。

ハリル政権は独裁か?

Number Webの記事からみえてくるのは、独裁政権っぽさではなくむしろ、
ハリル社長の勤勉さと部下にたいしての配慮が、むしろ忠誠心の高いチームを醸成させているということである。
※もちろんこんな記事で不満を言うわけない、という考え方もあるがそれは一旦おいておく。

ヴァイッドは私のことも浜野サンのことも信頼してくれています。完璧主義者の彼のニーズに応えるべく、これからも完璧な仕事をしていきたいと思っています。
 ールグシッチGKコーチ

監督は一見、怖い感じのイメージですが、実際にはそんなことはありません。私の意見が採用されなくとも、頭の片隅に残してくれているのもよく分かります。監督とスタッフの結束は強いと感じています。
 ー浜野GKコーチ

監督はスタッフからの意見や提案を好むので、多くの議論を通して監督の考え方をよく理解しておくようにということだと思います。
 ー早川コンディショニングコーチ

このように、ハリルホジッチは下からの意見を吸い上げる民主的な組織運営をしており、
それが実際にスタッフからの信頼に結びついている
ようにみえる。

なによりも、これらの核にあるのは、ハリル自身の献身である。

朝、協会に出勤する前、ジムで会うともう「エージはどうだ? ニシはどうだ? ハヤシは? ヒガシ(東口順昭)は?」と矢継ぎ早に聞いてきます。同じマンションに住む彼の部屋を訪れるといつも誰かの試合をチェックしています。彼は毎日4、5時間しか寝ていないんじゃないかな。
 ールグシッチGKコーチ

経営者アンチェロッティ

蛇足だが、現代有数の監督とされるカルロ・アンチェロッティの著書をよむと、
欧州のビッグクラブの監督が、単なるサッカーの指導者ではなく
高度に専門化・細分化された各部門を束ねる経営者でならねばならないことがわかる。

アンチェロッティの完全戦術論

アンチェロッティの完全戦術論

コブハムにあるチェルシーのトレーニングセンターの監督室は、
大人数のテクニカルスタッフを一堂に集めてミーティングを開くこともできる広々としたオフィスであり、あらゆる最先端の設備が整っていた。
ロッカールームにではなくゼネラルマネージャーのオフィスに隣接しており、財務的な分野を除けばクラブに関するあらゆる情報と機能がコブハムに集中し、監督の手中に委ねられていた。
(pp.164-165)

PSGのテクニカルスタッフは、私のキャリアのなかで最も先端的でかつ有能なチームだった。
メンバーは私が選んだ、従来から一緒に仕事をしてきたスタッフが忠臣だったが、そこに新たに加わったメンバーも含めて、
チームのパフォーマンスを的確かつ効果的に把握しコントロールする可能性を私に与えてくれる、素晴らしい組織だった。

スタッフは、助監督、GKコーチ、フィジカルコーチとそのアシスタント、チームドクターとそのアシスタント、フィジオセラピストという基本ユニットに、GPSデータの収集・分析スタッフ、栄養士、さらに対戦相手のスカウティングとマッチ・アナリシスのエキスパートを加えて構成されていた。

毎日のトレーニングメニューは、練習開始の1時間半前に行われるミーティングで決められた。
参加するのは、ドクター、フィジカルコーチ、助監督、GKコーチ、データ収集・分析の責任者。
(pp.186-187)

もちろん予算規模や活動頻度を考えると、
代表チームには同じだけのものを求めるのは不可能だし適切ではない。

しかし現代のサッカーシーンで勝つことが、おもったより単純な作業ではないことは、上の述懐からわかる。
監督個人を評するだけでなく、銃後の体制をも検討し続けることが、より強い日本サッカーを実現するために必要ではないか。

「ラ・デシマ」を勝ち取るためには、クラブ、テクニカルスタッフ、選手の強い結束と調和が不可欠だ
(p.272)

どんな優秀なアイディアをもっていたってそれだけじゃだめで、現代の監督には組織をうまくまわすための経営手腕が必要なのである

異国アルジェリアの地で奮闘し、W杯16強という成果を残したハリルが、
「社長が部下の信頼を失った会社」をつくるとはどうしても思えない。


Conclusion

小倉体制ってステンリー・ブラードと高校のお友達の日本人コーチとの関係性がわからんかったし、やっぱいろんな意味でだめだったわ。

伝えるべきメソッドも哲学もそもそもなかったけど。

「知的生産の技術」(梅棹忠夫, 1980)

Notes

関係ないけど最近一番嬉しかったことは、
小野 滋さんの「読書日記」が復活したことである。
twitterを拝見する限り、体調を崩して休養していたようだ)

博覧強記ってこういうことかと言わしめるこんな方が在野にいるんだなって思うと
私は怠けているなぁ。

Motivation

知的生産の技術 (岩波新書)

知的生産の技術 (岩波新書)

田舎な最寄りの図書館の最近入った本のなかに見つけた(昔の本なのに)。
梅田望夫(いま何やってるんだろう..)が著書で猛烈に推してたのは記憶にあるんだが、
実際この人の本を読んだことはないので、息抜きがてら。

Point

面白いと思ったところをメモ。

てか、思ったよりも具体的なツールの使い方指南みたいな本で、
私みたいな頭の悪い人間には、いまいち現代の仕事の仕方に対する応用方法が難しいのだが、
著者の文体には(偉大な先生なのに)えらぶったところがなくて好感が持てるので、それだけでずるずると読んでしまった。
あとひらがなが多いのがいい。癒される。

研究の「方法」「技術」を考える必要性について

(引用註:当時の日本の研究者は生産性がひくく、それは研究の方法をしっかりと考え論議しないからだ、という前置きにつづいて...)
知識において高度なものを身につけているくせに、研究の実践面においては、いちじるしく能力がひくい、というような研究者がでてくるのである。
じつは、わかい人たちのことばかり、いっておられないようだ。われわれ中堅どころにいる研究者だって、ほんとうは、おそろしく研究能力がひくいのではなかろうか。
それも、頭がわるいとか、なまけものだとかの理由からではなく、もっぱら研究の「やりかた」がまずいために、研究能力がひくい段階にとどまったままでいる、ということがあるのではないだろうか。いわば、技術の不足にもとづく研究能力のひくさである。
(pp.4-5)

大変耳と胃がいたい話。独行法化した今日の大学もあまり変わらない。
ヒラノ教授シリーズで、アメリカ(のtenure前の研究者)が"publish or perish"(論文を出さなきゃ消える)っていうカルチャーだということが
紹介されていた。

「おそろしく研究能力がひくい」研究者が忙しい忙しいといいながら論文を何年も出さないままになるのであるのを間近にみてきているので、なかなか考えさせられる。(研究能力がひくくない研究者がいろんなPJTの管理をまかされて自分の論文をpublishできないのも見ているが、それはまた別の話..)

(引用註:研究の方法をみんな公開したがらない、秘伝にしたがるという話の流れで..)

技術というものは、原則として没個性的である。だれでもが、順序をふんで練習してゆけば、
かならず一定の水準に到達できる、という性質をもっている。それは、客観的かつ普遍的で、公開可能なものである。
ところが、それに対して、研究とか勉強とかの精神活動は、しばしばもっとも個性的・個人的ないとなみであって、
普遍性がなく、公開不可能なものである、というかんがえかたがあるのである。
(中略)
しかし、いろいろしらべてみると、みんなひじょうに個性的とおもっているけれでお、精神の奥の院でおこなわれている儀式は、
あんがいおなじようなものがおおいのである。おなじようなくふうをして、おなじような失敗をしている。
それなら、おもいきって、そういう話題を公開の場にひっぱりだして、おたがいに情報を交換するようにすれば、進歩もいちじるしいであろう。
(p.8)

研究者は誰もが「自分は個性的」と思っている(が、みんな意外と似ている)というのは思い当たるところがあって苦笑させられる。

面白箇所ー"天才"梅棹ここに在りー

(引用註:メレジューコフスキーの「神々の復活」に描かれているダ・ヴィンチがメモ魔であるところから梅棹もメモ魔になったという話の流れ)
ところで『神々の復活』に感動したのは、わたしばかりではなかった。
わたしには、幾人かのしたしい友人のグループがあったが、みんなつぎつぎにこの本をよんで、それぞれにつよく感動した。
青年たちは、ダ・ヴィンチの偉大なる精神に魅せられて、それぞれのその偉大さに、一歩でもちかづこうとしたのである。

ただ、その接近法は、人によってちがっていた。いまは東京工大の教授になっている川喜田二郎くんなども、そのときのグループの一人だが、
かれはもともと左ききだった。ダヴィンチが左利きだったという事実は、かれを、ダ・ヴィンチにむすびつけるおおきい力となっていたかもしれない。
かれは、『神々の復活』をよんで以来、左手で画をかくのが目立ってうまくなったようだ。
(p.23)

個人的な面白エピソード部分。川喜多二郎って高校・大学で梅棹忠夫と同期で今西錦司門下でマブダチだったというね。
旧制高校→帝大のルートって、こういうやばい相乗効果のピアグループがいくつかあって、バカにできないのである。
(今も開成灘etc→東大京大etcで同じことは起きているかもしれないが)

しかし10年くらい前に謎の(というと失礼だけど)梅田望夫さんのブーム的なものがあって、任天堂の故岩田社長や糸井重里と鼎談したり、なぜだか将棋の観戦記をかいていたりした。
当時10代の私も少し影響を受けて「ウェブ時代をゆく」を愛読したりしていた(そしてそのことをすっかり忘れていた,,,というか黒歴史と認識しているのか!?)のだが、彼が私淑していた梅棹忠夫の同門(?)の川喜田二郎の弟子や孫弟子や曾孫弟子の先生方と仕事をする機会もあったりするので、人生って数奇ですね(何の話だ)

数式をとりあつかうのに、暗算も筆算もそれぞれ特色があるように、思想を開発するにも、そらでやるのと字をかいてゆくのとでは、おのずから特徴がちがっている。それぞれの人の性質やくせにもよるけれど、ことの筋道の透察や、論理の組み立てについては、すくなくともわたしは、文章にかかないで、宙でかんがえるほうがうまくゆくことがおおい。
(p.27)

ここらへんは結構天才と凡人の分かれ道というか、知り合いの知り合い(つまり他人)の某天才数学者は、4次元が頭の中でイメージでき、暗算できるらしい。梅棹忠夫もどちらかというとそのタイプだったのではないか。

で、ここからは完全に推察というか妄想でしかないんだけれど、川喜田二郎ってあんまり頭の中での暗算が得意なほうではなくて、それでいて周りには暗算大好きっ子の梅棹とかもいて、それであんなsystematicなKJ法を生み出してしまったのではなかろうか。
この本と川喜田の「発想法」を両方ともよんでおもうのは、川喜田のほうが工学的、エンジニア的でヒューリスティックな方法を好み、梅棹のほうがより「職人芸」の領域を残したがるということなんだよなぁ

わたしも頭の中で宙で考えるのは得意ではないので、(私怨込みで)暗算モンスターよりも生産性を高めるためのツール作りにいそしんでしまうのである。まあ意外にちゃんと仕事に役立つからいいんだけどさ。

知的生産の技術のひとつの要点は、できるだけ障害物をとりのぞいてなめらかな水路をつくることによって、日常の知的活動にともなう情緒的乱流をとりのぞくことだといっていいだろう。精神の層流状態を確保する技術だといってもいい。努力によってえられるものは、精神の安静なのである
(p.96)

ここらへんがやはり天才っぽいところ。凡人は水路を引いて水を流すのにも一苦労するんだぜ、おやっさん....

第5章「整理と事務」

一見知的生産とはあんまし関係なさそうなこのような事項に一章を割いて、「いかに私は整理整頓のできない人生を送ってきたか」ということを滔々と語っているのが、まず面白い。
苦闘の末に梅棹御大がたどりついたのが、なんの変哲もない「書類をカテゴリごとにファイルにまとめて縦にする」という方法だったのも面白い。

その方法とは、基本的には、
・固有名詞レベルのカテゴリ分け(要するに、「学会関係」ではなく「XX経済学会」などにしておく」)をして、フォルダ(=「口座」)をつくり、処理中の書類を除きフォルダに収納・保存する
・フォルダ名によるアイウエオ順で、キャビネットに収納する
・処理中の書類については、別の仮保管場所(未決箱)をつくる
だけである。

仮保管場所を作るというのは盲点だったようで、以下のように書いている

手紙がきたら、まず要件を処理しなければならないのだ。それがすむまでは、手紙は机の上の未決箱に入れておかねばならない。返事をかくべきものはかく。それがすんだら、返事のコピーと一緒に、ファイルにいれるのである。つぎにその用件のつづきがおこったら、ファイルがものをいう。それに関する過去のいっさいのいきさつが、ファイルにおさめられているのだから。
(p.90)

たぶん下のまとめにのっているようなものを想像すればよいのであろう
GTD式・一般参照ファイルキャビネット管理術! - Togetterまとめ


整理というのは、ちらばっているものを目ざわりにならないように、きれいにかたづけることではない。それはむしろ整頓というべきだろう。
ものごとがよく整理されているというのは、みた目にはともかく、必要なものが必要なときにすぐ取り出せるようになっている、ということだとおもう。

(中略)

整理は、機能の秩序の問題であり、整頓は、形式の秩序の問題である
やってみると、整頓より整理のほうが、だいぶんむつかしい。たとえば、書斎のなかをきれいに整頓することは女中でもできるが、整理することは主人でないとできない。
(p.81)

要するに、何にどこがあるかをしっかりしていればいいよね、という話だが意外とそれができないんだよなぁ。
流罪人生活が終わったら、書類整理用の大きめのスチール棚を買おう(こうやってオシャレ部屋からだんだん乖離していくのである..)

ビジネスの世界と研究の世界との距離について

ざんねんながら、研究活動をはじめ、知的生産活動一般の技術は、
はなはだしく未開発のまま放置されているようにおもわれる。そういうことは個人の内面における深遠な個性的創造活動だから、技術化などはできないのだ、などとおもっているうちに、最も世俗的なビジネスの世界の、平明な技法の進歩に、たちまちおいこされてしまったのである。
今日においては、知的生産は、その技法において、ビジネスの世界にまなばなければならない点が、ひじょうにおおいようにおもわれる(p.94)

これは、心から同感(てか昔からそうだったのか...)。正直いって専門知の多寡以外のところで、研究者(top of topをのぞく)は、おおいに生産効率性の面で遅れをとっている。
これは、個人でやるかチームでやるかというところにも関わっている気がしていて、チームで動く企業だとそこまでtrainedでない労働力をどううまく最終的な知的(にみえる)outputの生産に動員するかっていうことが考えられているから、規格化・標準化の努力が自然に為される。理工系も、院生を動員してチームで何か研究することが多いから、結構考えてる。

人文社会科学の研究者(って括りが雑すぎるが)はあまりそこらへんを考えていないので、論文をかくための標準的な「マニュアル」を作って多少素養のある院生に渡したら、東大教授とか目じゃないほどの生産性を叩き出すのではないか、という分野が確かにある。

その他

・文章をかく方法として「こざね法」という、カード(単語、節、文がかいてある)を論理の筋道や内容の類似度によって、ホッチキスで止めて、見出しをつけて、それをさらに配列する....という方法があるが、これはKJ法の簡易版である。だから「発想法」を読んだほうがいいよ、と言ってしまっているのがまた奥ゆかしいところ。

・天才感が迸りまくってる御大も、自認としては凡人らしい。

(引用註:こざね法の利点について)
文章という点からいって大切なことは、この方法でやれば、だれでも、いちおう論理的で、まとまった文章がかける、という点である。
天成の文章家には、こんな技術はまったく不必要であろう。これは、凡人のための文章術である。

しかし、文章は天才だけが書いておればいいのではない。文章をかく能力を、
失文症や文章アレルギーをおこしている凡人の手にも、とりもどさなければならないのである。
(p.205)

ここらへんの、「いちおう論理的でまとまった文章がかける」状態を担保しておくことへの問題意識は、
なんか下の対談の、宮本茂を彷彿とさせる。
第10回 流れているほうがいい。 - 宮本 茂 × 糸井重里 ひとりではつくれないもの。 - ほぼ日刊イトイ新聞

質問者(糸井の部下):
それは、あれですかね?
宮本さんも糸井さんも
「大きくバケた」という経験が豊富だから、
その経験が乏しい人は、
覚悟を決めてアクセルが踏むことができない、
というようなところがあるんですかね?

糸井:
うーん、でも、小さい規模のことでも
同じことが起こりうるんだよ

宮本:
そうですね。
あの、よく言うことなんですが、
川が淀んでいるのと、川が流れてるのって、
川の大きさは関係ないんですよ。
流れる水の量の話をしたいわけなので。
(中略)
基本的に、どんな川であっても、
深くても浅くても広くても汚くても
「流れているほうがいい」と思う。
だいたいダメなときって、
「流れてない」んですよ。
そういう川をいくつもいくつも見てると、
「あ、これは流れる可能性あるよ?」とか、
そういうことがわかってくるんです。

(中略)
でも、そうですよね?
流れてたら、そこからこぼれたものが
薄くても、濃くても、利益になるんです。
そういう意味で、その企画が「流れてる」なら、
「利益薄くてもいいん違うの?」
という話ができるんです。
逆に、いろんなビジョンが描けたとしても、
まず「流れてない」となにも起こらないので、
利益の話をするまえに、そっちなんですよ。
「ずっと後で、これだけ回収して帳尻が合います」
って言われても、ねぇ‥‥

結論

宮本茂ってやっぱ神だわ。
まぁいろいろもっと深い読み方はあるんだろうが、これくらいで終わりにしとこう。仕事もあるからね。

Enjoy!!

竜王戦

Motivation

詰みを逃したが、挑戦者決定戦第1局で馬で金を抜く筋はすごかった。
羽生さんに頑張って欲しい。永世竜王をとって欲しい。

松尾八段

f:id:ronri_rukeichi:20170815224637j:plain

羽生三冠

f:id:ronri_rukeichi:20170815224822j:plain

控え室に来訪した飯島七段

f:id:ronri_rukeichi:20170815224839j:plain

Enjoy!

「知的トレーニングの技術」+「アイディア大全」

執筆・リサーチの方法論がいまいちイケてないんじゃないか、
というのが最近の自分自身の疑念としてあるので、読んでみた。
忘却の前にちょいと書き残しておく...

ひとこと感想

「アイディア大全」

アイデア大全――創造力とブレイクスルーを生み出す42のツール
・ネット上では有名なブロガー、読書猿さんの著書。いろいろな方法論が載っていて大変に有益なブログ。
・ただし、レビューで絶賛されている割には使い勝手が...という印象。
・もちろんこの使い勝手の悪さは承知して、この形で執筆されているのだろう。
・(問題設定・仮説提示・分析・結論提示という)知的生産工程を
 ワンストップで最終成果物まで仕上げることが生業の人(自分含む)が読むと、
 (料理の全体工程ではなく)下処理の方法やソースの作り方ばかりが載っているような、
 片手落ちのレシピを提示されている気分になるのでは。
・部分工程の改善案集なので、全体工程にうまく取り入れられる人向けの本である。
・個人的には「バグリスト」「コンセプト・ファン」「仮定破壊」「さくらんぼ分割法」「等価変換法」らへんを意識的に作業フローに入れて中間成果物をデザインしとくともう少し、執筆のスピードが上げられるんだろうな。
・というか「発散」と「収束」をうまく分けられてないんだよなぁ私は。
・この本に対して「こんなことみんなやってるじゃん」という批判もあるが、意外と基礎技術と基礎技術として認識して研磨するのって大事やない?
 

「知的トレーニングの技術」

知的トレーニングの技術〔完全独習版〕 (ちくま学芸文庫)
・「アイディア大全」の著者がブログでプッシュしていたのに乗って購入。
・前菜とデザートは若干癖あるが、メインディッシュの部分はかなり良い本である。
・「知的生産過程のモデル」(p.111)は自作の執筆工程と、かなり符合していて
 驚嘆すると同時に少し笑ってしまった。似たこと考えるひとはどの時代にもいて面白いなぁ。
・「知的生産過程のモデル」の12工程をみていくと、
 「#6:構想(細部まで説明可能な概念図、思考の地図、観念の設計図を作成する段階)」から
 「#7:構成(観念図を小分けした「目次」につくり変えて、面を線に変換する段階)」までの流れが、なんというかKJ法AB型(川喜多「発想法」参照..)と同じ思想を感じる。
・「蒐集」を分析・研究の基礎作業として重視するというのは目から鱗である。というかこれが個人的この本から得られた一番の示唆。以下、いくつか示唆的なところを引用。

あつめることは分析の第一歩だ。物でも情報でもいいが、あつめているうちに知らず知らずにそれについての鑑識眼が身についてくる(p.119)

ロラン・バルトのモード研究について)
これは、果てしない蒐集作業に一定の枠を与えて、研究対象の体系性を確保するという方法の好例で、
この枠づけが逆に、テーマを明確に限定することにもなっていることがわかるだろう。
だから、どこまでも趣味にとどまる蒐集ならともかく、知的生産を目標にした蒐集はなんらかの体系性・全体性をあたえる必要がある(p.122)

・個人的に目標としている某K先生も蒐集魔という話を耳に入れたことがある。要するにケース × 変数のマトリックスを蓄積していく、という作業が知的生産の「発散」のフェーズに(無論「収束」にも効いてくるが...)非常に有益であるということである。ここがおろそかだなぁ自分は。


ということでこれから何をするか

・また自分の執筆工程を少し変えていく。
・中間成果物をどうするかということについて、蒐集→発散→収束という段階を認識しながらテンプレートを改訂したい。
・人に説明できるように、進捗報告資料とも密連結にしておきたいところ。

Macで、回帰系の手法の結果を、Excelに貼るだけの状態で出力する関数

俺しか得しない関数シリーズ。要dplyr。

※主な今後の改善点を備忘のために、冒頭に書いておく
✔︎ glmやlmerへの対応を
✔︎ モデル指標のところ、小数点桁を指定可能に
✔︎ 変数をmodelごとに差し引きした時に、表側の変数名とCoefやS.E.の係数推定値の垂直位置がずれるのを直す(今は手動。そんなにめんどくさくないからね)

Motivation

・めっちゃRegression Tableつくらなあかんねんけど、いちいち整形するのめんどい。
・でも私はTex族じゃない→texregとかstargazerとかはぴったりこない。ExcelとかいうMicrosoft様のむっちゃ使いにくい神ソフトで表を整形したい
・でもたくさんあるRegressionのコードごとに関数定義するのはダサい

Source Code

## 便利関数定義 ##
# 引数①:  lm()関数の結果を格納したlist
# 引数②: 数値間の区切り文字(デフォルトはタブ区切り)
# 引数③: 回帰係数をExp()したものを表示するか否か ※対数変換済所得などを従属変数に指定したとき用
# 引数④: fileの出力場所  ※デフォルトはDesktopに"test.txt"という名前で出力する
# 引数⑤: どの関数を使ったか。Defaultはlm() # lm, clm(順序ロジット, ordinalパッケージ), rq(分位点回帰、quantregパッケージ)に対応( As of 17/6/27)

reg_to_excel <- function( res_list , blk = "\t" , exp_coef = F , file_name = "/Users/Ronri_Rukeichi/Desktop/test.txt", reg_function = "lm" ){

def_funcs <- c("lm", "rq", "clm")

if(!reg_function %in% def_funcs ){
stop("指定された回帰関数は未対応です, clm or lm or rqのどれかを指定すべきです")
} #if

info_list <- lapply( res_list , function( rslt ){

#実装上の注意 ,,,, (A)回帰係数系(独立変数に付随する情報)と、(B)モデル指標系、は別個にみたほうがよいので、別の情報としてかえす
if( reg_function == "lm" ){
# - - -Case1: lm関数(通常のOLS)- - -#
# summary objectを取得
smr <- summary(rslt) 

## 回帰係数、S.E.を取得
coef_arr <-  coef(smr)[,1] #回帰係数
se_arr <- coef(smr)[, 2] #標準誤差
pval_arr <- coef(smr)[, 4] #p値
var_name_arr <- rownames(coef(smr)) #変数名
coef_df <- data.frame(Var = var_name_arr , Coef = coef_arr, S.E.= se_arr  , Pval = pval_arr )  #DF化

## Model指標を取得 ### 
N <-  length(smr$residuals) # 分析ケース数
nparam <-  slot(logLik((rslt)),"df") #number of parameters
val_logLik <- as.numeric(logLik((rslt))) #対数尤度 
val_AIC <- AIC( rslt) 
val_BIC <-  BIC( rslt)
r_squared <-  summary(rslt )$r.squared
adj_r_squared <- summary(rslt )$adj.r.squared
cri_names <- c("N" , "Number of Parameters" , "log-likelihood" , "AIC" , "BIC" , "R Squared" , "Adj. R Squared")
cri_values <- c( N , nparam,  val_logLik , val_AIC , val_BIC , r_squared , adj_r_squared )

#-- convert to data frame 
cri_df <- data.frame( Var = cri_names , Value = cri_values )

## Tableに記載する情報を返す ##
return(list(  Coef = coef_df ,  Model = cri_df ) )  #

}else if( reg_function == "clm"){
#- - -Case2: clm関数("ordinal" package , ordered logit/probit )  - - -#
# ordered logit modelの場合も同様に実装する..

#--Summary Object --
smr <- summary(rslt) 

# - - Coefに関する情報行列は、lmの場合と同様の実装- -
coef_arr <-  coef(smr)[,1] #回帰係数
se_arr <- coef(smr)[, 2] #標準誤差
pval_arr <- coef(smr)[, 4] #p値
var_name_arr <- rownames(coef(smr)) #変数名
coef_df <- data.frame(Var = var_name_arr , Coef = coef_arr, S.E.= se_arr  , Pval = pval_arr )  #DF化

#- - -Model Information Matirx - - -#
N <-  smr$nobs # 分析ケース数
nparam <-  slot(logLik((rslt)),"df") #number of parameters
val_logLik <- as.numeric(logLik((rslt))) #対数尤度 
val_AIC <- AIC( rslt) 
val_BIC <-  BIC( rslt) 

cri_names <- c("N" , "Number of Parameters" , "log-likelihood" , "AIC" , "BIC" )
cri_values <-  c( N  , nparam , val_logLik , val_AIC , val_BIC ) 

#- - -Convert to Data Frame - - -#
cri_df <- data.frame( Var = cri_names , Value = cri_values ) 

## Tableに記載する情報を返す ##
return(list(  Coef = coef_df ,  Model = cri_df ) )  #

}else if( reg_function == "rq"){
#- - -Case3 : rq関数(分位点回帰モデル , "quantreg" package ) - - -#


##  出力イメージ(他の回帰系との相違点)
# ・OLSやGLMの場合はregression tableに記載するときは, 「Model XX」の下に各情報が並ぶ感じになるけど、
#  Quantile Regressionの場合は、「Model XX」の下に 「YY%点」が併記される形になるので、一階層分深めにdata構造を作っておく

##--- summary object --- ##
smr <- summary( rslt ) 

coef_df_list <- list()
cri_df_list <- list()

for( i in 1: length( smr ) ){
## 回帰係数周りの情報 ##
#print(smr)

coef_arr <- ((smr[[i]])$coefficients)[,1]
se_arr <- (smr[[i]]$coefficients)[,2]
pval_arr <- (smr[[i]]$coefficients)[,4] 
var_name_arr <- rownames((smr[[i]]$coefficients))
coef_df <- data.frame(Var = var_name_arr , Coef = coef_arr, S.E.= se_arr  , Pval = pval_arr )  #DF化

coef_df_list[[i]] <- coef_df

## - - -Model Information --- ##
N <- nrow( rslt$residual)
nparam <- slot( logLik(rslt),"df")
val_logLik <- logLik(rslt)[i]
val_AIC <- AIC(rslt)[i]
val_BIC <-  -2 * val_logLik + log( N ) * nparam
val_tau <- smr[[i]]$tau
cri_names <- c("N" , "Number of Parameters" , "log-likelihood" , "AIC" , "BIC", "Quantile" )
cri_values <-  c( N  , nparam , val_logLik , val_AIC , val_BIC,  val_tau) 

#- - -Convert to Data Frame - - -#
cri_df <- data.frame( Var = cri_names , Value = cri_values ) 
cri_df_list[[i]] <- cri_df

} ##for

## Tableに記載する情報を返す ##
return(list(  Coef = coef_df_list ,  Model = cri_df_list ) )  #

} #if 回帰関数別
} ) #lapply

###====: info_listからテキストに変換:=== ###
## Quantileの場合が難しい → とりあえず、tauの下に各モデルを配置するような感じにしとく, 


# 関数定義: 文字列のvectorをk行空きにする関数
mix_blank <- function( str_arr ,k=1 , blank_str=" " ){
return(as.vector( matrix(c( str_arr , rep( blank_str , length(str_arr) * k  ) ) , nrow= (k + 1) , byrow=T ) ) )
} #function 

# - - 有意確率→Symbolの変換関数
pval_mark <- function( pval){
return(ifelse( pval >= 0.10  , " " , ifelse( pval  >= 0.05 , "†" , ifelse( pval >= 0.01 , "*" , ifelse( pval >= 0.001 , "**" , "***" ) ) ) ))
} #function


#整形用の関数を定義 
#・標準誤差は[ ] で囲んで回帰係数の下に表示. 
#・カスタマイズできるようにしてもいいが、とりあえず後回し。
library(dplyr) #dplyrパッケージを読み込む

coef_to_txt <- function( coef_df, exp_flag = F,  round_digit = 4  ){
#必要情報だけ抜いてくる
info_df <-  dplyr::select( coef_df, Coef, S.E., Pval)

# S.E.を [ ] で囲んでCoefの下にもってきて一列にする
se_str <-   paste("[", formatC(round(info_df$S.E. , round_digit ) , format= "f" , digits = round_digit) , "]" , sep="")
coef_str <- formatC( round( info_df$Coef ,  round_digit ) , format="f" , digits = round_digit )
est_str <-   as.vector( matrix( c( coef_str , se_str ) , byrow=T , nrow = 2 ) )

# 有意確率を表すsymbolの文字列生成 
p_smbl <-  pval_mark( info_df$Pval) 
p_smbl_arr <- mix_blank(p_smbl , k= 1 ) #1行空きにする

# expのCoef乗を返す(Flagに応じて)
if( exp_flag == TRUE ){
exp_beta <-  formatC( round( exp( info_df$Coef ),  round_digit )  , digits = round_digit , format="f" )
exp_beta_str <- mix_blank( exp_beta, k = 1 )  #一行空きにする。

# 行列型にして返す
return( cbind( est_str, p_smbl_arr , exp_beta_str) )

}else{
#行列型にして返す
return( cbind( est_str, p_smbl_arr ) ) #
} #if
} #function( coef_to_txt)

# 簡易関数, Model Criteria version
mdl_to_txt <- function( model_df , exp_flag=F){
cri_values <- formatC( model_df$Value  , format="f" , digits = 3 ) 
## exp(回帰係数)を表示するか否かで、何列空きにするかを変える ##
if( exp_flag ){
ret_mat <- cbind( cri_values , rep( " " , length(cri_values ) ),rep( " " , length(cri_values ) ) )
}else{
ret_mat <- cbind( cri_values , rep( " " , length(cri_values ) ) )
} #if
return(ret_mat ) 
} # function 

# 行数が違う行列をcbindするときに、数が少ない方を空の文字列で埋める関数
cbind_v2 <- function( mat1 , mat2 , blank_str = " "){
n1 <- nrow( mat1 ) 
n2 <- nrow( mat2 ) 

if( n1 > n2 ){
#第1の行列のほうが、第2の行列よりも行数が長い場合..
add_mat <-  matrix( rep(" " ,  ncol(mat2 ) * (n1- n2 )), ncol= ncol(mat2) )
# - -
mat2 <- rbind( mat2 ,add_mat ) 
ret_mat <- ( cbind( mat1 , mat2 )  ) 
}else if( n1 < n2 ) {

add_mat <-  matrix( rep(" " ,  ncol(mat1 ) * (n2- n1 )), ncol= ncol(mat1) )
# - -
mat1 <- rbind( mat1 ,add_mat ) 
ret_mat<- ( cbind( mat1 , mat2 ) )

}else if( n1 == n2 ) {
# なんもしない
ret_mat <- cbind( mat1 , mat2 ) 
}

return( ret_mat )  #統合した行列を返す。
} #function

##- - - 先に外枠を完成させてから、中に埋めるものを完成させる方式- - - ##
#- - とりあえず普通のOLSとかordered logitとかの、シンプルな場合から考えていく - - -#

if(reg_function %in% c( "lm" , "clm")){

##- - -通常パターン- - - ##
## ====表側の情報 ==== ##
# 変数名
var_names <- as.character( info_list[[length(info_list)]]$Coef$Var )  
# モデル指標の名前
model_info_names <- as.character( info_list[[length(info_list)]]$Model$Var )  

#- - 行列形式に変換してk × 1の行列で保存,, 
# 変数名に関しては一行空きにする。 


# 表側の表示テキストを格納した行列
left_side <-  matrix(c(as.vector( matrix(c(var_names , rep(" ",length(var_names))), nrow=2,  byrow=T)), model_info_names) ,ncol=1)

## ==== 表頭の情報 === ##
 if( exp_coef  == T){
title_arr <-  c("β", " ", "Exp(β)" )
}else{
title_arr <-  c("Coef." , " " ) 
}
 #回帰係数のexp()を表記するか(引数③)によって2列or3列が変わる。
model_name_arr <- paste( "Model" ,1:length( info_list )  ,sep = "" ) #
#print( title_arr)
#print(model_name_arr)

# 表頭の表示テキストを格納した行列
upper_side <- matrix( c( mix_blank( model_name_arr , k = ifelse( exp_coef ==T , 2 , 1 ) ) , rep(title_arr,length(res_list )  )) , byrow = T , nrow= 2)

## ==== 表のcontents(回帰係数の推定結果) ==== ##
tbl_content <- NA #初期化
lower_side <- NA #初期化


lapply( info_list ,  function( info_elm  ){
#print(coef_to_txt(info_elm$Coef, exp_flag = exp_coef))
if( is.na( tbl_content  ) ){
#初回の処理
tbl_content <<- coef_to_txt(info_elm$Coef, exp_flag = exp_coef)
lower_side <<- mdl_to_txt( info_elm$Model,exp_flag = exp_coef) 
} else{
# 2回目以降の処理
tbl_content <<- cbind_v2(tbl_content , coef_to_txt(info_elm$Coef , exp_flag = exp_coef)  ) #横につなげていく
lower_side <<- cbind( lower_side ,  mdl_to_txt( info_elm$Model,exp_flag = exp_coef)  )
} #if
}) #lapply

## ここまで生成した文字列行列を統合
ret_mat <-  cbind( rbind( matrix( c(" " , " ") , ncol=1 ) , left_side ) , rbind( upper_side , tbl_content , lower_side ) )

#return(ret_mat) 


}else if(reg_function ==  "rq"){
##- - -Quantile Regressionの場合  - - -##

info_list2 <- list()
#- - 入れ物だけつくっておく
for( i in 1:length(info_list[[1]]$Model) ){

info_list2[[i]] <- list()
} #for

cnt <- 0


lapply(info_list , function(info_elm){
cnt <<- cnt + 1 #インクリメント
#まずCoefの情報を、順番に、格納していく
coef_cnt <- 0 
lapply(info_elm$Coef  , function( coef_info){
coef_cnt <<- coef_cnt + 1 
#print(">>>> <<<<<")
#print(coef_cnt)
info_list2[[coef_cnt]][[cnt]] <<- list()
info_list2[[coef_cnt]][[cnt]][["Coef"]] <<- coef_info


} )#lapply Coef

#print(info_list2)
# 次はModelの情報
model_cnt <- 0 
lapply(info_elm$Model  , function( mdl_info){
model_cnt <<- model_cnt + 1 
info_list2[[model_cnt]][[cnt]][["Model"]] <<- mdl_info
} )#lapply Coef
}) #lapply info_list



ret_mat_list <- lapply( info_list2 ,function(info_list){
## ====表側の情報 ==== ##
# 変数名
var_names <- as.character( info_list[[length(info_list)]]$Coef$Var )  
# モデル指標の名前
model_info_names <- as.character( info_list[[length(info_list)]]$Model$Var )  

#- - 行列形式に変換してk × 1の行列で保存,, 
# 変数名に関しては一行空きにする。 

# 表側の表示テキストを格納した行列
left_side <-  matrix(c(as.vector( matrix(c(var_names , rep(" ",length(var_names))), nrow=2,  byrow=T)), model_info_names) ,ncol=1)

## ==== 表頭の情報 === ##
 if( exp_coef  == T){
title_arr <-  c("β", " ", "Exp(β)" )
}else{
title_arr <-  c("Coef." , " " ) 
}
 #回帰係数のexp()を表記するか(引数③)によって2列or3列が変わる。
model_name_arr <- paste( "Model" ,1:length( info_list )  ,sep = "" ) #
#print( title_arr)
#print(model_name_arr)

# 表頭の表示テキストを格納した行列
upper_side <- matrix( c( mix_blank( model_name_arr , k = ifelse( exp_coef ==T , 2 , 1 ) ) , rep(title_arr,length(res_list )  )) , byrow = T , nrow= 2)

## ==== 表のcontents(回帰係数の推定結果) ==== ##
tbl_content <- NA #初期化
lower_side <- NA #初期化


lapply( info_list ,  function( info_elm  ){
#print(coef_to_txt(info_elm$Coef, exp_flag = exp_coef))
if( is.na( tbl_content  ) ){
#初回の処理
tbl_content <<- coef_to_txt(info_elm$Coef, exp_flag = exp_coef)
lower_side <<- mdl_to_txt( info_elm$Model,exp_flag = exp_coef) 
} else{
# 2回目以降の処理
tbl_content <<- cbind_v2(tbl_content , coef_to_txt(info_elm$Coef , exp_flag = exp_coef)  ) #横につなげていく
lower_side <<- cbind( lower_side ,  mdl_to_txt( info_elm$Model,exp_flag = exp_coef)  )
} #if
}) #lapply

## ここまで生成した文字列行列を統合
ret_mat <-  cbind( rbind( matrix( c(" " , " ") , ncol=1 ) , left_side ) , rbind( upper_side , tbl_content , lower_side ) )

return(ret_mat) 
}) #lapply info_list


#return(ret_mat_list) 


#内容をタテにつなげる
ret_mat <- NULL
lapply( ret_mat_list , function(x){
ret_mat <<- rbind( ret_mat , x ) 
}) #lapply

#return(ret_mat)
} # IF


# 最後にfileに出力する。
write.table(ret_mat , sep=blk , file=file_name , quote=F , row.names = F  , col.names=F )
return( info_list ) 
} #reg_to_excel

How to Use

例えばOLSの場合。

#推定
ols_res1 <- lm( ols_fml , data = test_data  )
ols_res2 <- lm( ols_fml , data = test_data  )
ols_res3 <- lm( ols_fml , data = test_data  )

# 推定結果をlistにまとめる
ols_res_l <- list( ols_res1 , ols_res2,ols_res3) 

# 上記関数により出力
reg_to_excel(ols_res_l , reg_function= "lm", file_name  = "/Users/Ronri_Rukeichi/Desktop/ols_reg.txt" , exp_coef = T )

できあがり

出力したtxtファイルを全コピしてExcelにpasteするだけで
f:id:ronri_rukeichi:20170629112024p:plain

あらふしぎ!


Enjoy!!

至言

◆Revolution

明治安田生命J2リーグ 第20節 長崎戦前々日 監督会見|ニュース|名古屋グランパス公式サイト


─青木選手、杉森選手はこれまでのシーズンで出場機会もなかなかありませんでしたが、どういう部分に成長の可能性を感じられるのでしょうか?

1つは、彼ら2人は人にないものを持っています。スピードであったり、しなやかさです。そしてもう1つは、その分これまであまりサッカーを勉強してこなかったということです。それを1個ずつ、最初から2つをやると分からなくなるので1個ずつ、こちらも我慢ですが何度もやれば、彼らの中でも自分でやるようになっていきます。ただ、まだまだ足りているわけではありません。才能とは全員の中に埋まっているもので、あとは頭の中がフリーになっているかどうか、向かってこれるかどうか、人のせい物のせいにせず自分に期待しているかどうか、それを教えると若い選手はどんどん伸びてきます。これはベテランでも同じですが、扉を開けられるか、開けたらまた違う扉が出てきます。これまでは開けようとしていなかった、開けようとしているがどう開けるのか分からなかった。それが徐々に分かるようになってきた


お前は頭の中がフリーになっているか?

「 1対21 」 のサッカー原論 「 個人力 」 を引き出す発想と技術 p.96

指導時には、「こうやって蹴れ」と強要する必要はありません。
指導者と選手は違うので、何が正解なのかは、選手が自分で見つけるしかないのです。

ですから、「こういう結果を出してみなさい」という教え方で、
自分で考えられるように持っていくとよい
と思います。

人を導くときは、細かいHow toではなく中間成果物で誘導しろ!


Enjoy!!