multiplus

気まぐれに書評とか。

TopCoder - Problem Statement for Chopsticks を Rust で実装してみる

TopCoderProblem Statement for Chopstics を Rust で実装した例として載せておきます。いつまでモチベーションが続くかわかりませんが、定期的に問題を問いては載せておこうかと思います。ブログ書くと結構モチベーションになるかもしれませんね。

問題はだいたい次のような意味で、詳細な条件はページに飛んでください。

Cat Carol は友だち数人を家に招待したいと思っています。Carol はそれぞれちょっとだけ長さが違う箸を何本か持っています。お客さんは、2つの箸を受け取らないといけません。そして、2つの箸を受け取る際には、それら箸の長さはそれぞれ揃っていなければなりません。

今あなたのもとには int[]length があります。各 length が示すのは、 Carol のもつ箸1本1本の長さです。Carol が招待できる友人の数を計算して出力してください。

要約すると、

  • それぞれある長さを持つ箸の情報が配列で与えられ、
  • ペアが作成可能であれば、1ペアとしてカウント。
  • 最終的に何ペア作成できたかを出力。

という問題で、問題を解く方針としては、

  • 各長さごとにカウンタを用意する。
  • 最終的に各長さごとにもう一度イテレートし、2で割ってそれらを合計する。

という流れで十分かなと思います。下に Rust コードのサンプルを載せてあるので、答えみたくない方はここで止めてください。

fn main() {
    // ここいるのかはツッコまないでください
    let length = vec![5, 5];
    getmax(&length);
}

fn getmax(length: &Vec<i32>) -> i32 {
    let mut num = vec![0; 101];

    for i in 0..length.len() {
        num[length[i] as usize] += 1;
    }

    let mut result = 0;

    for i in 0..num.len() {
        result += num[i] / 2;
    }

    println!("{}", result);
    result
}

#[test]
fn example_0() {
    let test_data = vec![5, 5];
    assert!(getmax(&test_data) == 1);
}

#[test]
fn exmaple_1() {
    let test_data = vec![1];
    assert!(getmax(&test_data) == 0);
}

#[test]
fn example_2() {
    let test_data = vec![1, 2, 3, 2, 1, 2, 3, 2, 1];
    assert!(getmax(&test_data) == 4);
}

#[test]
fn example_3() {
    let test_data = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
    assert!(getmax(&test_data) == 0);
}

#[test]
fn example_4() {
    let test_data = vec![35,35,35,50,16,30,10,10,35,50,16,16,16,30,50,30,16,35,50,30,10,50,50,16,16,
10,35,50,50,50,16,35,35,30,35,10,50,10,50,50,16,30,35,10,10,30,10,10,16,35];
    assert!(getmax(&test_data) == 24);
}

あとは、cargo test で、この実装がうまくいっているかどうかだけはわかります。

今回問題を問いていて Rust の実装側で気になった点をメモしておこうと思います。Rust を触り始めてまだ日が浅いので、誰か詳しい方いたら教えてください。

  • 配列インデックスの変換方法について: num[length[i] as usize] として、とりあえず強引に i32usize に変換する処理を噛ませたけれど、length[i] をもっと賢く変換する方法があれば。もしくは変換のいらない方法。length は必ず i32 or i64 (integer型) で宣言する必要があるという問題上の制約を破ることはできませんが。
  • 2度出てくる for 文: これはマクロにできる気がする?
  • 周辺ツールの話: rustfmt 、配列が長くなると全部縦に並べるようなのですが、非常に見づらいのでなんとかならないですかね。たとえば、テストケースの example_4() の中の配列、rustfmt でフォーマットがかかると悲しいくらいに縦長になります。

感想とか

最初、HashMap で値を保持しようとして一度実装してみたのですが、よくよく考えたら配列でも保持可能だなということに気づいて修正しました。正直もともと Java 畑なのと、普段からコレクションの方が馴染みがあるので、まずコレクションで考えて、それを配列だけで表現するとどうなるんだろう?と考えるとはやいのかなと思いました。

今書いている「コード」の理解を一段階深める一冊―『コーディングを支える技術』

型、型というけれど、「型」とは何でしょうか?あるいは、そもそもSystem.out.println(“Hello, World!”);は、どのようにして「Hello, World!」とコンソールに出力するのでしょうか?これらの問いは、普段コードを書いているうちにはとくに何の疑問ももたずに通過してしまう話です。

しかし、よりパフォーマンスを重視しながらコードを書く必要が出てきた場合や、コードをリファクタリングしてより保守性・メンテナンス性の高いものにする必要が出てきた場合、どうしても「物事の根本原理」に立ち返る必要が出てくる場面に直面します。パフォーマンスチューニングの場合だと、そもそも変数はどのようにメモリ上に管理されているか、という話に表れてきますね。また、リファクタリングしようとする際にも問題になってきます。Javaではインターフェースあるいは抽象クラスという道具があり、そのどちらを使うとより effective なコードになるか、という点を追求するには、オブジェクト指向に対する深い理解が鍵となってきます。

本書は、「変数」「スコープ」「型」などといった、プログラマが「そういうものなんだ」と入門書で飛ばしながら読んでしまう箇所を深く追求しつつ、それらの概念の理解をより深めるには最適な一冊だと思います。「あ、そういうことなんだ」となること間違いなしです。

何より、ひとつの概念を説明する際にさまざまな言語を比較しながら説明してくれるのは非常にありがたいです。知っている言語があると、その言語を手がかりにその概念の理解を深めることができますし、知らない言語・名前を聞いたことがあるだけの言語があったとしても、「この言語にはこういう機能があるのね」と自分の了見が広がること間違いなしです。

if文とは?traitとは?

私が読んでいてとても興味深いと思った箇所は2箇所ありました。ひとつは、if文についてです。そしてもう一つは、traitという概念です。

if文は、普段は何気なく使ってしまう文法ですし、どの言語にもある文法です。そして何より、プログラミングを何もわからない初心者に一から説明せよ、というお題を与えられたとき、説明せずには通れない文法でもあります。では、ifとは何でしょうか?処理の分岐ですか?0と1しかないコンピュータの世界で、どのようにそのような複雑な概念を表現しているのでしょうか?ここまで説明できる人は、なかなかいないと思います。

if文は、アセンブリを解析するととても明快です。ifとはスキップ(go to XXX)のことです。ただ、スキップといっても処理を飛ばすことではありません。あるラベルに飛んで、別の処理を行い、次のラベルに飛んでいく一連の流れをifは指し示しています。これはなかなかおもしろく、ではswitchとifはどのように違うか?ということもまた追求可能です。こちらも、アセンブリを解析してみると結構違う処理をしてるんだなあという発見ができるかと思います。

traitについては、そもそもJavaをやっているうちはあまりなじみのない概念かと思います。しかし、Javaのインターフェースを「不便だなあ」と思い始めると、途端にtraitが欲しくなってきます。私も最近、Javaジェネリクス×インターフェースという組み合わせで何度も「不便だなあ」という思いに駆られたので、traitのある言語をメインに使っていけたらなあと思ってしまうくらいには便利だと思います。

traitも説明が難しいですが、近い概念で有名なもので説明すると、Rubyのモジュールがそれに近いです。モジュールは、クラスにincludeすることでモジュールの持つメソッドをそのクラスで呼び出し可能になります。もっとも、コードを見ていると本来のそのような機能を目的に使っているというよりは、名前空間の確保のために使うことが多いようですが。

Javaの場合、Rubyのモジュールのようにメソッドを差し込む機能はないので、親元のインタフェースにメソッドを追加で記述する必要が出てきてしまいます。しかしそれですと、抽象度の高い実装は難しくなってしまいます。(最近では default メソッドも出てきましたが・・・)

trait、便利ですね。

他にも、スレッドの話であったり、オブジェクトがそもそも何なのかといった話も載っており、今使っている言語の理解がより深まること間違いなしなので、ぜひ読んでみてください。

今年度はどうしようか、という話

新年度にもなりましたので、ちょっと書評以外の話を書いてみようと思います。(先輩のブログを久々に覗いたら、なんか書いてあって真似しようと思った)

私は新卒でついに「とりあえず3年」の3年目に突入してしまい、一方で自分の思い描いていた3年後と現状とにあまりに乖離がありすぎて、これからの人生どうしようか・・・というのが本気で定まっていないのでちょっと不安を覚えております。キャリアの計画、ですね。

そもそも就活中は戦略系のコンサルになるものばかりと思っていまして、入社後もパワポと向き合う生活を送る予定だったのですが、なぜかEclipseと黒いコンソール画面、そして数式の列と向き合う日々を送っています。あれ、おかしいな・・・

ただ、キャリアというのは自分で築くものという側面がある反面、ある種の運命的な出会いや偶然、そして流れによって決まるものだとも思っています。

計画的なキャリアを描いてそのレールに乗るのも確かにすばらしいことだとは思いますが、私は、残念ながらこれまでの人生が計画通りに進んだ試しがないので、そういうご縁にはどうやら恵まれていないようです。なので、今この瞬間に解決すべき課題を黙々と解決しつつ、時間を見つけてそういった運命的な出会いがあるよう、アグレッシブに外の世界に顔を出していくつもりです。

一方で、今この瞬間に集中するために、自分自身の課題を整理しようかなと思っています。先輩のフォーマットをパクりつつ、整理していきます。

  1. 現状の自分のスキルセットと傾向
  2. 今年度学ぼうと思っていること

1. 現状の自分のスキルセットと傾向

言語

比較対象をJavaとして、現状それに比べて自分自身がどれくらい上手にその言語を扱えるかを書きます。普段はJavaを使って、金融系のシステムを作っています。リスク管理が専門で、並行処理とかその辺を丁寧に考えながら実装しています。よくある設計思想なども駆使しつつ、どういった実装がより複雑な金融の事象を簡潔に表すことができるか、をよく考えていますね。

  • Java: ★★★★★
  • HTML: ★★★★★
  • CSS: ★★★★★
  • JavaScript: ★★★★☆
  • Ruby: ★☆☆☆☆
  • Python: ★★☆☆☆
  • C++: ★★☆☆☆

フレームワーク・ライブラリ

基本的に内製のフレームワークを使っているので、これといって経験があるわけではありませなん。そこがある意味弱みなのかもしれません。

  • Spring Bootを使って、Webアプリを作ったことがあります。
  • Railsは最近ちょびちょびいじってます。
  • jsだと、durandalとVue.jsをいじったことがあります。ES6で書けます。

その他

  • Jenkinsの設定とか
  • パフォーマンスチューニングをして5分かかってた処理を30秒にするとか
  • 最近はメモリとかそういうのの勉強してたらいつの間にかアセンブリ言語いじりはじめるなど
  • IllustratorPhotoshopがそれなりに使える。大学時代にWebデザイナーのバイトをしていた経緯がある。
  • したがって、デザイン〜フロントエンド〜バックエンド、くらいまではまあまあできると思われる。
  • 一方で、インフラ系の経験がまったくないので、サーバーをどう構築するとか、ネットワークがどうとか、そういった部分には無知。

どちらかというと、物事を深く理解したいタイプみたいで、「変数って何?」とか、「hashCodeには慣習的に31などの素数を用いるけど、なぜ素数を用いるの?」といったことや、「System.out.printlnはどうやってコンソールに文字列表示を実現しているの?」などがわりと気になって仕方ないタイプです。

大学の頃は真逆で、むしろ知識を仕入れることの方に喜びを感じていたタイプでした。なので、手広く何かをやることが多かった用に思います。

それゆえ、これまでのキャリアではとりあえず1つの言語を深く追求してきました。1つの物事を深く追求する、というのは私自身が大学時代からずっと感じていた課題で、意識的にそうしてきた、という背景があります。

あと、UX/UIには結構うるさい。

2. 今年度学ぼうと思っていること

っていうか、健康面ですね。去年は私生活がわりとボロボロだったので、今年はまず私生活の立て直しからスタートかなと思っています。

私の場合は、仕事上は今求めている(求められている)ことは、1つの機能をバグなしで最速で完成させること、なのでそれを達成するために、JUnitをちゃんと書くとか、バグを減らすために複雑な物事を単純に表現できるアーキテクチャを考えるとかそういったことを学ぶことをメインに考えています。

個人としては、ライブラリの作成とかフレームワークの作成とかに1つ興味があります。残念ながら、力量不足もあってフレームワークを作る側にはなかなか回れそうにありませんが、フレームワークを作ることにとても興味があります。サーバー、と言われたら、サーバーを使いこなすことよりもむしろ、サーバーを作ってみたいと思ってしまうタイプです。なので、プログラマの役に立つライブラリを作ってみたい気持ちはありますね。

もう一つは、UX/UIを考える側に興味があります。最近、簡単なWebアプリをいくつか作ってみたのですが、やはり動くだけのものには興味がないようです。このボタンの動きが、とか、このコンポーネントの位置が、とかそういうのをどうしても凝りだしてしまうようです。やるんだったら、UX/UIはこうするから、中身はあと作って!みたいな立場がいいのかもなあ・・・実装するのはちょっとめんどくさい・・・この辺はデザイナーの性が出てしまうのかもしれません。

ライブラリ作成者としての軸と、UX/UIを決めるみたいな立場(これ、なんていうんだろ)の軸の2つに今は興味があって、そのどちらに足を突っ込むかはわからない、という現状ですかね。学ぶだけは自由なので、当面はこの2つ+仕事に必要なものを学んでいく感じでしょうか?

あと、転職したらきっと気が変わるので、もうちょっと腰を落ち着けて考えてみようかと思います。書いてて思ったけど、今後学びたいこととか、ありすぎて逆に整理がついてませんでした。

東芝の決算は1年前から大変なことになっていた?―『一生モノのファイナンス』

本格的に株式の投資をやりたいなあ、と思い始めたので、まずはどこに投資しようかを考えるために少しずつ財務諸表のお勉強をはじめました(いつまで続くことやら)。財務諸表は学生時代に少し勉強したことがあるのですが、正直営業利益とかそのくらいの単語しか覚えていないです。

今回手に取ったのは、『一生モノのファイナンス』という本で、これがなかなかわかりやすくて財務諸表をこれから入門してみたい方にオススメできると思ったのでご紹介します。なおタイトルにもある通り、ファイナンスの本なのですが、内容の半分くらいが財務諸表関係に割かれています。

一生モノのファイナンス入門―――あなたの市場価値を高める必修知識

一生モノのファイナンス入門―――あなたの市場価値を高める必修知識

正直B/SとP/Lについては、多少会計を勉強した際の記憶が残っていて知っている話が多かったのですが、今回の読書でキャッシュ・フロー計算書について知ることができたのは大きかったなと思います。そして、キャッシュ・フロー計算書をここまで楽しく読めるようになったのも、本書の例がとてもわかりやすいからかなと思いました。なので、今回はそれを紹介しようと思います。

キャッシュフロー計算書とは?

いきなり、B/SとP/Lの説明を省いて紹介するのでかなりざっくりした説明になりますが(前者2つは本書を読んで下さい(笑))、キャッシュフロー計算書とは企業の現金の流れを示したものです。会社経営にとって現金はもっとも重要なファクターですので、当然このキャッシュフロー計算書は重要な指標です。

キャッシュフロー計算書には3つの項目があり、「営業活動によるキャッシュフロー」「投資活動によるキャッシュフロー」「財務活動によるキャッシュフローの3つのキャッシュフローがあります。

「営業活動によるキャッシュフローは、普通に会社の事業を行っていて発生したキャッシュフローのことです。プラスならば本業できちんと利益が出ている状態。一方で、マイナスならば本業で利益の出ていない状態、と読み取ることができます。

「投資活動によるキャッシュフローは、有価証券や企業の設備投資などで発生したキャッシュフローのことで、通常企業は積極的に投資活動を行って事業拡大を図ろうとしているはずなので、このキャッシュフローはマイナスになっていることが多いようです。

「財務活動によるキャッシュフローは、現預金の借り入れや株式の発行を行った場合はプラスとなり、配当や借入金の返済、社債の償還などを行った場合はマイナスとなります。一般に、マイナスとなっているのが望ましいですが、ベンチャーなどの成長企業は資金調達を行っている場合も多く、プラスとなっていることもあります。この指標は後述のように、ほかとの兼ね合いで企業の経営判断の一因となるのかなと思います。

そして、次がとてもわかりやすいなと感じたのですが、この3つの指標がそれぞれプラスになっているかマイナスになっているかの組み合わせによって、ある程度その企業がどのような経営戦略をとっているか、ということやどういう経営状況なのか、ということまでわかってしまうのです。

キャッシュフロー計算書の3つの指標の組み合わせで、その企業の経営状況が推測できる

3つのキャッシュフローのプラスマイナスの状態を見ることによって、企業の経営状況を把握することも可能です。下記が、本書で紹介されていたキャッシュフロー表の組み合わせです。

営業活動によるC/F 投資活動によるC/F 財務活動によるC/F
(1) 健全型 + - -
(2) 積極型 + - +
(3) 安定型 + + +
(4) 改善型 + + -
(5) 勝負型 - - +
(6) リストラ型 - + -
(7) 大幅見直し型 - - -
(8) 救済型 - + +

健全型、積極型、安定型、改善型についてはそもそもの営業利益が黒字と考えられるので、まずまず順調な企業経営を行っているといえるのは自明かと思います。もっとも、黒字のまま倒産する、などという例もあるので、そういった事例を取りこぼさないためにもP/LやB/Sを見ることが求められます。

一方で、勝負型、リストラ型、大幅見直し型、救済型については、そもそもの営業利益が赤字と考えられるので、この企業に投資する際には注意が必要、ということになります。固定費の状況や直近でどういった投資活動を行ったのかを重ね合わせて見て、企業が黒字化のために本質的な改善活動を行っていて、今後伸びていくであろうと判断できるのであれば、投資をしても構わないと判断できるかもしれません。

これらの情報をもとに、いくつか財務諸表を見てみるとおもしろい結果が出たので、ご紹介したいと思います。2016/3期の財務諸表を利用しておりますことをご留意ください。

東芝→救済型

東芝の2016年3月期のキャッシュフロー状況を見てみると、次のようになっていました。

2016/3
営業活動によるC/F -1,230
投資活動によるC/F 653,442
財務活動によるC/F 135,747

(単位:百万円)

出典: www.toshiba.co.jp

見て分かる通り、営業活動によるキャッシュフローがマイナス、投資活動によるキャッシュフローがプラス、財務活動によるキャッシュフローがプラスということで、上記の分類では「救済型」ということになります。企業の経営がかなり悪化していて、このままいくと倒産一歩寸前、という状況に1年前からなっていたということがわかります。

投資活動によるキャッシュフローがプラスということは、投資活動をほとんど行っていないということなのでしょうか?ということは、2017年度もこの状況があまりよくなることはないかもしれませんね。財務活動によるキャッシュフローがプラスということは、借り入れなどを行うことでキャッシュを懸命に捻出しようとしていることを物語っています。

2017年度の発表もリスケされたもののそろそろあると思うので、見ものではないでしょうか。

HIS→積極型

今日、旅行のパッケージを売り出す会社が1つ破産申請を出していて、もしかしてこの業界、闇が深い・・・?と思い、業界大手であろう(よく知らない)H.I.S.決算短信を覗いてみました。締めのタイミングが少し他の日系企業と異なるようで、ひとまず2016年度の決算短信を参考にしました。

2016年度
営業活動によるC/F 5,149
投資活動によるC/F -15,440
財務活動によるC/F 30,181

(単位:百万円)

出典: http://his.co.jp/material/pdf/2016_kessan_all.pdf

H.I.S.は去年時点では割と好調だったみたいです。近年のインバウンド増加もあることですし、引き続き事業拡大を企んでいるのでしょうか。投資活動によるキャッシュフローはマイナスになっています。決算短信を見ると、関連会社の株式取得などに投資を行ったと書いてありました。

ただ、キャッシュフロー計算書からはさすがにH.I.S.が今後も伸び続けるかどうかは判断できませんね。関連会社の取得、ということが書いてあったので、このあたりを掘り下げて、妥当な投資を行っているか?のチェックが必要かなあと思いました。

財務諸表から投資先を考えるにはうってつけの一冊

文字数が多くなってきたのと、ちょっと疲れたのでこのあたりで切り上げますが、株式をむやみに購入するのではなく、こういった企業が公表している通知表としての財務諸表を参照しながら、経営陣が適切な経営戦略を打っているかを判断しつつ購入するのが賢いやり方なのかなと思いました。

今日、投資の神様バフェットの本を立ち読みしていたら、「その会社を買うつもりで株を買う(だったかなあ)」という名言が載っていて、そのくらい丁寧に購入先を決めるのが肝要なのかも、と思いました。バフェットは、よく知らない業界の株は買わないという話も聞いたことがあります。

その会社を買うとして、その経営陣は信用できるか?今後も伸び続けてくれるか?を判断する材料として、キャッシュフロー計算書はその取っ掛かりを見つけさせてくれるいい表なのではないでしょうか。

ものすごく今更な感じですが、NPVやIRRといった企業価値分析に関する記載もあります。今回は紹介しませんでしたが、理解が深まったら機会を見つけて企業価値分析に関する記事も書いてみようかなと思います。他の会計の本とくらべて、図も多く内容も整理されていてわかりやすいので、ぜひ読んでみてください。

一生モノのファイナンス入門―――あなたの市場価値を高める必修知識

一生モノのファイナンス入門―――あなたの市場価値を高める必修知識

自分の才能のなさに絶望したときにぜひ読んで欲しい―アンジェラ・ダックワース『GRIT』

最近自分の「才能のなさ」にとても歯がゆい思いをする機会が多かったのですが、「ちょっと待った」と教えてくれた一冊があります。それが『GRIT』でした。書店で見かけたことのある方も多いかと思います。率直に言って、とりあえず読んでみるに値する本だと思ったので、ぜひ読んでみてください。

やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける

やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける

才能よりコツコツやり続けることが重要。ただし、そのやり方に問題がある

本書で一貫していわれていることは、「才能」がすべての成功を決めているわけではない、ということです。それよりもより重要なのは、何かを一貫してやり続けることの方、と筆者は言います。それを、何人もの成功者にインタビューすることで証明していくというのが、本書のスタイルです。

こう言われると、希望がわいてきますね。私自身も、才能がないんじゃないかと悶々とする日々をここ数ヶ月過ごしていたのですが、とにかくまずは目の前のことをやり続けること、そしてやり遂げることに注力するようにしました。気持ち、楽になった気がしています。

ただ一方で、筆者は、何かをやり続ける際には目的や動機が重要で、その設定を誤るといくらやり続けたとしても卓越した成果を上げることはできない、といいます。そしてその目的は、他者への貢献などが目的だとより強固な動機となり、卓越した成果を上げるにはそれが必要条件なのだといいます。多くのビジネス書に書いてあることではありますが、こう言われると妙な説得感を覚えます。

本書の内容は以上なのですが(笑)、豊富な具体例でとても読みやすい構成になっています。私自身は、手にとってみてほんとうによかったなと思っています。

実践していきたいこと

目的を定める、というのは学生時代によく言われたことなのですが、社会人になってから日々を漫然と過ごすことが多くなり、やらなくなってしまいました。手帳などに自分は何をしたいのか、何のために生きているのかなどを常に整理して書くのは大事かもなあ、と思って、これから整理しようとしています。7つの習慣とかと組み合わせるといいかも。

何かを練習する際には、PDCAサイクルを回すこと。これも、社会人になって漫然と過ごすなかで忘れていたことですが、徐々に取り戻していこうと思います。とくに毎週はじめにタスクの整理をする際、ついでに今週に何をするかを計画して、週末にできたかどうか見直す、というサイクルは重要ですね。やろう。

やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける

やり抜く力 GRIT(グリット)――人生のあらゆる成功を決める「究極の能力」を身につける

自分自身の不完全さに向き合ってきたエッセイ―村上春樹『走ることについて語るときに僕の語ること』

またひとつ、村上春樹のエッセイを読んでしまいました。『走ることについて語るときに僕の語ること』。正直ランニングやジョギングにはあまり興味はないですが、小説家とランナーという2つの顔について、村上春樹自身がどう考えているかにはとても興味があったので、読んでみました。あと、結構いろんなところでおすすめされている本だった、というのもあります。

『職業としての小説家』と『走ることについて〜』

まず思いつく感想としては、『職業としての小説家』に書いてあったことがたくさん書いてあるなあ、ということです。以前『職業としての小説家』は気になって読んでいて、そこから村上春樹の自分語り、好きだなあという感覚をもっていました。そして、『職業としての〜』で書かれていたことが、たくさん『走ることについて〜』に書いてありました。

ここから考えられることは、村上春樹の人生哲学は、10年間であまり変わっていないのでは?ということです。10年前に出版した『走ることについて〜』と、その出版の10年後の『職業としての〜』の中身にそれほど大差がない。淡々と生きているのかな、という印象をもちます。そして淡々と生きられる人生というのは、それはそれで幸福な人生なのではないかと思います。

職業としての小説家 (新潮文庫)

職業としての小説家 (新潮文庫)

なかには「いや、ジェットコースターのような人生のほうが楽しいに決まっている」という人もいるかもしれません。人生の楽しさ、というのはその人にとっての幸福の一要素だと思います。そして、それは簡単には決められないものです。でも、私はどちらかというと村上春樹型の淡々とした人生のほうが好きかなと思います。浮き沈みが激しいのは疲れるので。

ランナーと小説家をどう考えているか

ランナーと小説家という2つの顔について、自身がどのようなことを考えているのか、という疑問についてなのですが、正直なところいろいろ書かれすぎててよくわからないです。ただ、読んでいてこう考えているのかなあという漠然とした答えは得られました。

ひとつは、小説を書くという作業において、ランナーという顔は大きな貢献を果たしている、ということです。小説を書く際に、ランニングに対する姿勢が役に立った、という話を実際に本書の中でしています。したがって、ランニングはすくなからず、村上春樹の小説を書く姿勢に影響を与えているようです。

一方で、小説家という顔とランナーという顔の2つの関係性については、それほど深く考えていないのでは?とも思いました。小説に役に立てるためにランニングをしている、という感はなく、どちらかというと小説を書く上での目標とランニングをする上での目標はぜんぜん違った方向を向いている、という感がします。

自分がもし二足のわらじを履くことになったとき、お互いがお互いの役に立たないことに悩む必要はないかもなあと思いました。つまるところ、2つの顔があるなら、それぞれに対する目標を立てて2つの方向に向かって邁進すればよい、ということなのでしょう。

自身の才能がないとき、どうすればいい?

本書の中で村上春樹が、小説家に必要なものを上げていて、そこらへんの章が印象によく残ったのでメモしておきます。

小説家に必要なものは2つあると村上春樹は考えています。1つは文学的才能。もう1つは、集中力だといいます。そして、前者はもはや持ち主にはコントールできないからどうしようもないけれど、後者は訓練で後天的に獲得可能です。そして、その後者をランニングによって鍛えることができた、とも語っています。

才能のない大半の人は、才能については関係のないものと考えるのがベストプラクティス。そして、才能に恵まれない場合、後者をしっかり鍛えることで量でカバーするしかない、というのが正直なところ。と、本書の中で語られています。

私も、自分自身の才能のなさに多々悩むことがあります。が、才能に恵まれないのであればとにかく継続する集中力をもって、1日3時間でも4時間でもいいから、コツコツやるしかないんだと村上春樹が語っていて、なんとなく「ああ、そうなんだ」という気分になりました。

巨人ならざる世間の大半の作家たち(僕ももちろんそのうちの一人だ)は多かれ少なかれ、才能の絶対量の不足分を、それぞれに工夫し努力し、いろんな側面から補強していかなくてはならない。そうしないことには、少しなりとも価値のある小説を、長い期間にわたって書き続けることは不可能になってしまう。そしてどのような方法で、どのような方向から自らを補強していくかということが、それぞれの作家の個性となり、持ち味となる。

「才能に恵まれない」といった、自分自身の不完全さを受け入れるというのは思った以上に難しいことです。そして、だれもが自分自身の不完全さに我慢できない時期があったと思います。が、この一節を読んで、むしろ不完全だからこそ補強の余地が残されているのだということに気づければ、大きく前に進むことができるのではないでしょうか。

村上春樹自身にもやはりそういう時期があったようです。本書の後半の方で、16歳のときに裸になって自分の体の嫌いなところをリストアップしてみた、なんていうエピソードが載っています。おもしろいことするな、で言えばそこまでなのですが、村上春樹自身も、自分自身の不完全さが嫌になる時期があったということを示唆していると思いました。結局きりないじゃん!と思ってやめたそうですが。

そして、本書のなかで語られるランニング中のエピソードは、自分自身の不完全さと歳をとっても向き合い続ける必要があるのだということを示唆しているなあと思いました。

走ることについて語るとき彼の口から語られることの多くは、ランニング中や大会等で出会った「障害」「自分自身の不完全さ」の記憶です。そして、それに対して何を考え、どう行動したかを書き連ねています。走ることについて語るときに彼の語ることは、そうした「不完全さ」はつねに自分につきまとい、それは避けられないということ、そしてそのために「不完全なしかた」で対処し続けなければならないのだ、ということなのではないでしょうか。

走ることについて語るときに僕の語ること (文春文庫)

走ることについて語るときに僕の語ること (文春文庫)

ウィスキー飲みたくなってきた―村上春樹『もし僕らのことばがウィスキーであったなら』

村上春樹の小説はほとんど読んだことがないのですが、エッセイは好きで読んでいる気がします。『職業としての小説家』を読んでから、村上春樹がエッセイを書く時期・短編小説を書く時期・長編小説を書く時期という波をもった作家だと知り、そこからエッセイに興味をもったのがきっかけです。

『ポートレイト・イン・ジャズ』は、ジャズを聴きたくさせるエッセイでした。今回読んだ『もし僕らのことばがウィスキーであったなら』を読んで、今度はウィスキーを飲みに行きたくなってきました。いや、これから冷蔵庫にあるウィスキーを飲みます。

私がウィスキーを飲むようになったのは、バイト先のマネージャーの影響が大きいです。彼に薦められて、バイトの終わりなどにいろいろ試し飲みするうちに、ウィスキーに興味をもつようになりました。そこから、自分自身でウィスキーを買って飲むようになりました。

でも、ウィスキーの味はべつに毎日飲みたくなるほど好きなわけではありません。飲んでいるうちに、人並みに気持ち悪くなってきてやめます。では、ウィスキーをそこまでおいしいと感じていないのになぜ飲むのか?私は、ウィスキーにまつわるストーリーなどを味わいながら飲んでいるのではないかなと、自分自身を振り返って思います。飲んでいる間は、「ウィスキーを飲んでいる自分」に酔うことができます。こう書くとナルシズムっぽいですが。

一方で、村上春樹もこうしたウィスキーの〈記号消費〉をしていないとは言いきれないとエッセイを読みながら思いました。村上春樹がウィスキーの味を表現するとき、そのウィスキーの背景などを交えながら記述していたからです。彼も私と(そして多くのウィスキー飲みと同様に)、ウィスキーのバックグラウンドをたのしみながら飲んでいる人のひとりではないでしょうか。

魅力を「ことば」で伝えなければならない苦悩

さて、この本のタイトル『もし僕らのことばがウィスキーであったなら』についてですが、その裏の意味がじつはあります。

もし僕らのことばがウィスキーであったなら、もちろん、これほど苦労することもなかったはずだ。僕は黙ってグラスを差し出し、あなたはそれを受け取って静かに喉に送り込む、それだけですんだはずだ。とてもシンプルで、とても親密で、とても正確だ。しかし残念ながら、僕らはことばがことばであり、ことばでしかない世界に住んでいる。

村上春樹は、本書を書く際に、ウィスキーの味を表現することにとても苦労したように見受けられます。いつも読むエッセイとは違って、今回は「あ、苦労して書いたんだなあ」というのがまるわかりな気がします。ウィスキーの味ですから、当然それを正確に伝えることは不可能でしょう。ことばを尽くしても、伝わりきらないディティールがどうしても出てきてしまうことには致し方のない面もあります。

が、それ以上に、ウィスキーの味というのはそれほどまでに複雑で奥行きの深いものだ、ということを示唆しているのではないでしょうか。一流のことばの使い手である村上春樹がこれだけ苦心して、最後の最後で「僕らのことばがウィスキーであったらなあ…」とぼやいてしまうくらいに、それくらいウィスキーというのは深いのだなあと思いました。

さて、ウィスキーを飲みに行きましょう。ちなみに、本書に出てくるアードベッグタラモア・デューブッシュミルズは好きでよく飲みます。あと村上さん、バーボンは好きじゃないのかな?バーボンの話はいっさい出てきていませんでしたね…

もし僕らのことばがウィスキーであったなら (新潮文庫)

もし僕らのことばがウィスキーであったなら (新潮文庫)