エバンスの雑記帳

MBA、Python、子育て、将棋、文房具、その他

将棋初段取得のための終盤勉強法

こんにちは、居飛車党のエバンスです。初段取得のためにどのように終盤力を鍛えるのが良いのか御紹介したいと思います。

終盤とは

厳密な定義はないように思いますが、駒がぶつかり始めてアドバンテージを稼ぐ(飛車先を突破する・成り駒を作る等)のが中盤だとすれば、それ以降の相手玉を詰ましにかかるのが終盤になります。

大事なこと

相手に自玉が詰まされるよりも、「一手早く」相手玉を詰ますことです。自玉が攻められていても相手玉を一手早く詰ませば勝ちなので、速度を重視した手を選択することが重要になります。

勉強方法

詰みの形を知る

一間龍(イッケンリュウ)やそれを活かす送りの手筋、また、矢倉崩し・美濃崩しといった出現頻度の高い囲いを壊滅に追いやる方法を丸暗記しましょう。

どんな本でも良いと思いますが、私が初めて終盤の勉強するために購入したのは ↓ の本でした。2006年出版。。。笑

www.amazon.co.jp

最近だとここらあたりが良さそうでしょうか

www.amazon.co.jp

また、手筋云々の前に、終盤の指し方(方針)自体がよくわからないという方は、↓ の本を読んでみると終盤では何を優先すべきなのか理解が深まると思います。

www.amazon.co.jp

受けなしにするために

初段が間近になってくると、相手も自玉の詰み筋がわかってくるのでそれを防いできます。こうなると直接詰ますというよりは、相手玉を受けなし・必至に追い込む、という指し方が必要になります。「王手は追う手」や「玉は包むように寄せよ」というのは、まさに相手玉は受けなしに追い込むべし、という格言ですね。

私が実際に読んで、大きな効果を実感したのは ↓ の書籍です。少し難しめの本ですが、もうすぐ初段という棋力はあるが終盤に難ありという方には、強くオススメできます!

www.amazon.co.jp

詰将棋

サクサク解けるレベルの問題を多く解くのが良いと思います。初段を目指すのであれば、まずは3手詰みをしっかりと解けるようにする、物足りなければ5手詰みというのがセオリーだと思います。7手詰めを迷わず解けるという方は、既に終盤力は初段以上のレベルだと思います。 詰将棋でオススメの棋書というのも難しいですが、とりあえず有名どころを載せておきます。

www.amazon.co.jp

www.amazon.co.jp

まとめ

初段になるためには、優勢の将棋を波乱なく勝ち切る・劣勢の局面から逆転するための終盤力は非常に重要です。終盤を勉強して、寄せの手筋で相手玉を一気に詰ます爽快感、ジリジリと相手玉を必至に追い込んだ時のしてやったり感を是非味わってみてください!

Pythonを使って「マンガ線形代数入門」の練習問題を解く

こんにちは、文系なのにPythonにハマっているエバンスです。仕事で逆行列に触れる機会があり、知識がない者でも読みやすい入門書を探していたところ「マンガ線形代数入門」に辿り着きました。

bookclub.kodansha.co.jp

マンガなのに講談社ブルーバックスシリーズ、これは!ということで購入(電子書籍版)。読み進めたところ、章の終わりに練習問題が。。。

最初は解く気がせず、答えを見て納得しつつ読み飛ばしていたのですが、折角だから Python に解いてもらおう、ということでブラウザ上で Python3 のコードを書いて実行できる paiza.IO にて、それぞれ解いてみました。

paiza.io

第2章練習問題

行列の計算には、Pythonでは Numpy を使うことが多いようです。Numpy 内では選択肢が複数あるようで大きくは array (配列)派か matrix (行列)派に分かれるみたいです。今回は難しいことは考えずに行列用の matrix を採用しました。

この章の練習問題は、連立方程式を行列を使って解くものです。書いたコードを載せておきます。

第3章練習問題

1は2×2の行列の逆行列を求める問題。2は2×2の行列入りの方程式を解く問題。求める行列が、与えられた行列の右側か左側かで計算の過程が変わるのがおもしろいですよね。

第4章練習問題

連立方程式を行列にの形にして解いてみる問題。ちなみに、あえて解がない方程式が出題されていて、解がない場合は不定不能かを判定するべきなのですが、面倒なので「不定 or 不能」と解けないことだけ明示しています。

第5章練習問題

座標上に、格子状に9点(x: 0, 1, 2 と y: 0, 1, 2 の組み合わせ)が与えられており、それを2×2の行列で1次変換する問題。

本当はmatplotlibを使って変換前後を比較したかったものの、paiza.IO上でエラーが出たので視覚化は断念。

まとめ

「行列の計算は機械の方が得意」と本書の中にも記載があったとおり、コードにすると非常にあっけないというのが感想です。Python(というか Numpy?)に感謝ですね!

Python学習法_Paizaラーニングの練習問題

こんにちは。文系なのにPythonにハマっているエバンスです。
以前の記事でPython学習のための無料サービス「Paizaラーニング」を紹介しました。この記事では、そのサイト内の練習問題について、私が問題に取り組んだ課程を振り返り、解き方を説明したいと思います。

以前の記事はこちら。

evansmode.hatenablog.jp

練習問題

Paizaラーニングにはたくさんの練習問題が掲載されています。練習問題は、時間制限なしで自分の評価(ランク)にも影響がないため、気軽に腕試しをすることができます。

「プログラミング練習問題」という名前で、Paizaラーニングのトップページ上からアクセスすることができます。(他のコースに混ざって、ページの底に近いあたりに掲載されているので、意外と見つけにくいです。。)

こんなのです。
f:id:evansmode:20180514022052p:plain

問題ランク

練習問題は、それぞれSからDまでランク付けされているので、自分の実力に合わせた問題に挑戦することができます。

まずは、時間のかからないDランクかCランクの問題を解いてみると良いと思います。Dランクであれば1分かからずに解けますし、Cランクでも5分程度で解くことができると思います。

私の場合、Bランクが10~20分かけて楽しんで解けるレベルです。Aランクだと真面目に考えないと答えに辿り着けない、また、メモを取らないとコーディングの途中で迷子になる感じです。

問題を解く流れ

まずは問題文を読みましょう。入力例と回答例も載っていて、どのような回答が求められているのか、イメージしやすく親切です。

簡単な問題であれば、この時点でコーディングの内容について目途が付いていると思います。

また、コーディングの前に、解答欄の右上のプルダウンで Python3 を選択するのを忘れないでください。

1. データの取得方法

Paizaラーニングの問題では、「標準入力」という形態でデータが与えられるのですが、これが慣れないうちは意味不明で挫折しがちです。

問題とは関係ないところで引っかかるのは単なる時間の無駄なので、↓の記事を見て、データの取得・加工(切り分け等)は丸写ししてしまうのをオススメします。

qiita.com

なお、出力(回答)は print するだけなので簡単です。

今回の問題では、文字列形式で数字が与えられるので、↓のとおり int() 関数を使って整数形式に変換しながらデータを受け取るようにしました。

input_int = int(input())

2. コーディング(繰り返し処理)

入力の部分が終われば、いよいよ本題です。
私が今回挑戦した問題は「Fizz Buzz」というもので、整数Nが与えられ、整数1~Nを1行ずつ出力する問題です。ただし、出力する数字が3の倍数ならFizz、5の倍数ならBuzz、3と5の倍数(要は15の倍数)ならばFizz Buzzと出力せよ、という指示です。(世界のナベアツ。。。)

1~Nを出力する点に注目して、繰り返し処理について記述します。Pythonでは "For文" を使用します。

For i in range(input_):
    print(i+1)

pythonの繰り返し処理の変数 i は、range() を使うと0から始まるので print(i+1) として 1~N が出力されるようにしています。

なお、初心者の場合、コードを書いたらその部分が正しく動くか、少しずつテストして確認することをオススメします。

提出前動作確認ボタンを押下すると、その時点で書いてあるコードを実行してくれるので、きちんと繰り返し処理ができているか、print() の結果を見ることで確認することができます。

f:id:evansmode:20180514033146p:plain

今回は、提出前動作確認の結果、1~20が出力され、正しく繰り返し処理が実行されることを確認できました。(実行結果ステータスの Wrong Answer はこの段階では無視してください)

3. コーディング(条件分岐)

繰り返し処理に問題がないので、15の倍数→3の倍数→5の倍数→それ以外、という順番で条件を分岐させるコードを書きます。(3と5の倍数の条件分岐は順番が逆でも大丈夫です)

なお、15の倍数は、3と5の倍数でもあるので、二重に出力されないようにそれぞれの条件分岐が入れ子になる(else を使用)ようにしています。

例えば、15であれば Fizz Buzz と出力(print)して、それ以降の処理は行いません。

if (i+1)/15 == round((i+1)/15):
        print("Fizz Buzz")
    else:
        if (i+1)/3 == round((i+1)/3):
            print("Fizz")
        else:
            if (i+1)/5 == round((i+1)/5):
                print("Buzz")
            else:
                print(i+1)

4. 提出前動作確認

コードを書き終えたら、与えられているデータについて上手く処理できるか、最後のテストをしましょう。

f:id:evansmode:20180514033253p:plain

与えられた入力データ "20" に対して、正しく処理できたことが確認できました。実行結果ステータスも Success になっています。

※慎重派の方は、自分でもテストデータを作って(input_int に自分で任意のデータを格納)テストするのも良いと思います。

5. 最終提出

最終提出をすると、他の入力データに基づいて、Paizaラーニング側が評価を実施します。 私のコードは、10個すべてのテストをパスし、正解となりました。

f:id:evansmode:20180514034940p:plain

まとめ

PaizaラーニングのDランク練習問題を解く流れについて解説してみました。

標準入出力には戸惑われると思いますが、慣れるまではコピペで済ませ、問題を解くのに集中することをオススメします。また、プログラミング初心者がコーディングする時は、頻繁に提出前動作確認(print で出力)を実施して、自分の思うような処理ができているか確認すると、どこで間違っているのかわからない、という状況に陥ることなくスムーズに解答できると思います。

将棋初段取得のための右四間飛車左美濃(別名:居角左美濃急戦)

こんにちは。居飛車党のエバンスです。
相手が居飛車で矢倉に組んできた場合、私は相矢倉を避けてこの戦い方を採用しています。

相矢倉という「将棋の純文学」を積極的に避ける後ろめたさはありますが、攻め筋が明快・守りが固い等、勝ちやすい戦法だと思います。

四間飛車左美濃

居角左美濃急戦とも呼ばれる戦法で、特に相手の矢倉囲いに対して強い攻撃力を誇る戦法です。二つの戦法名が示すとおり、角を8八から動かさずに左美濃に組み、攻撃時には飛車を4筋に据えて、相手の囲いを攻略していく戦法です。

囲いが完成し、飛車を4筋に振った瞬間は以下のような感じになります。

左美濃の組み方

こちらのブログの冒頭に左美濃に組む手順が詳しく紹介されています。

矢倉崩しの居角左美濃急戦!定跡・手順・対策の紹介 | 将棋上達の科学

左美濃に組む際のポイントは、相手が早々に飛車先の歩を突いて居飛車を明示していることと、4四歩と角道を止めて角交換を拒否してくることです。

相手が角道を止めたので、こちらは左の銀を7八に上げることができます。(角道が開いていると、こちらの角がタダで取られてしまいます。注意!)

四間飛車左美濃のメリット

私が指している感触では、次の3つのメリットがあると思います。

  • 攻め筋が明快かつ強力
    • こちら側は、飛車・角・銀という三枚で攻撃します。3筋の歩を突くことで、右の桂馬も容易に攻撃に参加させることができます。相手にとっては、わかっていても受けるのが難しいのが実情です。

  • 左美濃が強固で崩されにくい
    • 左美濃は直接王手をかけられにくい囲いで、終盤の競り合いに強いです。また、攻めの途中でこちらの飛車を渡すことになっても、相手からの飛車の打ち込み(横からの攻め)に強い囲いで、簡単に攻略される心配がありません。

  • 「とりあえず矢倉」という相手に最適
    • 級位者は戦法に幅がない方が多く、居飛車の場合、特に角交換を嫌う場合には「とりあえず矢倉に組んで何とかする」と考えている方が多いように思います。このような相手は、右四間飛車左美濃の餌食になっていただきましょう。

気を付ける点

非常に強力な戦法である右四間飛車左美濃ですが、次のように8筋を攻められないよう、気を付ける必要があります。

  • 9五桂
    • 次の8七桂成→同銀→8六歩を狙っています。これが決まるとすぐに終盤戦になってしまうので注意が必要です。防ぐためには、9四歩をどこかのタイミングで入れておくことで防ぐことができます。

  • 7六桂
    • 相手の7五歩にこちらが同歩と応じた場合に、将来の7六桂打ちのキズができることになります。7六桂に対しては、こちらは角を逃がす必要がありますし、角がいなくても次の8八銀を狙う詰めろになっているため、こちらが守勢に回ることになります。

参考になる動画

Youtubeで将棋系の動画をアップしているクロノさん(将棋ウォーズ4段)がこの戦法を得意にされています。

特に序盤力には定評がある方ですので、是非とも参考にしてみてください。

www.youtube.com

まとめ

「とりあえず矢倉」という相手に対してめっぽう強い右四間飛車左美濃(居角左美濃)について解説してみました。攻め将棋な方には、特にオススメの戦法です。この戦法で居飛車相手に白星を稼いで初段を目指してください!

将棋初段取得のための対振り持久戦(端玉銀冠)

こんにちは。居飛車党のエバンスです。
持久戦と端玉銀冠のセットを、対振り飛車のメインに据えて、将棋ウォーズ初段(10分切れ負け)を獲得しました。その際の経験を基に、対振持久戦における端玉銀冠のメリットを書きたいと思います。

対振り持久戦

対振り持久戦とは、相手が振り飛車を採用してきた場合に、居飛車側が持久戦に持ち込む戦法です。 玉の守りを手厚くすることによって、途中劣勢の将棋であっても、攻め合いに持ち込めば最終的に逆転しやすい、というメリットがあるように思います。

囲いについては、穴熊囲いに組むのが一般的ですが、私自身は「端玉銀冠」を多く採用しています。初段獲得時、端玉銀冠での勝率は7割ありました。(現在は6割7分です。レーティングは正確ですね。。)

端玉銀冠の組み方

端玉銀冠は手数はかかりますが、それ以上の発展形が存在しない非常に強固な囲いの一つです。 相手が振り飛車であることがわかったら、まずは「船囲い」に組み、その後「天守閣美濃」に発展させます。そこから玉を9八に移動させ、銀を8七に、金を7八に動かし、「端玉銀冠」の完成となります。

天守閣美濃」の組み方は、日本将棋連盟(!)のコラムに譲ります。 (↓のコラムでは単に「左美濃」と表記されています。)

www.shogi.or.jp

四間飛車相手に「端玉銀冠」に組んだ際は、こんな感じになるはずです。

また、余裕がある場合には、右の金を6八に移動させて、将来の相手からの6九銀(割り打ちの銀)のキズを消しておくと、より攻めに専念することができます。

端玉銀冠のメリット

端玉銀冠のメリットは以下の3つです。

  • 王手飛車取りの筋がない
    • 居飛車で船囲いからの急戦を選択すると、いつも悩まされるのが相手の駒台にある角の存在です。端玉銀冠は玉のコビン(斜め上)を銀が守っており、また、自玉は王手のかからない9八にいます。相手の角打ちにおびえることはありません。
  • 横からの攻めにめっぽう強い
    • 横からの攻めにとても強い端玉銀冠は、振り飛車に駒を捌かれ、飛車や角をこちらの陣に撃ち込まれても簡単には攻略されません。特に、相手陣に打ち込んだ自分の角を馬にしつつ8八の地点に引ければ、相手はどこから攻めてよいのかわからない状態になるはずです。
  • 相手が対策を知らない
    • 優秀な端玉銀冠ですが、後述する弱点(8筋が弱い)は存在します。しかし、級位者が何も知らない状態から8筋を機敏に攻めてくることはほとんどありません。マイナーな囲いの良いところは、相手が情報を持っていないことです。

あとは攻めるだけの簡単なお仕事です。勝率7割も夢ではありません。

対振り持久戦における居飛車の攻め方

基本的には飛車と銀で相手の3筋を攻めていくことになります。 ↓の図からは、3五歩→同歩→4六銀、と相手の歩の狙いつつ銀を前進させていきましょう。

これに対して相手が

  • 3六歩と歩を突いてくる
    • 飛車を2六に移動し、次の歩とりを狙いつつ、相手の3筋(角頭)を銀と飛車で攻めていきます。
  • 3四銀と歩を守りにくる
    • 飛車を3八に移動し、次に銀で歩をとりながら、銀交換を狙います。こちらの守りは固いので、銀交換は望むところです。
  • 4筋の歩を突いて角道を開ける
    • 自分から角交換をして、自玉の位置は9八をキープしてください。角交換の後、とられそうになっている銀を5七に引いて飛車単独で飛車先突破を狙っていくか、強く3五と出て銀を攻め加えていくことになります。

いずれの筋でも実現できれば中盤は有意に進めることができると思います。

気を付けること

優秀な対振り持久戦・端玉銀冠のセットですが、一つだけ注意する筋があります。相手から8筋を効果的に攻撃されることです。そのパターンの初動が、早い時点での5四歩です。

  • 5四歩が早い場合
    • 端玉銀冠の弱点である8筋を効果的に攻撃するために、5四歩を早めに突き、将来的に3三の角を4二に引き、8筋攻撃に参加させてきます。こうなると一気にこちらが壊滅する恐れがあるので、相手が5四歩を入れてくる場合には、穴熊など別の囲いを目指した方が勝ちやすいと思います。

まとめ

自身の経験から対振り持久戦において端玉銀冠がオススメしてみました。初段獲得までは、対振り飛車の戦法は、端玉銀冠に任せて問題ないと思います。是非お試しください!

MBAに家族を連れていくべきか

こんにちは。エバンスです。
以前の「英国でのMBAに同行する家族のビザ取得について」という記事(Tier4とdependentsの取得手続き)を見に来てくださっている方が多いようです。

今回は、「MBA留学に家族を帯同させるかどうか」について、私の経験(妻子は途中で日本に帰国orz)と感じたことを含めて、記事を書きたいと思います。

考えるべき要素

MBAプログラムは海外駐在(一般的に2~5年)に比べては短い期間となります。行き先にもよりますが、米系のプログラムであれば2年弱、欧州系では1年となります。

日本人でビジネススクールに来られる方の大半が30歳前後ということを踏まえれば、お子様がいれば0~3歳というお年頃でしょうか。 私たち家族と同じで、子供が生まれて初めての引越先がいきなりの海外、という方も多いと思います。

そんな方々に向けて、私なりにではありますが、以下のとおり重要度が高い順に要素を並べて、1つずつ説明していこうと思います。少しでも家族帯同について考える際の助けになれば幸いです。

  1. 家族の環境適応能力
  2. MBAの目的
  3. 現地の暮らしやすさ
  4. 子供の教育

1. 家族の環境適応能力

何よりも重要な要素です。「どこでも生活できる。余裕!」という頼もしくて頑丈な奥様とお子様をお持ちにならない限り、この問題は付きまといます。

精神面

「日本以外で生活をしたことがなくて不安」「友達の知り合いの駐在妻は鬱っぽくなって帰国したらしい」等々、受験が終わった瞬間から、奥様からの不安の声は尽きないと思います。

私の妻も、渡航前は暇さえあればこの点について相談してきました。要は不安なんです。当たり前ですね。

そのような私の妻ですが、日本でもそこまで社交的ではなく、現地でも結果としてさほど社交的ではありませんでした。付き合っていた(たまにお茶しに行く知り合い)のは、子供を連れていった公園で出会ったママ友が中心、しかもMAXの時期でも5人以下だったと思います。駐在妻的なキラキラ感とは無縁です。

それでも精神的には問題はなかったように思います。時折、週末に不調にはなってましたが、「1日ゆっくりすれば回復するから今日は子供をよろしく」という感じで、日本にいる時とさほど変わらず、本人でコントロールしてくれている・できているレベルでした。
なので「不安がっていること」と「精神的に問題をきたすこと」は関係があるような、ないような、というところでしょうか。

案外、事前に色々と心配している人の方が、ネガティブなイメージトレーニングの成果(⁉)か、実際には精神的な耐久力があるのかもしれません。

ちなみに、子供については、ガンガン成長してアクティブになっていきます。精神面での問題は皆無でした!

身体面

御家族を帯同される場合に、盲点になるのが、身体面です。 奥様又はお子様が、身体が強くないのであれば、日本で1・2年待っていてもらうのも手だと思います。 私の妻は、こちらでの生活習慣・諸々のストレスのせいか、結果的に体調を崩し、手術が必要になって日本に帰国することになりました。

極端な腰痛持ちという出産後の体質・食生活や生活習慣の変化・両親の助けがない状態での育児により、知らず知らずのうちに身体に大きな負荷をかけてしまっていたのかな、と思います。帰国の際も、腰痛持ちの妻が、機内で子供の面倒をずっと見るのは不可能なので、私も妻子の帰国に同行し、1泊3日の東京帰りを決行しました。

私自身、生活環境を整えるところから育児まで、全力投球したので悔いはありませんし、家族を帯同させた判断自体、留学前の段階では総合的に考えて妥当だったと思いますが、妻には正直申し訳ない、という気持ちは残ります。。

↑は極端な例ではありますが、そもそも日本での生活でギリギリすぎる、という体力に(精神的にも?)余裕がないような奥様をお持ちの方は、御家族を帯同されるかどうか、慎重に検討されると良いと思います。現在はLINE等で手軽にお互いの顔と声が聞こえる環境なので、1・2年であれば、何とかなると思います。

ちなみに、現在は妻は手術も無事に終わり、実家で両親の助けを借りながら、子供と共に息災に過ごしております。

2. MBAの目的

「家族を帯同すると勉強する時間がなくなりますか?」とMBAを検討している後輩から質問を受けました。

率直に答えます。勉強・ネットワーキングに割ける時間は、単身で来ている方に比べ、必ず少なくなります。なので、転職によるキャリアアップ・業界変更を視野に入れ、完璧な成績が必要・豊富なネットワークを構築したい、という方は、御家族を帯同させないのも選択肢の一つです。

逆に言えば、卒業さえできれば問題ない、または、卒業後の進路は決まっている(主に社費の方が該当すると思います)場合には、御家族を帯同されても、特に問題ありません。むしろ、家族と海外生活という貴重な経験をしてみる・家族と一緒にいることで普段から心休まる、という家族を帯同するメリットの方が大きいと思います。

私自身は、家族がいる間、勉強時間は平日・週末共に基本夜9時以降しか取れませんでしたが、それでも何とか授業にはついていけてますし、すべての科目で優と良が取れています。なので、家族がいたから卒業できない、という事態は皆様についても陥らないように思います。

「家族のせいで卒業できなかった」は聞いたことがない言い訳です笑

ただし、私の場合、家族のケアに時間を取られ、ネットワーキングは二の次にしていたので、クラスメイトとの仲の良さは、人によって結構バラツキがあります。また、もったいなかったですが、学外の方々とのネットワーキングも、家族がいた時期は積極的に参加できませんでした。

3. 現地の暮らしやすさ

まず、街中で英語が通じるかどうかは、当たり前ですが非常に大切です。ビジネススクールは基本英語なので、校舎内で現地語を使うことはあまりないと思いますが、奥様の生活圏はビジネススクールの外です。言葉が通じないと行動範囲・内容が著しく制限されるのは皆様ご存じのとおりかと思います。

また、現地の雰囲気が日本人がなじみやすいかも重要です。日本とだいぶ違う環境(極端に周りの人が明るかったり、皮肉っぽい等)だと、慣れるまで時間もストレスもかかります。

特に、キャンパスビジットをされていない場合やこれまでの人生で海外生活の経験がない場合、海外での生活とその問題点がイメージしにくいと思います。家族を帯同するか決める前には、同じビジネススクールの先輩(できれば留学時に家族帯同)に相談して、予め現地での生活をイメージしておくとギャップが少なく、家族を帯同しても問題が小さく済みます。

また、周辺環境(都会・地方)も大切です。

周辺環境

留学先が都会か地方かで、生活環境は大きく変わります。 都市に存在するビジネススクールであれば、東京での生活と大差ありませんが、町の象徴が大学、というような場所のビジネススクールに行かれる場合には注意が必要です。勉強に打ち込んだり、クラスメイトと連日つるんだりするには最高の環境ですが、週末に家族を楽しませるという点では苦労されると思います。

私自身は、都会のビジネススクールを選びましたので、週末家族で出かける行き先には困りませんでした。子供も新しい場所・体験に毎回目を輝かせていたので、大変満足しています。妻も、ベビーシッターに子供を預けて、しばしば観光に出かけることができ、その点は楽しかったと申しておりました。

反対に地方の大学では、私が学部生時代に海外の辺境大学へ留学した時には、「勉強する・身体を動かす・友達とつるむ」以外に日常として選択肢はありませんでした。週末の「誰かの誕生日パーティー、ショッピングモールに行く」レベルで既にワクワクするイベントです。

都会での生活とは大きな違いがあります。

住居

また、都会か地方かに引きずられて、住居の問題も浮上します。 都会であれば、マンションタイプの物件に住めば、日本と同様の生活スタイルを続けることもできますが、地方は一軒家タイプの借家に住むことがほとんどです。

私はマンションの一室を借りて住んでいます。駅徒歩7分・オートロック・エレベータ付きですので、日本にいた頃とあまり変わりません。むしろ、日中はエントランスに1人常駐している(不在時に荷物を受け取ったり、何かあった時にとりあえず来てくれる)分、豪華になっています。

また、マンションという物件の特性として、近所付き合いが皆無である(上下の階の住民と顔を合わせたこともありません)ため、問題も生じにくいように思います。

一方で、一軒家を借りる場合、近所との関係でモメがち、というのはあるあるです。

良かれと思って選んだ閑静な住宅街の住人が、音(目覚ましや洗濯機レベル)や匂い(醤油や味噌等)に敏感でクレーマーになることもあります。

実際、一軒家を借りて、隣人(変人)とトラブっているクラスメイトもおり、「物件の退去日に盛大に仕返し(ブログで書けない内容…)してやりたい」といつも冗談半分に愚痴っています。

仲介費用は高くつきますが、日系の不動産を利用することで、この手のリスクは少しは軽減できるかもしれません。

子供の教育

私の子供は、MBA開始時に1歳半だったので、幼稚園は無関係でしたが、日本人のクラスメイトで、3歳のお子さんを現地の幼稚園(英語100%)に通わせている方がいらっしゃいます。

その方に曰く「子供は言葉がわからなくても何とかなる」そうです。流石に最初の1週間は行きたがらなかったらしいですが、「何故か何とかなる」そうで、「しばらくするとサンキューの発音を指摘される」とのことでした。 もし早期英語教育に熱心な方は、子供を現地の幼稚園に通わせてしまうのも有だと思います。

また、幼稚園以外にも、地域のコミュニティセンターやヤマハ音楽教室的なものがあり、1歳半の子供でも参加できる幼児教室(音楽クラスや運動クラス)を開催していたりしますので、積極的に参加してみると良いと思います。 うちの子供は、歌詞がわからなくても、とりあえず雰囲気で踊ってました。

まとめ

海外MBA留学に家族を帯同するかどうかは、まずは奥様の性格・健康について、環境適応能力があるかという観点で考えるところから始めると良いと思います。その後、自分のMBAの目的と照らし合わせ、留学先の環境等も考慮し、最終的に家族を帯同するかどうか決めるのが良いと思います。

地方のビジネススクールへの留学に家族を帯同する場合には、都会に比べて、更に家族への必要なケアが生じると思います。また、住居についても、都会か地方かに引きずられる部分ではありつつも、何とか家族に負担をかけないような家を選ぶ努力が必要だと思います。

気になってしまう子供への影響については、幼稚園レベルであれば、人生に大きな影響がある、ということもないのではないかと思いました。

プログラミング勉強方法

こんにちは。文系なのにPythonにハマっているエバンスです。
「プログラミングは、どうすれば上達するか?」と後輩に聞かれた際の私なりの答えを、せっかくなのでブログに残したいと思います。
なお、言語(Python)自体の勉強方法については、以前の記事を参照してみてください。

evansmode.hatenablog.jp

ちなみに、ようやくPaiza learning のAクラスを解くことができました!これもプログラミング力(プログラミング的思考力?)向上のおかげだと思っています。

プログラミング的思考とは

プログラミング的思考(論理的思考)って何? [3ページ目] - 日経トレンディネット

こちらの記事曰く、プログラミング的思考とは、次の5つの能力から構成されるそうです。

  • 抽象化する能力
  • 分解して理解する能力
  • やるべきことを順序立てて考える能力
  • ベストな方法か分析する能力
  • 方法を他に置き換えて一般化する能力

個人的には、この中では「抽象化(数学だと一般化?)する能力」「分析して理解する能力」「順序立てて考える能力」の3つが大事だと考えています。また、実際のプログラミングでは、コーディングの効率性も考えて、これに加えて「言語の知識」が問われるように思います。

抽象化・分析して理解する能力

抽象化と分析して理解することは表裏一体な気がしますが、これら能力がないと、冗長なコードを書くはめになります。

例えですが、「1から10までの整数の合計は?」という問題に対して、大人であれば、(1+10)×10/2 = 55ということを知っている(もしくはすぐに法則性を発見できる)と思います。ただし、この問題を初めて見た子供は、1から10まで少しずつ足しあげていこうとするはずです。時間がかかりそうですね。

↑の例は、10をyという変数にした場合には、(1+y)×y/2 と抽象化できます。これを知っている(またはすぐに思いつける)ということが重要だと思います。

最初は抽象化することに慣れないと思いますが、プログラミングをしていて、「条件分岐がみるみる増えていく」、「ループ処理の中にループ処理が山ほどあってもはやイミフ」等、思い当たる節があれば、どこか抽象化できないか、一度手を止めて色々と考えを巡らせてみると良いと思います。

私の場合、気付けば無駄に変数を多く設定していて結果的にコードが読みにくくなっていたり、個別ケースに対応(力技)で乗り切ろうとして抜けや漏れが存在し、テスト段階で気づく、というようなことがあります。なるべく早い段階から抽象化できるものはしておいた方が後々楽ですし、プログラムも結果的に読みやすく・メンテナンスしやすくなります。

また、この能力を鍛えるには、普段からプログラミングする際に、関数を作成することだと思います。関数を作成するときは、そもそも処理に必要な最低限の情報しか関数に渡そうとしませんし、関数を作成するには抽象化は避けて通れません。是非試してみてください。

順序立てて考える能力

コンピューターは「適当にやっておいて」と支持できませんので、細かい手順についても指示する必要があります。しかも、コードは1行ずつ実行されていきますので、指示の順序は非常に大切です。要は「計画力」です!

この能力は、ある程度慣れの領域だと思いますが、鍛える方法としては、コーディングの前にプログラムの設計図をキチンとアウトプットすることだと思います。

私の場合、プログラミングをする前には必ず、考えているプログラムの内容をメモします。自分でしか理解できないような単語と矢印満載の怪しいメモレベルのもの(他の人と共有する必要があればワードやパワーポイント等で清書します)ですが、頭の中で考えていることを紙に写す際に、矛盾や抜け漏れがあることにしばしば気づかされます。また、予め自分がプログラミングする内容を正確に捉えておくことで、コーディングの時間は驚くほど短くできます。

言語の知識

言語の知識は、上の二つの能力を助けてくれるものだと思います。Pythonで言えば、リストの知識があれば、データ構造の管理について思い悩むことを省略できますし、ライブラリのmatplotlibを知っていれば視覚化については簡単に目途がつけられるわけです。

そのため、言語の知識についてはある方が良いに決まっていますが、時間的な制約が厳しくないのであれば、使う時に初めて理解するのでも問題ない気がします。むしろ、知っているだけの状態だと、実際にコーディングしてテストした際に「こんなはずでは。。」ということがよくある(Python3のroundは完全に初見殺し。。)ので、「知っている状態」よりも「使ったことがある状態」まで引き上げておいた方が好ましいです。

なので、コードを勉強する場合には、ブログなどを読んで納得するのではなく、自分でコーディングするところまでセットとしてとらえておくことを強くオススメします!

まとめ

プログラミング力は、主に「抽象化」「計画力」「言語の知識」の3つから成り立っていると考えます。それぞれ苦手な部分をつぶしていけば、よりスムーズにプログラミング(構想からコーディングまで)を完遂をすることができるようになると思います!