興味があることを列挙する

暇になったときのためのおぼえがき。気になったことは、ググったりWikipediaなどで情報を拾って、都度自分のためにまとめてみるという習慣をつけたい。

  1. 会計、決算書、財務諸表、財務分析
  2. CSSの設計
  3. Redux
  4. Ruby
  5. 機械学習、AI
  6. JavaScriptの体系的な学習
  7. 個人アプリの開発
  8. iOSアプリをなんか作る
  9. Swiftをreactiveに書く(Rx?)
  10. 関数型言語
  11. エリクサー
  12. シリコンバレー(ドラマ)
  13. Archer(ドラマ)
  14. 美味しい店巡り
  15. いい感じのカフェ探し
  16. 国内旅行
  17. 世界史
  18. アメリカの歴史
  19. 美味しいコーヒーの淹れ方
  20. 落語
  21. チャップリンの映画
  22. コンピュータサイエンス
  23. デープラーにんぐ
  24. AIを使ったBot開発
  25. 文章を書くこと

毎月50エントリから始めてみる

27歳までの最重要の目標として「文章力を高める」こと、それによって思考力と人に伝える能力を上げたい、ということを書いた。

もうちょい具体的な指標があったほうがやる気が出るので、とりあえず「毎月50エントリをブログに上げる」ということを目標にしてみようと思う。

この数字は、毎日2つ、思ったことを書いていけば達成できることになる。

少なくとも最初のうちは「書くこと」自体を目的にして、続けていくことが大事だと思う。小さなことでも不完全でもいいので、とにかく書くことを習慣にしたい。

毎日4エントリ書けば一ヶ月で100エントリいくのか。小さなことをつらつら書きまくる方がモチベーション続くかもしれないな。

頭の中にあることはすべて書き出す

ということが重要なのではないかと思った。

昔スポーツをしていた時に、誰かから呼吸法について習った記憶がある。そこで、「息を吸うためにはまず吐かなくてはいけない。実は、呼吸で大事なのは吸う息ではなく吐く息の方だ」ということを聞いたのが印象に残っている。

知識にも似たようなところがあると思う。まあ知識の場合は、まず入れないことには出しようもないのだが、出すことによって、入りが促進されるという側面はあると思う。

このへんはどういう仕組みなんだろう。

要するに、「思ったことを文章に書き出す」ということを日頃からやることで、「何かを思うこと」自体を促進するのだ。入ってくる情報にたいする意識が高まると言っていいのかもしれない。

やはり何事も使って何ぼということだろう。

決算書の読み方

決算書を読めるように、というのは割とあるトピックだ。自分も読めるようになりたい。

とりあえず今知っていることを整理することから始めてみよう。

確か、重要な3つの種類の決算書がある。

  1. 賃借対照表(B/S)
  2. 損益計算書(P/L)
  3. キャッシュフロー計算書

ふむ。

rename_column とreset_column_informationがうまく協調してない

ActiveRecordはテーブルの情報(カラムなど)をキャッシュして使うので、マイグレーションによってスキーマが変更された直後にはそれが反映されていない場合がある。

それをとりあえずその場で解決するためにreset_column_informationというメソッドがあるのだが、思うに、理想的にはすべてのマイグレーションメソッドが終わった時に即座に反映されるべきなんじゃないかと思っている。

自分の場合、問題が生じたのはrake db:migrate:reset に連続してdb:seedやサンプルデータ生成のスクリプトを流すdb:setup_all的なコマンドを実行する時に、rename_columnが含まれているとカラムの情報が古くてエラーになってしまった。

ここのテーブルでreset_column_informationを叩けば解決はするのだが、そんくらい反映してくれよって思った。

ここみたいだ。

https://github.com/rails/rails/blob/4d7e96910f7704e08eb193ddf47323cc71a8ab11/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L498

add_columnとかでは問題にならないのはなぜなんだろう。

https://github.com/rails/rails/blob/4d7e96910f7704e08eb193ddf47323cc71a8ab11/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L445

https://github.com/rails/rails/blob/41d432dd7af44c7d1fc5070abddf470dd06035a9/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb#L530

データベースとも関係があるのかもしれない。

27歳になるまでの目標

この間26歳になった。次の誕生日を迎えるまでに、3つの目標を立てた。

  1. 文章の構成力を極める
  2. 英語のリスニングを極める
  3. 腕立てを極める

去年までは割と多くの目標をスプレッドシートに書き出したりしていたのだが、毎年そうやって目標を立ててみる中で、自分が本当に鍛えるべき部分というのが見えてきつつある。

まず一つ目。文章力を鍛えたい。

自分はいわゆる知識労働者であるから、本を読んだり勉強したりというのは積極的に行ってきた。しかし、その中で思ったほど自分の能力が伸びていないのではないかということに気づいた。

いや、能力的にはかなりのスピードで伸びていっているとは思う。しかし、それが本を読んだりという情報のインプットで得たものではなく、あくまで仕事など実践する中で身につけたものに限られていると感じている。

特に、頭の中を武器にして生きて行く以上、言葉や情報を扱うというのは最重要課題である。これまで、あまりにもインプット偏重でクソの役にも立たないまま積ん読を重ねてきた。これがこの先何年続いたところで、それほど自分の能力をあげてはくれないのではないかという危惧がある。

文章力を鍛えることにはメリットが幾つかある。

  1. 自分で文章を構成することで、学んだことを自分のために整理することができる。本当に理解していないことは、文章にすることができないため、理解度のチェックにも利用できる。また、文章にすること自体が記憶を強化してくれると思う。
  2. 他者へのコミュニケーションに役立つ。文章は必ずしも他者に向けたものだとは限らないが、人に何かを伝える際には当然言葉を使うので、それを日頃から鍛えておくことは役に立つはずだ。

ということで、「文章力を鍛える」ことが今年の最重要課題とする。

これに関して、今までは「思考力が大事」とかなんとかごちゃごちゃ考えたのだけど、思考力となるとあまりにも抽象的で、形になるものが何もなくてつらい。

その点、文章力となればとにかく書けばいいのだ。その中で、少しずつ自分の表現する技術、考える技術を磨いていける方がいい。

二つ目は、英語のリスニング。

これに関しては具体的な目標が一つあって、「洋画を字幕なしで観れること」。このハードルは結構高くて、何気ない会話や激しい会話を無理せずに追えるだけの力が欲しい。いつも聞くときに「Sorry?」って聞き返してるのは辛い。ドラマや映画を観るのは自分自身とても好きなので、文章やプログラムを書いている時以外は映画観てるぐらいでいいのではと思う。

三つ目。腕立てを極めたい。

これには理由があって、2月まで、自分は週3回ジムに通ってウエイトトレーニングをしていた。これで大分体は鍛えられ、たくましくなっていったのだが、3月渡米した時にまったくジムにいけないので、大分元に戻ってしまった。

長期的なことを考えると、器具がないとできないトレーニングよりも、自重でできる腕立て伏せをもっとできるようにしていく方が色々いいかなあ、という考えだ。

具体的には片手腕立てを楽に20回程度できるように、というのが目標だ(かなり大変だと思う)。

JavaScriptとは何か

JavaScriptについて教えて下さい、と言われたら自分は何と答えるだろうか。

  • 主にブラウザ上で動く言語であり、動的なUIを開発するために使われる
  • ブラウザとともに進化し続けており、技術的な移り変わりが激しい
  • コミュニティもまだ新しく、技術トレンドも急速に変化していく
  • サーバサイドJavaScriptとしてNodeJSがある

これらの説明は間違ってはいないが、まったく深さというものが感じられない。さらに、自分で何かもっと語りたいという内的モチベーションが存在しないのだ。

NodeJSについては正直ほとんど知らない。Streamとかあるっぽいよね。ノンブロッキング・何とか。無知を曝け出すだけだ。

文法についてはしっかり語れるだろうか。varで変数宣言して、functionで関数定義して、DOM操作とかもできる。これがReactJSに成ると?途端に抽象的でもはやJavaScript以外の部分も小さくない。

ということで知識が足りない。もっとインプットしよう。

読む価値のある文章とは

ネット上で情報をあさっていると、一つの記事をじっくりと読もうとすることは少なくて、飛ぶように断片を拾うようにして行って、面白いかどうかを判断していることに気づく。
たまに面白い文章に出会うと、引き込まれ、一文一文を丁寧に読んでしまうこともないことはないが、めったにあることではない。
 そこには2つの要素があると思う。「読む負荷の低さ」と「内容の必要度の高さ」だ。
それほど面白くない、読む価値もない文章でも、書いている内容が平易であれば、じっくりと追って読むことは難しくない。普段人と話していて、そんなに気をつかわなくても全ての単語が聞き取れるのと同じだ。
一方で、面白くないし役にも立たない文章なのに、やたら長かったりすると、一気に「読み飛ばしモード」に突入する。それでも多くの人に注目されてたり、誰かが引用してたりして目を通そうとするのだが、やはりこういう場合は頭に残らない。
逆に、読むための精神的なコストが高くても、内容の必要度の高さが保障されていれば、じっくり時間をかけて読もうとする。例えば、仕事の重要なメールの書き方が支離滅裂でも、それが仕事である以上はきちんと読もうとするだろう。小説が好きな人であれば、好きな作家の文章が時に冗長であっても頑張って読もうとするはずだ。
重要なことは、誰もが限られた量の文章しか読むことができないという点だ。インターネット上には数多くの面白いブログやメディアがあり、仕事の中で入ってくる情報も膨大だ。SNSでも百人を超える人たちが毎日のように情報を投稿している。
だから、もし知り合いやチェックしているメディアが全員、夏目漱石レベルに面白い文筆家であったとしたら、芥川賞レベルの面白い友人が書いた文章ですら読むに値しない可能性は十分あるわけだ(仮に漱石の方が面白いとすれば)。
つまり、「読むに値する文章かどうか」は文章それ自体の提供する価値だけではなく、読み手の状態にも影響される。
そして、読み手である我々の視点で考えると、「いかに読む対象を選択するか」というのは重要なことなんじゃないかという気がする。
例えば、自分にとって学びが多い文章というのは、ほぼ確実に読む精神的コストも高いはずだ。その分読むのに時間を取られるはず。仮に読み手が学ぶことを人生の重要課題の一つに置いているのであれば、そう言った文章を読むことにできるだけ時間と労力を割いたほうがいいに決まっている。(読むのが簡単な文章であっても、そこから何かを得ようと思えば、じっくり時間をかけて読む必要があるだろう)
 そして、その際に重要なことは、「自分にとって大切なことはなんなのか」ということを明確に知っていること、すなわち「この文章を読むことで自分は何が得られるのか」を明確に意識することだ。
それがなければ、無限に存在する面白い文章を読むことに時間を取られ、自分自身には何も残ることなく終わってしまうだろう。

フロントエンド開発を学ぶ

今年の大きなテーマの一つに、「フロントエンド開発を極めたい」というのがある。

これまでは、会社を立ち上げてとにかくプロダクトのコードを書くことがすべてだった。しかし人も少しは増え、また今後のことも考えると、UI/UXを構成するフロントエンドの開発についてもっと体系的な知識が欲しい、と考えている。

そのために僕は何を学んだらいいのだろうか?ざっくりと整理すると、次の3つがあると思う。

  1. JavaScript
  2. CSS
  3. UI/UXデザイン

順に見ていこう。

まずはJavaScript。ブラウザで動く言語がJavaScriptである以上、重要なのは間違いない。問題は、自分がこれから先、どんな知識を身につけていけば良いのかということだ。

言語としてのJavaScriptについてもっと詳しくなると良いというのはもちろんあるだろう。その上で、さらにReactJSなどのようなライブラリのトレンドを押さえつつ、自分でも今後の成り行きについてあるべき方向性を考えていく必要があるのかもしれない。

また、プログラミングである以上、開発プロセスというのも大きな要素だ。例えばテストを書く。JavaScriptを書く上でいかにテストを書くか、ということも今後もっと意識する必要があるのかもしれない。

次に、CSS。CSSの個々のルールは英単語のようなもので、それぞれを独立して覚えるというよりは書いていく中で一つずつ学んでいくしかないような印象がある。一方で、一つのアプリケーションのUIを構成するCSSを全体としてどう設計したらいいのか、ということをもっと考えていく必要があると思う。

理想を言えば、自分で一からデザインフレームワークを組み立てられるような能力が欲しい。

最後にUI/UX設計であるが、これはアプリケーション全体の機能設計や価値のあり方にも大きく関わってくることではないかと考えている。先ほどのCSS設計の話にも通じるのかもしれないが、ユーザーが抱える多くの課題を解決するために、ウェブアプリケーションという限られたスクリーンの中でどのように配置すればいいのか、ということを考え続けていく必要があるのだと思う。

また、すべてに共通することではあるが、とにかくweb上にある情報を読むということが大切なのではないか。その中で、いかに質の高い記事などを集めて、自分のものにしていくかというのは至上命題だろう。

とりあえず、JavaScript Weekly, HTML5 Weeklyの2つは購読するようにしたい。

ESLint導入メモ[WIP]

}ESLintを導入する。

$ npm install -g eslint

$ eslint –init

? How would you like to configure ESLint? Use a popular style guide
? Which style guide do you want to follow? Standard
? What format do you want your config file to be in? JSON

 

http://eslint.org/docs/user-guide/configuring

http://stackoverflow.com/questions/30562568/how-to-setup-an-app-using-browserify-babel-eslint-react-jsx-and-jest-no-gul