プログラミング関係についての近況

関数型プログラミング入門という記事を書き始めて完全放置しているのですが、これにはちゃんとした理由があります。掲載しようと思っていたコード一式を間違って消してしまったのです。いやね、Elementary OSというMacに憧れてるけれども宗教上の理由からMacは使えないみたいな人のためのMacのパクリ(失礼)みたいなGUIを備えたUbuntuベースのディストロを見つけたんですよ。

ただ、Live起動だと動くのにインストールするとXが立ち上がらなくて、おっかしいなーと再インストールを繰り返しているうちにHDDの内容を丸ごと初期化してパーティションを切りなおしてしまいました。ショック。こんなことなら適当なコードのままでもいいからGitHubとかに入れておくべきだった。GitHubはプライベートリポジトリが作れないので見栄をはってコードを綺麗にしてからリポジトリ作ってコミットしようとしてしまう。ああっ、そんなときのためにBitBucketがあるんじゃないか。くそっ、でももう遅い。

ちなみに最終的には結局Ubuntuを入れることにしました。Elementary OSはtrustyベースでちょっと古かったので…。

まあそんなこんなでコードが消えたのでやる気が失せ、放置しています。…が、別に大した量のコードではないので書き直そうとすればすぐ書き直せます。問題はもっと別のところにあります。

型クラスの使い方と達成したかったこと、それを使うことで何が嬉しいのか、というあたりはおおむね理解したんですよ。理解したんですが、これ自分の癖なんですけど「あっ、ここまで分かったらこれより高度な部分を覚えてもメリットが少なそうだからいいや」って辞めちゃうんですよ。今回はそれが顕著で、一時期までは「最近のWeb開発に倣ってわが社もCIツール導入してチャットツール導入して、ScalaにAngularにTypeScriptにpull requestベースの開発をしてAkkaでリアクティブでStreamにSparkになんだりかんだり」みたいな事を考えていましたが、最近はもう一転して機械学習と人工知能ばかり勉強しています。・・・いや、必ずしも機械学習とScalaやAkkaやSparkが矛盾するとは限らないんですけど。

ともかく、こういう事を私は繰り返してきた結果、中途半端な知識レベルで広汎な知識を有するような人間になっています。よく「I型人間」「T型人間」「π型人間」などと言いますが、私は「雨だれ型人間」ですね。たぶん。まあ、ブログを見ている方々は想像がつくかとおもいますが。

というわけで関数型プログラミング入門に関しては基本的な型クラスを数個例示し、「ここまでくればScalazの使い方も覚えられるよね」という程度のところで終了したいと思います。

前述したとおり、Haskellベースの型クラスにのめり込んで行っても労力の割に得られるものは少ないように思ってきました。興味がある人はどんどん覚えて行けば必ずやそこで得た知識は無駄にはならないと思いますが、私はそこまで強い興味を持てず、一方で最近強い興味をそそられるのが機械学習でして、そっちの方に軸足を移しているという感じですね。Scala等々を勉強してからはいささかソフトを作る「道具」にこだわり過ぎていて具体的なアプリケーションでどんなことが出来るか、という視点を軽視していたという反省もあり。

元々、機械学習は今のディープラーニングブームが来る前から興味を持って少しずつ勉強していた分野ではありました。が、ここ数年はさすがに片手間では付いていけません。しっかりと勉強したいと思います。

出来ればScalaで機械学習とかチャレンジしてみたいのですが、茨の道な感じがするので諦めてます。DeepLearning4Jがまともになってきたらやってみたい。

直近の目標はTensorFlowでRNN(LSTM)を使って何か作ってみたい。