2020年英語学習振り返り

去年に引き続き今年も英語学習について振り返りたいと思います。なお、去年の振り返りは2019年英語学習振り返り - n3104のブログです。

前提

昨年の振り返りからの引用になりますが、2019年末は以下のような状況でした。

  • 英語学習が習慣になった。毎日のiKnow30分と瞬間英作文の15分は歯磨きのような感覚で、やらないと気持ち悪く感じるようになった。
  • オンライン英会話を150回やった。1月から4月はKiminiオンライン英会話で39回、5月から12月はレアジョブを111回やった。レッスン中に講師と普段日本語でやるような雑談をできるようになった。ある程度抽象的な話とか、込み入ったことについても質問したり、説明できるようになった。
  • re:Invent 2019でも困る場面は去年よりも格段に減って、イベント中に見知らぬ人に突然話しかけられても理解できる内容なら笑いながらやりとりできるぐらいになった。ただ、もう一段階レベルは上げたい感じ。
  • 文法は新しく覚えるよりも定着させることを意識してとにかく瞬間英作文をやった。
  • リスニングは専用のトレーニングをしなかったが、去年よりも聞き取れるようになった。基礎が上がれば結果的にリスニングも伸びる模様。
  • 英作文はとにかく瞬間英作文をやり込んだ。無印はほぼ間違えなくなり、シャッフルトレーニングをやりこみ中。
    • 英会話レッスン中に文法構造の意識せずに話しても意味が通じるようになった。とはいえ、講師からはもっと自然な言い方もついてアドバイスをもらうので、文法ミスはないし、意味も分かるけど、まだまだ不自然なレベル。
  • 発音は専用のトレーニングやった。発音記号も概ね読めるし、口の形や舌の使い方もわかるようになった。英会話レッスン中に発音に関しては基本的に講師から褒められるようになった。
  • リーディングに関しては仕事で読むドキュメントなどはほぼ困らない。一方で、Dragon Slayers' Academyのような児童書でも知らない単語がまだまだあってスラスラ読めない感じ。なので得意な分野なら速度は日本語よりはぜんぜん遅いにしても問題なく読める一方で、日常的に使うような単語についてはまだまだボキャブラリーが足りていない印象。

結果

2020年末の状況は以下のようになりました。

  • 英語学習を継続した。毎日のiKnow30分と他の教材30分の合計1時間を継続した。
    • 2月から仕事で英語を使う職場に転職したこともあり、ビジネス英会話の勉強をメインにやっていた。
  • 仕事で英語によるチャットや打ち合わせ、ドキュメント作成もできるようになった。特に7月からはプロジェクトのリーダーをやることになり、打ち合わせの司会や議事録作成も英語でやるようになった。
    • といっても、今の会社は英語が拙くてもちゃんとやり取りしてくれる人ばかりの会社なので、他の会社で通用するかは謎(^_^;)
  • 文法は英文法の鬼100と一億人の英文法を読んだ。特に一億人の英文法は良くて、普段英語を使っていて気になっていたことは概ね確認できたと思う。
  • リスニングは去年よりは確実に聞き取れる量は増えていると思う。とはいえ、聞き取りやすく話してくれる人じゃないとだとまだまだ部分的に聞き取れないことがある感じ。そのためシャドーイングを試すようになった。
  • 英作文は慣れている構文というか言い回しならすぐに作文できるようになった。配置で悩まなくなった感じ。前置詞もある程度感覚で使えるようになった。
    • とはいえ、使い慣れていない動詞と組み合わせて使う前置詞は確認することは多いし、ちょっと慣れない言い回しだとググって確認することも結構ある。特に類義語の使い分けはよく確認する。
    • Google翻訳は英作文してから英語から日本語に翻訳して意図と違う英語にないっていないか確認する時に使う感じ。最初は毎回確認したが、最近は正確にニュアンスを伝えたい場面以外はGoogle翻訳で確認しなくなった。
    • 非ネイティブの海外メンバーの英文は結構typoしていることがあり、そこまで気にするよりも、作業速度を優先するようになった。
  • 発音は去年勉強したこともあり、曖昧な場合に必要に応じて確認するぐらい。仕事でも発音が分からないと言われることはないが、実際にまともな発音なのかは謎(^_^;)
  • リーディングは去年より早く正確に読めるようになったと思う。リーディングであまり困った印象がない。
    • 仕事中もたまに見慣れない言い回しを見かけて意味がわからない時は、調べてなるほどと思うことがあったぐらい。
    • 論文とかも8割ぐらいは読めると思う。まぁ、内容そのものが難しいので結局時間はかかるけども。
    • 児童書とかは最近読んでいないので謎。たぶん、かなり楽に読めるようになっていそうな気はする。

やり方

iKnowを30分やって、後は他の教材を合計30分、合計で毎日1時間勉強していました。ですので、今年も約360時間ほど勉強しました。具体的には以下をやりました。

進め方は去年に引き続き毎月KPT形式でその月の英語学習について振り返りを行い、翌月の学習内容を調整するようにしていました。12ヶ月間の変化としては以下のような感じでした。

  • 1月: 転職に伴いオンライン英会話を止めた。iKnowと瞬間英作文を継続した。英文法の鬼100を読み始めた。
  • 2月: 転職に伴いiKnowビジネス英語のコースに切り替えた。英文法の鬼100を読み終わった。転職し、職場で英語を使う場面が一気に増えた。チャットもランチも打ち合わせも英語を使い、慣れていないのもあるが英語でやり取りすると仕事の速度が激減するので危機感がすごかった。あとGoogle翻訳は神だと思った。
  • 3月: iKnowの3000アイテムマスターを達成した。ビジネス英会話のスキルをとにかく上げる必要を感じたので英会話ペラペラビジネス100を読み始めた。あとゼロからスタートシャドーイングも読み始めた。職場での打ち合わせは事前準備すれば何とか話せるような、、という感じ。まだまだ慣れていない言い回しが多くて大変だった。
  • 4月: iKnowは例文を音声と一緒に発声していたが、シャドーイングするように変えた。仕事での英作文速度の向上を狙って瞬間英作文は改めて無印をやり込むことにした。
  • 5月: iKnowの3500アイテムマスターを達成した。瞬間英作文の無印をやり込んだおかげかチャットでやり取りする際の英作文の速度が少し早くなった気がした。とりあえず英文を書いてからGoogle翻訳で自然な日本語になるか確認するように変えた。
  • 6月: iKnowはビジネス英語を終えて英会話マスターに戻った。瞬間英作文も無印を終えてシャッフルトレーニングに戻った。ゼロからスタートシャドーイングを読み終えた。仕事でもやっと慣れてきた感じ。プロジェクトのリーダーになって打ち合わせの司会とか議事録の作成も英語でやるようになった。
  • 7月: iKnowの4000アイテムマスターを達成した。プロジェクトに関連するドキュメント作成も英語でやったり、打ち合わせで通訳的なこともやったりもするようになった。ドキュメント作成をすることで口語と文語が違うことを知った。
  • 8月: iKnowの4500アイテムマスターを達成した。ネイティブに伝わるビジネス英語700を読み始めた。チャットは割と早く書けるようになった気がする。
  • 9月: 瞬間英作文とネイティブに伝わるビジネス英語700を読み終えて、10億人に通じる!やさしいビジネス英会話と一億人の英文法を読み始めた。発音記号を改めて一通り確認した。
  • 10月: iKnowの5000アイテムマスターを達成した。英会話ペラペラビジネス100を読み終えて、そろそろ動画視聴もいいかと思いカンフーパンダを観始めてみた。仕事では一つしきい値を超えた印象。チャットもドキュメントも負担感がなくなった。Google翻訳によるチェックも細かなニュアンスが心配な場合以外は使わなくなった。
  • 11月: iKnowはついに英会話マスターを終えてたので、上から順番に全コースやることにした。7500を観てジャン=クロード・ヴァン・ジョンソン - シーズン1を観始めた。仕事では英語ネイティブのメンバーの発言を打ち合わせ中に聞き返すことが多かったので、10億人に通じる!やさしいビジネス英会話のシャドーイングを始めた。
  • 12月: iKnowの5500アイテムマスターを達成した。10億人に通じる!やさしいビジネス英会話と一億人の英文法を読み終えた。速く・正確に読む ITエンジニアの英語を読み始めた。ジャン=クロード・ヴァン・ジョンソンを観終えて、ジャイアント・ビースト ~グローバル経済の謎を解き明かせ~ シーズン1を観始めた。

iKnow

やはりボキャブラリーが一番重要だと思うので、今年は毎日30分iKnowを続けました。おかげで1年で完了アイテム数は2500から5500まで増えました。あと、例文をサンプルの音声と一緒に読んでいる方法からシャドーイングに変えました。また、一番大きく変えたのは間違っても正解として次に進めるようにしました。理由としては細かなスペルについては仕事中なら多少曖昧でもその場で調べれば済むためです。そのため、正確にスペルを覚えることよりもよりたくさんのボキャブラリーに触れることを優先することにしました。実際、1つの単語をマスターするまでに6回ぐらいは同じ単語をやるので、大半の単語は間違えても正解にしておいて進めておいても、その間に覚えられる印象です。

仕事

2月からエンジニアの半数が海外出身のメンバーの会社に転職しました。そのため、チャットのやり取りや打ち合わせ、ドキュメント作成なども英語を使うようになりました。多少は英会話の勉強をしていましたが、あらゆる場面で英語を使うため、それぞれの場面でどのような言い回しをすればよいかわからず最初は大変でした。一応2年間オンライン英会話をやっていたので1対1の打ち合わせならなんとかなるのですが、多人数だとまったくついていけませんでした。

参考までに個人的によく使う言い回しは以下でしょうか。I think と So をひたすら繰り返すことが多いので、もうちょっとバリエーションを増やしたいなーと思ってます。あと、I think と I'll 以外は転職してから覚えたものです。

  • I'm not sure, but ...
  • I think ...
  • I mean ...
  • You mean ..., right?
  • Could you ...?
  • ... when you have a chance?
  • I'd like to ...
  • I'll ...
  • If there're any ..., please let me know.
  • Why don't we ...?
  • Thank you for ...
  • I agree with you.
  • Is that OK?

とりあえず約1年である程度は慣れたと思います。一方で、日本語と比べた場合に細かなニュアンスを伝えるのは難しいですし、5倍ぐらい時間がかかってしまうので、まだまだ英語学習が必要だと考えています。なお、入社時は10倍ぐらいかかっていたと思います(^_^;)

来年

来年というかもう1月になってしまったので今年ですが、ある程度英語学習の基礎はできたと思うのでインプットをとにかく増やしていくといいかなと考えています。英語学習を本格的に始めて3年経過して、英文を読むスキルは段違いに上がりましたし、転職して英語で仕事も一応できるぐらいにはなりました。今の所、学習に見合った成果を得られているので、もう数年続けてもいいかなと考えています。

10億人に通じる! やさしいビジネス英会話

ビジネス英会話の学習を進める上で、会話形式の本を探して選びました。かなりよかったと思います。英会話ペラペラビジネス100の次に読むのに丁度いいと思います。

本書の構成としては6章に分けてビジネス英会話のシチュエーション毎の会話とその中での重要なフレーズを解説しています。例えば初めてあった人との会話やプレゼンテーション、ミーティング、飲み会などです。1つの章は8レッスンに別れていて、1レッスンは約1分ほどのやりとりになっています。ですので合計で48分間分のビジネス英会話について学ぶことができます。各レッスンは4ページの構成になっていて、最初の2ページが見開きで左側が英語、右側が日本語訳になっています。残りの2ページは会話の中の重要なフレーズについて解説を載せています。

9月から読み始めて5周しました。1周目と2周目はとりあえず読んで、3周目は日本語訳を見て英作文をやりました。4周目と5周目は音声CDをシャドーイングしました。5周目は1回に4レッスンまとめてシャドーイングしていたのですが、9割以上聞き取れて8割ぐらいはシャドーイングできている感じになりました。また、4周目の時より5周目の時の方がゆっくり正確に聞こえるようになりました。あと、聞いている音を意味を理解しながら聞き取れなくても音としては聞き取れている場合に機械的に音をリピートしているようなことがあり、ゼロからスタートシャドーイングに取り組んだ際は実感がありませんでしたがとにかく音をコピーするということもできるようにのかな?と思う場面もありました。とはいえ、シャドーイングするため本文自体も何度も読んで大半は覚えているので、初めて聞いた音をそのままシャドーイングできるようになるのかまだわからない感じです。

仕事で使えるような会話の引き出しを増やすために取り組んでみましたが、現在の職場で実際に使えるようなやり取りはあまりありませんでした。。とはいえ、そこそこ汎用的な内容だったので、今後も使える場面はありそうでしたし、何よりやり込んだことでビジネス英会話の底上げにはなったと思います。あと、最近ヒアリングに課題感があったのですが、そちらもシャドーイングをやり込んだことで効果がありそうな感じだったので、今後もシャドーイングに取り組むつもりです。

一億人の英文法

ある程度英会話を勉強している人は読んでるぽいので読んでみました。すごくよかったです。基本的な構文は分かるけれど、同じような表現の使い分けや冠詞、前置詞、時制の使い分けに悩んでいる人におすすめだと思います。

本書の構成としては英文法の各テーマについて順番に解説していきます。名詞、形容詞、副詞や助動詞、前置詞などです。特徴的なのは単に文法のルールを紹介するのではなく、なぜそのようなルールになっているのか、ネイティブはどういうイメージでその構文を使っているのかを解説している点です。また、似たような表現の使い分けについてもその理由も含めて説明しています。

9月の後半から読み始めて1日10分で2ヶ月半ぐらいで読み終わりました。600ページ以上あるので大変かと思っていたのですが、以前から疑問に思っていた細かな使い分けとその理由について解説が載っていて楽しく読めました。冠詞にしても前置詞にしても時制にしても、結局はコンテキストというか話し手の意図による部分が大きいことを確認できたのが収穫です。3年近く英語を勉強していて、この辺りはルールはあるにしても、結局はコンテキストとか話し手の意図に依存するよなーと思っていたら、やはりそのように書かれていて安心しました。個人的にはかなりいいタイミングで読めたと思います。これが1年早く読んでいたら、今ほど細かな使い分けについて疑問を持っていなかったので、なるほどなと読みつつもあまり印象に残らなかったと思います。

今後しばらくは辞書的に使いつつ、どこかで2周目をする気もします。ただ、文法についてはそこまで課題感がないので、他の課題をある程度解決してから読めばいいかなと思っています。その際は読んでいて気になる点も変わると思いますし。ちなみに自分が学生時代にこういう本があればもう少し英語を楽しく学習できたのかもなと思いました。目的もなく単純に暗記するの、ほんと苦手なので。ただ、当時読んでいたらあまりの分厚さに挫折していたような気もしますw

Amazonプライム・ビデオの英語字幕作品の見つけ方

英語学習をする上で英語音声で英語字幕の動画を観るのはやってもいいかなと思い、Netflixに入るか悩みつつ定期的にプライム・ビデオで英語字幕の動画がないか探していました。そうしたら今年の8月ぐらいにAmazonプライムビデオが英語学習ツールになる!英語字幕が選べる作品一覧。 - 崖っぷち舞台役者が婚活を始めたら英語がペラペラになりましたを見つけました。ついにプライム・ビデオでも英語字幕の作品が観れるようになりました(∩´∀`)∩ワーイ

で、実際に観始めたのですが、全作品を探せるといいなと思い検索方法を調べたところ、プライム・ビデオの検索画面で以下の条件を指定すれば抽出できそうなことがわかりました。

  • プライム: 有効。無効にすると件数がちょっと増えるけど、無料じゃないので。
  • 言語: 英語。日本語の作品も少し存在する。
  • 元言語: 英語。英語以外の作品も少し存在する?
  • スタジオ・テレビ局: Amazonスタジオ。これが一番重要。Amazonスタジオの作品は字幕付与してるっぽい。

前述の検索条件を含めたリンクも貼っておきますが、クエリパラメータの意味を調べていないので、不安な場合は前述の検索条件を直接指定してください。

まだ作品数は100程度ですが、今の私には十分な量ですし、今後も作品数は増えると思いますので、しばらくはプライム・ビデオで英語動画を観ることに慣れようかなと思ってます。

瞬間英作文トレーニング

どんどん話すための瞬間英作文トレーニング (CD BOOK)

どんどん話すための瞬間英作文トレーニング (CD BOOK)

  • 作者:森沢 洋介
  • 発売日: 2006/10/25
  • メディア: 単行本(ソフトカバー)

スラスラ話すための瞬間英作文シャッフルトレーニング

スラスラ話すための瞬間英作文シャッフルトレーニング

  • 作者:森沢洋介
  • 発売日: 2007/06/14
  • メディア: 単行本(ソフトカバー)

2年前に英会話の勉強を始めた際に、自分の言いたいことを文章としてまったく言えなかったので瞬間英作文を試してみました。私には合っていたようで、やり込むほど英会話で話せる手応えがありました。そのため、そのままシャッフルトレーニングもやりました。最終的に英会話も含めた英作文がある程度できるようになったので、英作文が苦手という方にはおすすめの本だと思います。

本書の構成としては1レッスンが見開き2ページで左側に日本文、右側に対応する英文が10問載っています。そして左側の日本語を英作文して、右側の英文で答え合わせをすることを繰り返します。基本的にはこの繰り返しです。具体的な学習方法は冒頭に記載されていますが、無意識に作文できるぐらいになるまでとにかく繰り返し英作文の練習をします。

どんどん話すための瞬間英作文トレーニング(以降、無印)は3Partに分かれていて、それぞれ中学1年生から3年生で学習する文法テーマごとに問題が用意されています。例えば命令文とか現在進行系とか形式主語のitという単位で同じような問題が用意されています。そのため、文法の定着を目的に利用します。

スラスラ話すための瞬間英作文シャッフルトレーニング(以降、シャッフルトレーニング)はこちらも大きく3Partに分かれていて、Partが進むほど問題文が長く複雑になります。また1レッスン内で利用する文法は無印のPart1からPart3までがシャッフルして含まれています。1問ごとに利用する文法テーマが異なるため、無印で定着していない文法を見つけるのに使えます。

2018年は無印を1年間ずっとやっていました。少ない時は1日10分、多い時は20分ぐらいです。ある程度定着したと思ったので2019年にシャッフルトレーニングに移ったのですが、結構苦戦したので3ヶ月ほどやったところで無印に戻りました。そして無印をまた半年やって、シャッフルトレーニングに再挑戦しました。今度はそこまで苦戦しなかったので、シャッフルトレーニングも定着するまで1年ぐらいやりました。合わせて2年半以上やりました。どちらも10周以上やったと思います。無印は70時間、シャッフルトレーニングは90時間ぐらいやりました。最終的にはシャッフルトレーニングの最終Part以外は日本語の問題を読みながら英語の作文ができるぐらいになりました。シャッフルトレーニングの最終Partは問題文が長すぎるので、その日本語の理解に時間を使う感じです。英作文自体は無意識にできるぐらいになりました。

以下はこの本に取り組む上での注意事項です。私の場合は2年半以上やっていましたし、その間に並行して他の教材もやったり、英語を使う職場に転職したこともあるので参考程度に読んでもらえればと思います。

  • まず、薄くてよいので、中学生レベルの文法を別途学んでからやった方がよい。まったく文法を知らない状態でやっても学習効率が悪すぎて継続できなくなると思う。
  • とにかく周回することを優先したほうがいい。周回を重ねて少しずつ回答できる範囲を増やせれば最終的にはすべて作文できるようになるので。
  • 文法の解説はそこまで丁寧に書いてないので、不明な文法は別途ググるなりして確認した方がいい。確認せずに問題をやっても実際の場面で使えるようにならないので。ただし、5, 6週目ぐらいでいいかもしれない。最初からやろうとして周回を回す前に力尽きると意味がないので。
  • 作文した英語が回答例と完全に一致していなくても、自分でどちらの言い方も正解と思えるなら気にせず進めばいい。例えば副詞の位置はかなり自由なので、一致しないことは普通にある。主節と従属節の順番も同様でどちらからでもいい。 また日本語と同じように英語にも同じことを表す複数の表現方法があるので、やはりどちらも正解だと思えるなら気にしない方がいい。完全一致を目指すと単なる丸暗記で、実際の場面で応用が利かないと思う。
  • 冠詞はコンテキストとか意図に大きく依存するので、一致しなくてもあまり気にしないほうがいい。もちろん明らかにどれを使うか自然なケースもあるけども、この本だけでは学べない内容なので気にしないほうがいい。
  • 前置詞に関しては丸暗記でいいと思う。この本で出てくる範囲であればよく使う組み合わせだと思うので。ただし、前置詞も実際にはコンテキストとか意図によって変わるものなので、自分でどちらも正解だと思えるなら気にしないほうがいいと思う。
  • シャッフルトレーニングの後半を練習している際に一時的に仕事でも関係代名詞を多用するようになってしまった。仕事ではなるべく短くてシンプルな文章にした方がいいと思うのでなるべく関係代名詞を使わないようにしていたのに、ついつい使ってしまいちょっと面倒だった。
  • 回答例の英文は英作文の問題としては分かるけど、実際は違う言い方するよなーと思うぐらいになったら、十分に成長したということなので、気にせずどちらも正解だと思えばいい。

個人的にはやり込むほど英会話も英作文もスムーズにできるようになったので、おすすめです。この本に書かれているレベルの英作文にストレスを感じないぐらいまでやり込めば、とりあえず意図を伝えるように会話はできると思いますし、英作文する際も語順で悩むことはなくなるはずです。といっても、ほんと最低限であって、冠詞や前置詞はマスターには程遠いですし、仕事で使うならビジネス英語やドメイン固有の表現は別途学習が必要です。とはいえ、根本的な英作文速度が遅いと会話以前にチャットもドキュメント作成も無理ゲーなので、まずは英作文速度を最低限使えるレベルにすることができるという点でほんといい本だと思いました。

英会話ペラペラビジネス100

英語を使う職場に転職したのですが、仕事でよく使う言い回しがわからなかったため、何冊か見比べて読んでみました。当たりだったと思います。100フレーズのうち50フレーズぐらいは普段の仕事でも使える内容だったと思います。また、それぞれのフレーズについての解説も非常に参考になりました。仕事で英語を使う方にはおすすめの本だと思います。

本書の構成としては見開き2ページで1つのフレーズを紹介しています。左側のページではそのフレーズを利用した実際のちょっとした会話のやり取りが載っています。右側のページにはフレーズについての解説と作文問題があります。赤シートが付属しており、英作文の練習ができるようになっています。フレーズは以下の相手との距離感に応じた4種類に分けて順番に紹介していきます。

  • Frist Contact: 初対面と人
  • Light Contact: たまに会う人
  • Regular Contact: いつも会う人
  • Heavy Contact: 頻繁に会う人

3月から読み始めて約半年ほど読みました。合計で8周しました。少ない時は毎日10分、多いときは毎日20分ほどやっていました。結果的には4割ぐらいの内容は仕事中に自然に使えるようになったと思います。ちょっと不安な時は本を開いて確認する感じです。2周目までは英作文はしないで日本語と英語を順番に読んで、3周目からは赤シートで隠して日本語を英訳しながら読んでました。8周しても未だに3割ぐらいは間違えます。。一番の理由は例文の日本語訳が自然すぎるというか、5H1Wとかコンテキストを抜きにしているので、間違えて解釈してしまう感じです。せっかく赤シートをつけて英作文の練習をさせるつもりなら、日本語訳はもう少し厳密に書いてほしかったかなと思います。まぁ、日本語的にはとても自然な訳なので、微妙なとこなんだとは思いますが。

基礎というか基準を作るため、とりあえず最初の1冊はある程度やり込んでから何冊か読もうと思っていたので、そういう意味ではよい本だったと思います。ただ、実際には職場で他の人が使っていない表現も当然出てくるので、どこまで筆者の言っていることを信じてよいか非常に悩ましい感じでした。例えば Why don't we ...? とか誰も使わないんですよね。。あとは Can / Could / Would の使い分けも非常に悩ましいです。既に他の本を読んだり検索していくつかサイトを見比べたりしてますが、まだまだ感覚的に使い分けはできないです。まぁ、この辺は気長に取り組むしかないかなと思ってます。

計算機プログラムの構造と解釈[第2版]

いやー、やっと読み終わりました。隔週の読書会で読んでいたのですが、第1回が 2016-03-23 で、完走するのに約4年半かかりました。読書会自体も合計で92回やっていて、事前の予習というか問題を解く時間も含めると約300時間かかりました。おそらく1冊の書籍にかけた期間と時間の両方で過去最大だったと思います(^_^;)

2020年分の振り返り

今年は5章をやっていたわけですが、LISPマシン向けのレジスタ計算機シミュレーターを作成し、そのシミュレーター上で動作するインタプリタコンパイラを作成するということで、ほんとLISPづくしだったなと思います。問題を解くためコードは一通り理解したので、最終的にはLispコードからどういうマシン語が生成されるか、逆にマシン語からLISPコードへの逆コンパイルもできるようになりました。といっても、非常に簡素な仕様なのと、やる前に脳みそに全コードのスタックを積むという事前作業が必要になりますけども(^_^;)

この辺りまで来るとマシン語上でデバッグプリント入れたり、コンパイルされた結果を見比べてデバッグできるようになりました。果たしてこのような経験がこの先の人生で役立つことがあるのかまったく分かりませんが、普段の業務とはまったく異なる言語とコードと概念に触れることができたのは非常に得難い経験であったと思います。

過去の振り返りについては毎年の振り返りから抜粋しておいたので、参考まで。年々少しずつ成長?している感じが伝わるでしょうか。。

2016年

まったく偶然ですが社内でSICPの読書会も始めました。隔週で毎回1時間でやっていて、2016年の間に19回やって2.2.3 公認インターフェースとしての並びまで来ました。問題も基本的に全て解いていて、恐らく読み終わるのにあと1年以上掛かると思いますw

私はLISPで書くのがどうしても馴染めず、途中からPythonで問題を解いてるんですが、cons/car/cdr/list/map/filterなどの標準関数もPythonで再実装することになり、おかげで言語仕様の違いとかも分かって勉強になりました。2016年に今更SICPを勉強することに意味があるかは正直わかりませんが*1、楽しいので続けるつもりです。現時点での成果は以下ぐらいですがw

  • LISPのリストは一方向リンクリストしかない。他言語の配列やリストはなんて便利なんだろう。。!
  • 再帰的な構造について意識するようになったというか、再帰の問題しかないw
  • LISPのコードでもPythonで書き直せば理解できるという安心感を得た
  • LISPのコードは宣言的でSQLみたい。まぁ、LISP式なので当たり前なのだけど
  • デバッグ辛すぎる。手続き的アプローチと宣言的アプローチは適材適所で使い分けしよう!

2017年

無事?その後も社内読書会が1年続きまして、2.2.3から3.3.5まで進みました。基本隔週1時間でやっていて、今年は23回(通算42回)やりました。このペースだとあと2年近くかかりそうです(^_^;)

この辺りまで進むと普通におもしろいですね。いままで知っていた概念を整理できることもありますし、まったく見たことがないものもたまにあって勉強になります。基本的に予習して問題も解いた上で参加してるんですが、読書会で理解が曖昧なところや勘違いにも気づけるのもいいです。

去年まではPythonで問題を解いていたんですが、2.3.1からPythonでは言語仕様的に解けないというか別の問題になってしまうこともあり、DrRacketを使ってneil/sicpで解いてます。おかげでSICPの問題を解く範囲でのLISPの読み書きには抵抗がなくなりましたw

あと、読書会でソースの共有をする際に便利なので問題 2.87からはGitHubにソースを公開するようになりました。

2018年

無事?その後も社内読書会が1年続きまして、3.3.5から4.1.3まで進みました。基本隔週1時間でやっていて、今年は19回(通算62回)やりました。このペースだとあと1年半近くかかりそうです(^_^;)

ついに4章に入り、evalの実装まで来ました。こんなにサクッと作れるのは衝撃です。最近はSICPの範囲ではありますがLISPのコードを読むのも、机上デバッグするのも普通にできるようになった気がします。ちょっとした単体テストまで書くようになりました。

いやー、しかし、みなさんLISPデバッグってどうやってるんでしょうね。うまく組めた時はいいんですが、期待通りに動作しないときのデバッグは基本的に机上デバッグになっちゃうものなんでしょうか。。手続き型言語デバッグプリントを入れるのがほんと簡単だなーと思います。

2019年

今年も無事に社内読書会が1年続きまして、4.1.3 から 4.4.4 まで進みました。最近は3週間に1回ぐらいの開催間隔で、今年は14回(通算76回)やりました。このペースだとあと2年ぐらいかかるかもです(^_^;)

ということで今年1年は4章をやっていたんですが、非常に濃かったです。節ごとにまったく違うアプローチの評価器を実装するという内容で、いままで見たことのない世界を見れました。あと、引き続き動くコードで問題を解くということは続けているので、よくわからない知識はついていると思います。コードはGitHubに上げてるので興味がある方はどうぞ。

いよいよ来年は5章に入ります。すぐに役立つかはともかくとして、将来的には役に立つ知識が身につくと思っているので楽しみにしてます。

各種リンク

もしこの内容を見てSICPを読もうと思う方はいないと思いますが、念のため参考リンクを載せておきます。

  • SICP Web Site for the Japanese Edition
    • SICPの日本語版をWebで公開してくれています。もともと私は書籍を持っていたのですが、持ち運びも不要で、メモにリンクを埋められるということでこのWeb版を使って読み進めていました。
  • Welcome to the SICP Web Site
    • オリジナルの英語版のサイトです。日本語訳だとどうしても意図が読み取れない時に読んでいました。あと、本文中のコードは以下からダウンロードできるので非常に便利です。
  • GitHub - n3104/sicp
    • 私が解いた問題をPushしているGitHubプロジェクトです。DrRacket上で動作することを確認しています。
  • Solutions Index – SICP exercises
    • 4章まではこのサイトの回答と自分の回答を見比べながら答え合わせをしていました。
  • Serendip - Webデザイン・プログラミング
    • 5章からはこの方のサイトの過去記事にそれぞれの問題の回答が載っていたので自分の回答を見比べながら答え合わせをしていました。

最後に

とにかく完走できてよかったという一言に付きます。完走できたのは一緒に読書会をやっているメンバーがいたからなので、感謝の気持ちしかありません。いやー、ほんとお疲れさまでした&ありがとうございました!

*1:バークレイのカリキュラムもLISPからPythonに変わってるみたいですし。。 http://cs61a.org/