CS50:Week1 C

CS50 for Japanese(開始3日目。なお、カウントは取り組んでいる日数)

 

Week1 C

映像授業を受講した。映像は2時間16分48秒。

今回の授業では、C言語を扱う。

C言語は先週のScratchよりもグラフィカルで遊び心があるもので、MITの学生が消火栓と水飲み場を接続した(曰く、MITで学ぶというのは消火栓から水を飲むようなものであるらしい)というできごとを基に、今日はそういった経験になるであろうとのことだった。

 

先週のScratchと基本的な考え方は同じである、しかしよりテキストベース、キーボードベースで多く表されることであるとのことだった。

また、プログラミングにおいて大事なことを3つ挙げ、それぞれの要素がどのように作用しあっているのかについて確認した。

  • 正確性、つまりコードが意図したとおりに正しく動作するかどうか。
  • デザイン、つまり、コードがどれだけ効率的であるか、どれだけエレガントか、論理的に読みやすいかに基づいて、不必要な繰り返しなしに、コードがどれだけ良く書かれているかを主観的に測定します。
  • スタイル、つまり一貫したインデントや記号の配置がされており、また美しく書式が設定されているか。スタイルの違いは、コードの正確さや意味には影響しませんが、視覚的な読みやすさには影響します。

良いコードは正しいことは当然で、それが効率的であり誰にとってもわかりやすいかということも同様に重要であるということであった。

 

CS50のために作られたIDE(Integrated Developed Environment )という環境が案内される。

特別に一から作ったものではなく、第三者クラウドツールに教育上役立つ機能を付加したらしい。

 

画面が二分割されていて、上部にコードを書いて、下部のターミナルウィンドウにおいては、コードの実行が行われるとのことだった。

新しいファイルを作って名前を付けて保存するあたりはいつも使っているワードとかエクセルとかそういったものと同じなんだなあと少し安心した。

C言語の拡張子は .c らしい。この辺はまだついていけそうだなという感じである。

 

講師がさらさらさらっと以下を書いたので分かっていないと前提が共有できていないのかと思ったらそうではなかった。

#include <stdio.h>

int main(void)
{
    printf("hello, world");
}

これから、それぞれの記号が何を表しているのかを学んでいく、自分はトレーニングしたり経験があるからわかるけど、それぞれの意味を正確に把握していこうとのことだった。

 

そしてここで確認があり、

前回において、コンピューターって何の言語を解するんだっけ?バイナリだよね、前回は数字とか画像とか文字とかそういったことを表示することに関して話してきたけど内蔵された機能については話していなくて、コンピューターのボンネットの下ではどうやって作用してるかというと、入力した英語をまずはバイナリに変換する必要があるよね、ということだった。

インプットとアウトプットの話をしたけど、

ソースコード(私たちが書いたもの)をコンピューターが読めるようにマシンコードにしてあげる必要があって、その間にあるブラックボックスって何だろうか、

正解はコンパイラというプログラム、とのことだった。

黄色や赤の表示がないとエラーがない、ということらしい。

 

関数はいうなればミニ・プログラムであり、引数はその関数への入力のことをいうとのこと。

様々な言語で句点で文章を終わらせるように、考えたことをセミコロンで終わらせないといけないとのこと。

ダブルクオーテーションは中に含まれる文字をそのまま表示したいときのもの。

C言語において = はget_stringで表され、代入(左辺と右辺が同じであるということ)と同じ考えに基づいてるよとの説明があった。

最初はいろんなことの記載忘れをしてイライラすることもあるだろうけど、いま1時間かけて理解したことは慣れればすぐにできるようになるし、根気強くやっていこうねということも確認された。

 

ここまで聞いていて、自分が新たな外国語をやるときとは違う頭の使い方、やり方をしなければならないな、ということに気づいた。とりあえず語彙を叩き込んで多くの文章に触れるというやり方をしていると、とてもじゃないけどプログラミング言語は習得できないであろうと思う。

 

関数については、以下の通り特徴が確認された。

また、printf関数がなぜprint関数でないかということについては、書式化された(formatted)ものだから、という説明もあった。

  • 関数には、次の2種類の出力もあります。
    • 画面に印刷されるものなどの副作用
    • 戻り値は、プログラムに返される値で、後で使用したり保存したりすることができます。
      • 例えばScratchの 「ask」 ブロックは、「answer」 ブロックを作成します。
  • 「ask」 ブロックと同じ機能を使用するには、ライブラリ (すでに作成されているコードの集合) を使用します。CS50 Libraryには、すぐに使用できる基本的で簡単な関数が含まれています。例えば、get_stringはユーザに文字列あるいはテキストのシーケンスを問い合わせ、それをプログラムに返します。get_stringは、 What's your name?などの入力をユーザーのプロンプトとして取り込みます。次のように変数に保存する必要があります。

ここからはもうずっと具体的なコードのお話が続いていった。

頑張ってついていくので精一杯であんまりメモとかNotes参照しながらできてない。

 

printf("hello, %s", answer);
  • %s書式コード(変換指定子)と呼ばれます。これは単に、プレースホルダ%sがある変数をprintf関数に代入するという意味です。上記の場合使用する変数はanswerで、printfに別の引数として与え、最初の引数とコンマで区切ります (printf("hello, answer")は文字通りhello, answerを毎回出力します) 。

このへんとか

printf("hello, %s\n", answer);
  • \nエスケープシーケンス、または他の特定のテキストを表すテキストの例です。

このへんは、自分の記憶の傾向とかを鑑みるとかなり意識していないと適切に使用できない気がしている。

 

個人的には、40億の話(下記引用)がすごく面白い、というか考えたことがない種類のお話だなと思った。

#include <cd50.h> 
#include <stdio.h>

int main(void)
{
    int x = get_int("x: ");
    int y = get_int("y: "); printf("%i\n", x + y); }
  • 使用するライブラリのヘッダファイルをインクルードし、get_intを呼び出してユーザから整数を取得し、x およびyという名前の変数に格納します。
    • printfで、整数%iプレースホルダの後に改行を出力します。xyの合計を出力したいので、printfで文字列に代入するために+ yを渡します。
    • 保存し、ターミナルでmake additionを実行してから、./additionでプログラムが動作することを確認します。整数以外の値を入力すると、get_intが再び整数を要求します。4000000000のような大きな数字を入力しても、get_intがプロンプトへの入力を促します。これは、多くのコンピュータシステムと同様に、CS50 IDEのintは32ビットであり、約40億の異なる値しか含むことができないためです。整数には正と負があるので、intの正の最大値は約20億、負の最小値は約20億となり、合計で約40億となります。

 

あと、以下については全く知らないことだったので終わったら検索しようと考えた。

  • Y2K問題が発生したのは、1998年の98、1999年の99のように、多くのプログラムが暦年を2桁だけで格納していたためですが、2000年が近づくと00しか格納しなくなり、1900年と2000年の間で混乱が生じました。
  • 2038年には、時間を追跡するためのビットもなくなります。何年も前に、1970年1月1日以降の秒数を数えるために32ビットを標準のビット数として使用することを決めた人がいたためです。しかし、32ビットで正の数を表すとすると、40億までしか数えることができません。2038年には、ソフトウェアをアップグレードしない限り、その制限に達するでしょう。

 

私見ではあるが、数学ができるかできないでプログラミング言語の習得具合はかなり変わってくる気がする。自分はあまり数学は得意ではないものの好きだったので、考えるのが楽しいトピックがあったり、直感が外れなかったりするが、嫌いである場合はかなり嫌な時間になりそうである。

 

今回のC言語についての講義は正直、ついていくだけで精一杯でその後の発展とか、そのほかへの活用等を検討する間もなく進んでいった。

次回以降もなんとかついていけるといいなあというのが今の率直な感想である。

 

本講義のNotesは以下。

https://cs50.jp/x/2021/week1/notes/

CS50:Week0 Scratch

CS50 for Japanese(開始2日目。なお、カウントは取り組んでいる日数)

 

Week0 Scratch

映像授業を受講した。映像は1時間41分54秒。

日本語字幕もつけられるけど、ある程度の英語能力がある人なら冒頭のめちゃくちゃ早口謝辞以外なら聞き取れるし意味もとれそうなくらい簡単な英語をかなり明確な発音で話してくれている。

 

 今回の目的は「問題を解決することの意味についてよく考えること」。

情報入力(input)と情報出力(output)の間にはブラックボックスがあって、そのまさにブラックボックスこそがコンピュータサイエンスである、

その書き方を今回学んでいこうということです、と授業が始まる。

指を使って数を数えること、電球のオンオフで0か1と数字を表現できること、

またいつも使っている0から9の10進法の数で表現できることをまずは確認(それぞれの各桁に10の異なる値があるよね、という確認)し、

2進法について電球3つを使って説明される。

1つの電球オンオフだけだと2通りだけれど、3つだったらいくつ表せるか。

答えは8。アンケートで7を選んだ人が36%いたけど、

全部オフもカウントできるよね、という確認があった。

コンピュータは、0と1の2桁だけを使用する、2進 (バイナリ) または基数2と呼ばれるシステムを使用している(それぞれの2進数をビットとも呼ぶ、との共有もされた)、

バイナリの世界ではそれぞれの各桁を1(2の0乗)の場所、2(2の1乗)の場所、4(2の2乗)の場所、として定義する、

この時点でやっと電球の比喩から離れられるよね、電球のオンオフはコンピューターの中ではトランジスタと呼ばれているので知っておいてね、ということも言っていた。

 

ASCII(アメリカ規格らしい、知らんかった)の例で、簡単なメッセージを送ることができるよねということを示し、さらに最近はコンピューターでは8ビットを用いるということを言っていた。あと、ASCIIの時は7ビットだったらしい。

 

8ビットで表現できるのは256通りであり、これを用いて文面でコミュニケーションをするにはいろいろと足りない、特に学生の指摘の通りアジアの言語(アラビア語等)においては様々なものが足りないよね、というお話があった。

それを現在においては Unicode という規格を使って表現することができており、

泣き笑いの絵文字もコンピューターがビットを受け取って、それをマッピングして表現している、とのことだった。

Notesより

    • 絵文字を受け取ると、コンピュータは実際にはバイナリ形式の数字を受け取り、Unicode標準に基づいて絵文字のイメージにマップします。
    • たとえば、 「泣き笑い顔」 の絵文字はビット000000011111011000000010に他なりません。

 

色、画像についても同じ原理で、赤・青・緑を混ぜ合わせる量を3バイトで示すのが色、画像はそれを水平方向と垂直方向に色がついた点をならべていくことにより、できるとの説明がなされた。

画像については、拡大してみるとわかりやすいよねと実際に拡大した絵文字を見ていった。

映像はパラパラ漫画を示しつつ、画像の束が映像であることを説明された。

音楽についても同じで、音階やそのほかの指示記号をバイトで表すことができることをかなり簡単に示された。

総括として、JPEGとかエクセルとかそういったものは、どういった規則によって0と1のパターンを保存し、表示するかということについて合意形成の類型であるということが確認された。

 

アルゴリズムとは、問題を解決するための段階的な指示のことであり、

コンピューターの中の話でなくとも、レシピ本を見て料理を作ることもアルゴリズムということもできるが、人間間のやりとりとは違い、そこに曖昧さの残る余地がないことを説明された。

電話帳で自分の名前を検索する、という事例をベースに以下の説明がされた。

・1ページずつめくって名前を探していくと時間がかかりすぎる。

・2ページずつめくって名前を探していくと、時間は上記の2分の1になるがめくってしまったページに自分の名前が含まれている可能性がある。

・よって、上記2ページずつめくるというアルゴリズムは正しくない。

・しかしながら、この誤り(バグ)はめくってしまったページに戻ることにより修正ができる。

・もう1つのアルゴリズムは、電話帳を真ん中で開き探している名前が右にあるか左にあるかを考えるだけのものである。

・このアルゴリズムは右か左かだけを判断するだけで電話帳が1024ページであれば、10回繰り返すだけで、あと1ページをチェックするというところまで到達可能である。

 

ここからは、実際にそれをどう落とし込んでいくかということの解説があった。

擬似コード

このパートにおいては、どういったことをやりたいのかを実際の言語(この場合は英語)で記載しそれをどのようにプログラムに落とし込むかの準備が行われた。

いくつか用語の定義が示された。

  • 私たちは疑似コードを書くことができます。これは、アルゴリズムを正確な英語 (または他の人間の言語) で表現したものです。
1  Pick up phone book
2  Open to middle of phone book
3  Look at page
4  If person is on page
5      Call person
6  Else if person is earlier in book
7      Open to middle of left half of book
8      Go back to line 3
9  Else if person is later in book
10     Open to middle of right half of book
11     Go back to line 3
12 Else
13     Quit

この文章はすべて動詞で始まっており、これを関数と呼ぶ。

道の分岐のように、どちらに行くかということについて示す文言(If,Else if)がありこれを条件と呼ぶ。

どこに行くのかを決める質問(person is on page,person is earlier in book)はブール式と呼ぶ。

プログラムの一部を繰り返すための文言のことをループと呼ぶ。

 

実際にScratchを見て触って動かしてみようということが行われた。(詳細は省略)

とてもわかりやすいため自分でも簡単にできるのでは?と思ったけれど実際やってみると多くの過程や前提を落としてしまっており、きちんととらえなおして考えることが大事だと実感した。

Notesにすごくわかりやすくまとまっている。

Scratch (スクラッチ)

 

この中で「抽象化」という言葉が出てきた。

「猫の鳴き声を」「1秒待って」「3回繰り返す」ということを「meow」という1つにまとめることができる。

これについては、メリットとしてプログラムの中で読みやすく、そのプログラムを構成する要素が少なくてすむということであるという説明がなされた。

 

なお、Scratchを用いてゲームを作ったということでその実例を見せてくれたが、

自分が作ったもの以外にAndrewという人が作ったRaining Manという実例を見せてくれた。Andrewは現在、CSもプログラミングも関係ない、スポーツチームのマネジャーをやっているということであった。

ただし、CSを学ぶことによって自分の専門性とそれがぶつかりあい、新たなことを考え付くことができるのではないか、ということで授業が終了した。

 

最初に示された「問題を解決をすることの意味についてよく考えること」に対しては、

原始的な手段を丁寧に確認し次第に複雑な手段へ、という様々なことに通じる基本的な態度や、目的から手段としての正誤を確認すること、などいわれてみると当たり前でしかないことを違う側面からいくつも示してくれていたように思う。

 

 

CS50:Syllabus

CS50 for Japanese(開始1日目。なお、カウントは取り組んでいる日数)

 

Syllabus

シラバスを読んだ。

始める時に自分の目的と合致しないと嫌だなあと思っていたが、当然ながらコース設定そのものの目的と求められることが簡潔に書いてあるだけで、お前なんかお呼びでないぞ、という態度が微塵もないことに少し安心した。

 

なお、以下のような記載があり、

CS50の学生の3分の2はCSを受講したことがありません。このコースの最大の目標は、学生が失敗を恐れずに未知の世界を探求すること、すべての学生がアクセスできる集中的な共有体験をすること、そして学生間のコミュニティを構築することです。

「ほとんど未経験者であること」にちょっとどころではなく安心した。

「すべての学生がアクセスできる集中的な共有体験」については、このコンテンツと翻訳前コンテンツであるハーバード大学CS50が公開されていることが前提にあるのだろうけど、ちょっと実感を持って理解できている感じがしない。

「学生間のコミュニティを構築」しないといけないのか…と読んですぐでは嫌な感情になったけれども、何を指すのかわからないので進んでみる。

 

期待されること、には課題をそれぞれ10回及び最終課題を提出してほしい旨が書いてある。

 

教科書となる書籍はないが、興味があれば読んでね本はあるとのこと。

Books

このコースでは、必須または推奨される書籍はありません。しかし、以下の書籍は興味をそそられるかもしれません。なお、このコースのウェブサイトには、無料の資料が掲載されていますので、そちらをご利用ください。

ハッカーの喜び、第二版
ヘンリー・S・ウォーレン・ジュニア
ピアソン・エデュケーション、2013年
ISBN 0-321-84268-5
翻訳版↓
ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
ヘンリー・S. ウォーレン,ジュニア (著), Henry S. Warren,Jr. (原著), 滝沢 徹 (翻訳), 鈴木 貢 (翻訳), 赤池 英夫 (翻訳), 葛 毅 (翻訳), 藤波 順久 (翻訳)、2015/1/1

コンピュータのしくみ 第10版
ロン・ホワイト
クエ出版、2014年
ISBN 0-7897-4984-X
翻訳版↓
コンピューター&テクノロジー解体新書、2015/9/19
ロン・ホワイト (著), Ron White (著), トップスタジオ (翻訳)

C言語によるプログラミング(第4版
ティーブン・G・コーチャン
ピアソン・エデュケーション, 2015
ISBN 0-321-77641-0
英語版のみ

 

結構ここまで真面目に意味とりながら読んできたけど、シラバスの核っぽいところに辿り着いた。

項目としては、

学術的誠実さ

というものなのだけれど、端的に言うと「友達に手助けを求めていいけど、友達の課題を自分の課題として出さないでね」ということらしい。

意図的な剽窃をすることはもちろん禁止されており、参考という名の剽窃を禁じる趣旨であり自分の課題(この項目では作品と記載されている)に対して責任をもって取り組んでほしいという趣旨だと理解した。

当たり前の人には当たり前のことなんだろうけど、自分が学生だった頃にレポートやそのほかの課題において正解かどうかを気にして複数の友人のレポートをやたら見せてもらったりしている人や優秀とされる人の回答の核だけ教えてもらって肉付けして提出している人を見たので、ハーバード大学はそういう学生に注意喚起をしているのかなと、少し飛躍があるが、感想として思った。

正解であることも当然に重要なのだけれど、そこに辿り着くまでの筋道も同等に重要で友人等でショートカットするのは適切ではない、と私は考えているのでこの記載に概ね共感する。

場合によっては認定証が発行されないことになるとのこと。

 

そして、この項目の下にそれぞれ

合理的なもの

合理的でないもの

があり、具体的に望ましい行動と望ましくない行動が挙げられている。

 

シラバスはこれで以上。

新しい勉強を始める

コロナ禍と言われてどのくらい経つかもう正確に覚えてもいない。

人々がマスクを当たり前に身に着け、夜の明りがとても早い時間に消されるようになって、

人と会うことに罪悪感が伴い、罪悪感から逃れるために1人で過ごすという選択肢を採り続けることに苦痛も感じなくなってきた。

 

私は会社員として働いているため、感染防止対応として会社のルールで日常生活に至るまで様々なことが制限されている。

同居家族以外とは食事もできず、帰省は許されず、いわゆる遊興施設には一切行ってはならず、外食も全面禁止、少しでも体調変化があれば通院前に上長に即時で報告…等々。

経営層含めた私の上長たちはとても誠実にそれらのルールを発出する根拠を説明してくれたので、遵守しているが先の見えないストレスフルな状況であることには間違いない。

 

こういったときに、何をして自分を楽しませるかということについて最近よく考える。

様々な洗礼を受けた文学作品を読むとか、様々な人間の粋を集めた映像作品を見るとか、自宅の窓から射す日光の美しさとか、そこから見える緑の力強く静謐な佇まいとかそういったもので心を慰めるのはもう限界だと感じている。

何をやるか考えたとき、たかだか20年ちょっとの短く渺乎な経験から言うと、1人で取り組むことができ、お手軽に自己肯定感を高められ、失敗しにくく、涵養に資するのは勉強することである。

 

では、何を勉強するかであるが、

CS(コンピュータサイエンス)を勉強してみようと思う。

私は会社で法務部員として働いており、様々な事業部から以下のような言葉を含む相談を多く受けるようになっている。

セキュリティ,ウェブ開発,抽象化,AI,DX,アルゴリズム,プログラミング,自動化,データ構造,そのほかたくさん。

日経新聞朝日新聞を読んで何を指すか分からない言葉遣いがない、程度の知識しかないため、

法務部員として事業部へどのようなリスクがあるかの指摘がきちんとできている自信がずっとなかった。

従来知っている知識に上記の言葉とその概念を押し込めるのも適切なリスク把握となっていない気しかないが、根拠がないのでそれも事実かわからない。

それに、何よりそれらの言葉を使って説明され「お前何もわかってないな」「コイツと話しても仕方ないな」という顔をされるのが一番いやである。

マスク越しにわかるって相当だと思うけれども。

もしかしたら、仕事の役には立たないかもしれないし、勉強したところでマスク越しにわかるあの顔の変化はなくならないのかもしれないけれど、とりあえずやってみようと思い至ったのは、以下のサイトを見つけたためである。

 

cs50.jp

 

記載によると、

このページは、ハーバード大学 CS50 の日本語版翻訳プロジェクトのページです。当サイトのドメインに掲載されているコンテンツは、Creative Commons ライセンスが適用されています。個人利用のほか、非営利に限って教材として利用することができます。

とのことで、私の勉強なら個人利用にあたるであろうし、ブログから一切収入はないので勉強の記録として、ブログに記載して勉強していこうと考えた。

(この点、著作権そのほか知的財産権の観点から考えてみたが問題にはならなさそうである、有意な気づきがおありの方は是非ご教示をお願いいたします。)

 

また、コースの記載を見ると、

ハーバード大学の CS50x は、コンピュータサイエンスとプログラミング技術を紹介するコースで、プログラミングの経験の有無にかかわらず、経験者と未経験者の両方を対象としています。David J. Malan が担当するエントリーレベルのコースである CS50x では、アルゴリズム的に考え、問題を効率的に解決する方法を学びます。テーマは、抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、ソフトウェアエンジニアリング、ウェブ開発など。

とあり、まさに上記の言葉たちが含まれているのを発見し嬉しくなった。

言葉の意味だけでなく、それらがどのように関わりあっているのかを知ることができるといいなあという期待と希望で今いっぱいである。

 

そのすぐ下に、

言語は C、PythonSQLJavaScript に加え、CSS と HTML を使用します。

との記載があり、ちょっとした気づきを得た。

マスク越しにいやな顔をする人が私に対して「できる言語は何ですか」と尋ね、

それに対して私は「読み書き話しは日本語・英語、読み書きはフランス語・ドイツ語」と答え、それに対して鼻で笑われたという事象があった。

その時は言語能力が不十分であるという意思表示だったのかと落ち込んだが、前提が違う回答をしてしまっていたことに気づけた。

それにしたって、教えてくれたっていいだろうと思うけれども。

 

とりあえず、勉強を始めようと思う。

 

あと、クラウドファンディングへの協力依頼があったので、支援しました。

クラウドファンディングへの協力の依頼(5/15まで)

 

翻訳された CS50 を用いた高校生、大学生へのプログラミング教育支援 (非営利)

コロナの影響を受けた高校生・大学生に、プログラミングを教えてキャリアを支援したい | Good Morning

 

 

 

山口一郎さんが夢に出てくる

タイトル通りのことが最近よくあるのでまとまった文章にして残しておきたいと思った。

 

まず最初に、私はよく山口一郎さんのことを知らない。

何を知っているかというと平手友梨奈さんが出演しているアンリアレイジのコンセプトムービーの音楽を作った人ということだけ。

音楽作った人ってどんな人なんだろう、と思ってGoogle検索をして、

表示された画像と、サカナクションというバンドのボーカリストとギタリストを兼ねているということを知った。

www.fashion-press.net

 

最近、思い出せる限りで5回は山口一郎さんが夢に出てきた。

夢とは不思議なもので夢の中では会ったこともなくよく知らない山口一郎さんと何も気にせず話したりしているが、

起きてから山口一郎さんだと認識すると、なんで夢に出てくるんだろうと考えてみたりする。

もしかしたら夢の中で会ったのは山口一郎さんではないのかもしれない、

だけど目覚めている私はあのGoogle検索結果の画像で見た人であるとなぜか結論した。

本当に不思議なことだけれど、こういうことは気づかないだけでよくあるのかもしれない。

 

第一の夢 5月11日

山口一郎さんとロシアのサンクトペテルブルクに旅行に行く夢だった。

飛行機に乗ったりはせず到着したところから始まっていた気がする。

サンクトペテルブルクの街はとても美しく、女帝の支配したロシアはこれより美しかったのだろうかと考えていた。

宮殿広場を目指して歩いていると、山口一郎さんが呟くようにというか私には聞こえる程度の声で、

「服、失敗しちゃったなあ」と言っていた。

色調は暗いけれど身につけているお洋服はサンクトペテルブルクの街によく似合っているように思ったのだけれど、

特に私は何かを言うこともなかった。

でも、黙っているのは悪い気がしたからエルミタージュ美術館の猫の話と、

第二次世界大戦中にはドイツの爆撃から美術品を守るために様々工夫を凝らした学芸員の話をした。

山口一郎さんは興味があるようなないような顔をして聞いていたので、きっと他のことを言うべきだったのだと反省した。

宮殿広場への道中に、露店があったので遠目に眺めつつ歩いた。

サンクトペテルブルクの露店はどうしてか固まって店を構えていた。

気づくと山口一郎さんが「これいいね」と細工の美しい金の指輪を買って私にくれた。

お礼を言って眺めていると「中指」と言われたので中指につけた。

ここでアラーム音で目が覚めた。

 

第二の夢 5月26日

山口一郎さんが厨房のようなところでパスタを作ってくれていた。

フライパンを覗くときのこと生クリームが見えた、きっときのこのクリームパスタだ。

山口一郎さんはこっちを見て「ちょっと待って」とだけ言った。

座って待っているとなぜか車の中にいて、海沿いのくねくね曲がる道を山口一郎さんの運転する車で走っていた。

どうやらパスタは食べ損ねたようだ。

海は荒れていて、でも波間の岩にたくさんのアザラシとセイウチがいてジタバタ動いていた。

アザラシとセイウチって同じところに生息できるのかなと考えていた、

でもどこに生息したってアザラシとセイウチだしどうでもいいかもしれないなとも思った。

海は荒れているのになぜか美しいエメラルドグリーンで、紺色の海でないのだなあと思って空を見上げた。

海の波は明るいエメラルドグリーンなのに空はとても曇っていた。

雲はお菓子作りの途中によく見るもったりしたクリームみたいなのに灰色で変な感じがした。

私は「曇っていますね」と肯定を期待して話しかけた。すると「どうして?雲は嫌い?」と聞かれた。

雲が嫌いかなんて、考えたことがなかったし言われて初めて雲が嫌いかどうかを真剣に考えていた。

ここで目が覚めた。

 

第三の夢 5月28日

砂漠の中の小屋の机で私はノートパソコンで英文契約をチェックしていた。

安部公房砂の女』に出てきそうな砂漠で、人の気配を感じるのに人影は見えなかった。

ノートパソコンのキーボードで英文契約を修正しているのだけれど、

どうしてもタイピングが自分が思うより速くなってしまい、誤字や脱字が多くなり、結果的に多く消しては直しを繰り返していた。

英文契約に独特のラテン語の意味に詰まってしまった、いつもなら分かるしすぐに書けるのに。

Inter aliaの意味がどうしても思い出せなくてイライラしそうになった。

爆撃がきそうな天候だ、そう思った時に小屋の中にいたのか現れたのかどちらか分からないが

山口一郎さんが横に立っていた。

山口一郎さんは私に「ルビコンを渡せって知ってる?」と尋ねてきた。

ルビコンは川のことだし、領土を奪うとかそういう話じゃないんじゃないと返答すると、

私のノートパソコンを奪って「ルビコンを渡せ」と打ち込んでいた。

私がさっきまで見ていた英文契約は表示されていなくて、とても躍動感のある「ルビコンを渡せ」が表示されていた。

私はなんだか本当に爆撃がきそうだとまた急に思ったので、カエサルルビコン川について説明をした。

けれど山口一郎さんは全然聞いていなくて、ニコニコとノートパソコンを操作していた。

机の上にあったワインの瓶とDURALEXのグラスをじっと見つめて爆撃音が聞こえないか黙っていた。

ここで目が覚めた。

 

第四の夢 5月30日

雨がざあざあと音を立てて降っている。車が通り過ぎる音も混ざっている。

私は前職のビルの駐車場に立っていた。取材のスタンバイをしているはずなのに私にはスケジュールもなくパソコンもICレコーダーも手元になかった。

また上司に怒られる、と思って逃げたくなった。

私はこれからここに誰が来るかも知らないのに取材なんかできるわけない。

自分の履いているハイヒールが急に曲がったような感覚に襲われ、立っていられなくなる。

自分の時計も指輪も私を逃すまいとギラついているように見えてきた、もうダメだと思った。

ビルの駐車場に傘を差した山口一郎さんが入ってきたので「関係者以外立入禁止です!」と大声で注意した。

私は必死の形相で注意したのに気にせずどんどんこちらに近づいてきた。

山口一郎さんは座り込んだ私を傘に入れてくれて、傘の内側を見るように言った。

傘の内側を見ると大きな満月があり、驚いていると「空に黄色い穴が空いてるみたいでね」と説明にもなっていない説明をしてくれた。

その後、山口一郎さんは私のかけていた眼鏡を私からとって自分の頭にかけた。

私の眼鏡はブルーのvivienne westwoodのはずなのに、山口一郎さんの頭の上に載っているのはリムレスの白山眼鏡だった。

ここでアラームで目が覚めた。

 

第五の夢 6月2日

私は京都の近衛通りに山口一郎さんといた。

時刻は早朝だろうか、空が青と赤と白の混じり合った色をしていたから、無性に鴨川に連れて行きたくなった。

私は学生時代を京都で過ごしたのでよく夜中に鴨川のほとりに行っていたことを話した。

山口一郎さんは微笑みながら頷きながら、ときどきふふっと笑いながら聞いてくれた。

京都にいることが嬉しくて、「学生時代の恋人と川端通で初めてデートの約束したんです」

「朝の空気は私1人が占有している気分になります」などと次々聞かれてもいないことを話した。

でも自分がいま学生でないことはなんとなくわかったので、京都にいることで浮かれている自分が一気にバカらしく感じられて、

「京都は全然変わってないように見えてどんどん変わっているんです、

変わってないのは私だけなんです、みんなどんどん選択をして変わっていく、

まだ私だけここにいる」と最後は叫ぶように言葉を叩きつけたくて、吐き出した。

少しだけ我にかえって、謝ろうと言葉を探しているとゆっくりと私の方を向いて

「きっと千年前の人も同じことを思ってるよ」と言って山口一郎さんが一筋の涙を流した。

謝るより先に「千年前からある大路で千年前の人も考えたことを考えてる?ほんとう?」と

聞いてしまった。あっしまったと思ったら強烈な太陽光のような光が差してきた。

ここで目が覚めた。

 

 

 

夢はこうして書いてみると脈絡も何もあったものではないな、と思う。

もしかしたら夢の中に出てきた人は山口一郎さんではないのかもしれないけれど、

こうして文章にしてみると山口一郎さんであった気がしてきた。

人の認識は信頼ならないな、とこの文章の書き始めと比較してそう思う。

だいたい私は夢を見ると追いかけられているか、責められて窮地に陥っていることが多い。

でも、不思議と山口一郎さんが出てくる夢は静かで心がざわざわしない。

全然知らない、けど夢ではよく知っている山口一郎さんに感謝したくなった。

 

 

 

 

過去の私へ

いま私はとても楽しく難易度は高いけれど、大学の法学部で学んだことを活かして仕事をしています。


2年前まではとっても酷い環境にいたけれど、今は人に恵まれています。

人を信じられなくなった時も、

何もかもが嫌になって自分以外の人間を殺してしまいたくなった時も、

ひたすらひとりで泣いて泣き疲れて寝た時も、

もう生きられないと思ったけれど負けん気で乗り越えられました。


ずっと自分のいろんな性質、たとえばやたら質問すること、好きなことを追求すること、

それを周囲が受け入れてくれないと思っていたけれど、

大学に入ってそれは劇的に変わってきます。

私が私であることを、そのままであることを受け入れて評価してくれる人ができます。


嫌味だとか自慢だとか言われて虐められたり否定された私の特技は、

強みとなって良い友人や金銭をもたらします。

よく間違えられてとっても嫌だった下の名前も、

それがきっかけでとても素敵な弁護士さんに覚えられて可愛がってもらえます。


凄まじい悲しみに襲われてもう生きられないと思う出来事もあります。

だけど、いろんな人と会っていろんな事を話して乗り越えられる気がしています。

まだわからないけれど。


友達が少ないことを、気にしていないようなフリをしていたけれど

少なくても良い友達がいればいいと思えるようになりました。

私が私の好きなところだと思って大事にしていたこと、

たとえばとってもお洋服が好きでセンスを磨き続けたことやおばあさまから教えていただいたお料理、

母親から教えてもらった愛情深さ、それらを尊重してくれる人が現れます。



思っているよりも、想定していたよりも、良い時間を、何より私の人生を生きられています。


良き時間を、お過ごしください。

理性と狂気

内容がタイトル負けする気しかしないタイトルを付けてしまったが、これ以外に思いつかないので進める。

 

私が生存してきた中で、最も理性と狂気が戦っていた時期がある。

病名は控えるが精神疾患があった時期である。

ありきたりではあるが、新卒入社した会社での大変な業務負荷とハラスメントの嵐が原因だった。

 

最初は幻聴や物忘れが激しくなるといった症状があったが、

徐々にないはずのものが見える、という幻覚症状が出てしまった時にはさすがにまずいと思い病院に行った。

今でも時々見えるが、切り落とされた人の腕や脚が視界の端に現れたり、地下鉄の天井を黒い生物が這い回り私を追いかけてくることがあった。

このような幻覚たちは、精神疾患の治療が進むにつれ少しずつ減っていった。

 

通院や治療をする前は、そういった幻覚たちが怖くて怖くて、それこそ地下鉄の駅に行けなくなるくらいに怖かった。

私の理性が「人の脚や腕はない」「何も追いかけてきていない、見てみろ」と言う度に私は幻覚と向き合うことに恐怖し、泣く以外に何もできなくなってしまっていた。

私はそれまで、私の理性は私の身を守り、私に利益を与えるために私が磨き続けてきた武器であり強力な味方であると思っていた。

その私の理性は、私の「幻覚が見えるのだ」という私の身体を、感覚を否定し、「そんなものはない、お前がおかしいのだ、何かの間違いなのだ」と私を苦しめ続けた。

包丁の切っ先のように鋭く、刺さると赤い血が噴き出す様を想起させる理性の切っ先が、私を小突き狂気の淵へと追い詰めていった。

もう狂気の淵へ落ちるしかない、狂ってしまう以外に方法はない、そう思った時に狂気が手を伸ばして「狂気と共存すること」を教えてくれた。

 

「切り落とされた人の腕や脚はあるかもしれない、せめて踏まないようにしよう」

「地下鉄の天井には黒いものがいるかもしれない、次に会ったら触ってみよう」

「地下鉄の天井に黒いものがいっぱいいる日はバスかタクシーを使おう」

自分で少しずつ解決の方途を見つけられたタイミングと、治療のタイミングが良かったのか、回復は早かった。

 

今でも幻覚が見えたりすることもあるが、それまでのように昏倒したり過呼吸になったりすることはほとんどなくなった。

理性は私の財をなすために役立ってくれているし、狂気は理性を牽制する存在として、私の中でうまく共存してくれている。