underscore.js/lodash.js

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミングを読んで(全部読んでないけど)から、ちょっとした便利ライブラリとしてしか使えていなかったunderscore.js/lodash.jsをドキュメントを見ながらいろいろ試してみた。


underscore.jsのドキュメントを見てるけど、使ってるのはlodash.jsって多分みんなそうだよねえ?でもbackbone.js使うときはunderscore.js使うよねえ?まあいいや。


本を全部読んでるわけじゃないからまだわかんないけど、関数型を意識しながら(?)メソッドを見ていったら結構便利な関数が多々あることに気がついた。

  • partial
  • compose
  • clone
  • extends
  • chain
  • value

上の二つ以外はただの便利関数のような気がするけど……

partial

数年前にやった部分適用の関数?でいいのかな。

var calc = _.partial(function(a, b) {
  console.log(a + b);
}, 5);

calc(5);  // => 10

使いどころ作れば割と使えるかも。

compose

関数の戻り値を次の関数に渡していく関数?うまく説明できない。

var plus = _.compose(function(a) {
  return a + 1;
}, function(b) {
  return b + 1;
});

console.log(plus(1));  // => 3


ちょっとだけ関数型に触れられた気がする。あと利点とかもわかって来たような気がする……けど関数型の利点じゃないのかなこれは。

JavaScriptで学ぶ関数型プログラミング 第1章〜第7章

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

この本、自分にはスキル的にちょっと早すぎた感があるかも。


最近全然本が読めなくなってきてるし、読む気が無くなってきてるし、理解する気が無くなってきてるし。
とりあえず7章までさらーっと読んだのだけど、ほとんど頭に残ってない。
2割くらいは既に実践していたこと(普通にJavaScript書いてる人ならやってるはずのこと)で、あと5割くらいは「で、なんなの」って感じで、残りの3割くらいは「何が言いたいのかよくわからん」という感じ。


本にあったように、引き出しを増やすことはとても大切だと思うのだけど、全然理解できないというか、理解する気がないと言うか、まだ早いと思っているというか。
なんて言うか、モノとして作り上げるのがまだまだ苦手なので、きれいなコードを書くとか保守しやすいコードを書くとかはまだまだ先だと思っているのだよね。きれいなコードを書くことも保守しやすいコードを書くことも、とても大事だと思うのだけど。一方で、きれいで保守しやすいコード書いても、動かなかったりそれ自体が関心の無いものだったりしたらあまり意味がないというか。


だから、まあまあ作り上げるのが苦にならなくなったりして、完成したものに対して保守性とか可読性(関数型のエッセンスを取り入れることでそうなるのかはわからないのだけど)を加えたくなったらまた読み返すのが良いのかなと思った。
そういう意味ではMVCもまだまだ理解できてないのでもうちょっと先なのかなと。


というわけで意識が向いてないことと、やっぱり関数型の考えは簡単ではないというのが重なっていて、理解が進まない気がするのでした。

1月のまとめ

毎月1日に書くように心がけてたのだけど、すっかり忘れてた。もう年が明けて一ヶ月経つのかあ、早いなあ。

やったこと

  • D3.jsはじめた
    • あんまり使えてない
  • MDNにあるSVGチュートリアルを進めた
  • いろいろ本を買った
    • ぜんぜん読めてない
  • pplogはじめた


なんか今月はいくつか新しいことはじめようとしてるせいか、そんなにモノ作れなかった気がする。
最初なのでしょうがないと思うけど。


自分でも驚いているのが、案外文章を多く書いていたこと。以前はそんなこと無かったんだけど。
文章書くのに慣れて来たのかな。慣れて来たのと、文章力が上がっているのは別なのだけども。
まー、慣れてくれば力もついてくることを祈りつつ。

MDNのSVG入門をD3.jsでやった

チュートリアル | MDN
概要〜フィルタまでだったかな。まあフォントはいいかと……
あと全部翻訳されている訳ではないようで、途中で終わってた。でも結構長くて飽きて来ていたのでちょうど良かったかも。


書いてあるマークアップをすべてD3.jsで書くようにしたので、まあまあ要素を追加するのには慣れたかも。
とは言えまだまだD3.jsもSVGもよくわからないことが多いので調べて試していかないとなー。

技術書を買った

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

すべての人に知っておいてほしい スタイルシートデザインの基本原則

すべての人に知っておいてほしい スタイルシートデザインの基本原則

を買った。


前者の方、1章を読んでるのだけどそろそろ挫折しそう……
関数型だとうんたらかんたらといろいろ書いてあるのだけど、「で、なんなの」見たいな感想しかわいてこないというか。
たぶん、まだ大きなものを共同で作ったりしたこと無いからメリットがわからないんじゃないかなと思ってる。
それに加えて、ここ数年で文章が書けない読めない頭に入ってこない風になってしまったから、その影響もかなりあるんじゃないかなと。どうしたもんかな。


後者の方は、CSSのレイアウトに関することが乗っている本が欲しくて買った。出版された当初にも買おうと思ってたのだけどそういうお仕事じゃないし趣味でしか使わないし、とスルーしていたらそういうお仕事になってしまったという。
CSSの基本として、レイアウトの部分が理解できれば大体は理解できてるんじゃないかなと勝手に思っているので、レイアウトに関して結構書いてある風なこの本は良いのではないかなと。フロントエンドエンジニアですがマークアップスタイルシートも書けませんじゃ格好つかないしね。
ジュンク堂の本棚にはCSS入門!みたいな本がたくさんあったのだけど、揃いも揃って本当に基礎的なことしか書いてないというか、セレクタ書いてプロパティ書けばそりゃ適用されるでしょ、みたいな内容の本ばかりだった。あとレスポンシブに関する本か。
ってこの本Kindle版あったのかい。知ってたらKindle版買ったのに……

叙述トリック

https://www.pplog.net/u/sasaplus1に書いたやつ。消えちゃうし、こっちにも書いておくかな。

叙述トリック


http://codeiq.hatenablog.com/entry/2014/01/14/102550


どうでも良いと思っているが、解釈がいくらか変わって見えてくるので一応書いておく。

    • -


"前職の勤務地は新潟。エンジニア向けの勉強会は少なく、「このままここにいたら、エンジニアとして伸び悩んでしまう」という危機感があったといいます。"


「このままここにいたら、エンジニアとして伸び悩んでしまう」は新潟のエンジニア向けの勉強会が少ない、ことに対して言ったものではない。単純に、前職の環境に対してのもの。
勉強会の開催数は関東などと比べると確かに少ないが、それでもNDSやNiigata.pmなどの濃密な勉強会はある。ギークハウス新潟だってある。

    • -


"前職では一世代前のマシンやツールを使っていたのですが、開発環境が最新のものである点にも惹かれました"


開発環境が最新、というのはただ単にMacBook Pro Retina 15inchやiMac 27inchでnode.jsでもRubyでも作業が完了できるならなんでも好きなものを使って良いというもので、一般的なウェブ系であれば普通だと思う。
前職の、Windows固定というだけならまだしも、AMD Athlon Dual Core 4050e 2GHz, 2GB RAM, 80GB HDDというスペックのマシンを4年半、使う羽目になったところからこの発言をすることになった。ツールに関しても、いつまでも古いバージョンのものを使っていたりだとか、特定のアプリケーションを強制されたりだとか、そういったことに対して言ったもの。


http://d.hatena.ne.jp/sasaplus1/20130913/1379006118


常に最新のものが良いとは思わないし、GitでなくともSVNでも良いと思うが、メンテナンスされなくなっているものを使い続けることや、使ったこともないGitに対してあれこれ言った上でSVNを選ぶというのは如何かとは思った。


……もう少し言うと、動的型付け言語を扱っているお前は静的型付け言語を扱っている俺よりも下だ、という意味合いのこと(当時、自分が得意な言語はDelphiJavaScriptだったが……)や、ユニットテストが充実していない中でJenkinsを導入しようとするなど、本当に何がしたいのかわからなかった。

    • -


最後は愚痴のようになってしまった。


とまあ、書かれた文章自体はあまり気にしていないことではあるし、叙述トリックでもなんでもないのだが。


というようなことを、ここには書いていけば良いのか。


まー、いろいろ恨みのようなものは少ないながらもあるけど、タイミングとかスキル的なものとかいろいろ鑑みるとしょうがなかったんだよな、と思う。お世話にもなった訳だし。本当に嫌っているのは片手で数えられる程度の人だけで、それ以外の環境についてはまあまあ良かったと思っているし。


関係ないけどpplog面白くなさそう、と思ってたけど使ってみると割とよかった。Twitterにしかり、pplogにしかり、制限を加えると面白くなるのかな。