色々振り返りたいことあった気がするのですが、全部書くと長くなりすぎると思ったのでとりあえずblog記事中心にまとめます。blog編の他になにを書くのか決めてないですが。
今年書いたもので、現時点で「はてブ数多い順」 で手動で並べる、もしくは別にはてブ数それほどついてないけど自分として印象深いというか、読んでもらいたいものを紹介。
そういえば、気がついたらblogはじめてからの合計PVが、100万いったらしいです。めでたい。というかもう5年もblog書いてるのか。
Scalaのマクロの基礎。評価タイミング、評価回数と、健全性
それなりな力作?だし、頑張ってわかりやすく書いたつもりで、それなりに需要もあったようでよかったパターンですね。大きな考え方としては、あまり今後も変わらないで役に立つだろうから、読んでない人は是非読んで欲しいもの
Scala初心者がPlay2.2を使ってtwitter連携アプリを作ろうとしたときにハマった罠
人気でる理由わからなくもないけど、個人的には気軽に書いたのに想定以上に人気でて、こんなのよりもっと他の読んでくれ、と思わなくもないエントリ。
sbtの密結合な内部アーキテクチャ
厳密には2013年の12月だけど、今までで1, 2を争うくらいな力作だし、書いたこと古くなってないので、ぜひ読んで欲しいので、入れてみた。
Scala2.10から2.11の変更点
(毎回新しいversionが出るたびに恒例になりつつある?)頑張って随時更新してたやつ。今でもそれなりに役立つとは思いますけど、完全に網羅的でもないので、べつにこれだけに頼らないほうがいいとは思う。
時代はリテラルレベルプログラミングだ!
言いたいことが複数混ざってしまってるやつ(?)。複数とは
ですね。
本文にも書いてありますが、リテラルレベルプログラミングという言葉は、わざとノリでタイトルつけただけなので、真に受けないでください。SIP-23は入る流れらしい?ですが、それよりsingleton type関連のバグ先に直して欲しいですね。
Swiftのおもしろ仕様と、Scalaの特殊な(?)構文
大したこと書いてないのに、結果的に意図せずswift人気にあやかって?思った以上に反響あって、べつに嬉しくないパターン。
swiftの例の仕様も色々変更されて?書いてある内容たぶん一部古くなってるし読まなくていいです。
ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法
EitherTを頑張って説明してみたくなって、説明してみました的なもの。それなりに反響あってよかったです。今後もあまり古くならないと思うし、ぜひ読みましょう。続編もあります。
FutureとEitherの話の続き(ApplicativeとMonadの違い)
これ、更に続編書いても需要あるのだろうか?と思わなくもないが、結局難しくなってよくあるモナドチュートリアル増やすだけの結果になりそうな気もするし、悩ましい
関数プログラミング実践入門
普通にレビュー書いただけのつもりだったのに、思った以上にはてブついて困惑したんですが、本のレビューってやはり買うかどうかの基準に使われるから、需要あるんでしょうか?
typesafe activatorを使わないplayframework2.3の始め方
これ、あとからジワジワとはてブ数増えた気がするのですが、皮肉にも「activator playframework」とかで検索すると結構上にでるのかな?
本文に書いてあることの繰り返しになりますが、積極的にactivator否定するつもりもないけど、個人的に今のところあまり使っていく気もないので、使いたい人はactivator使えばいいし、使うにしても、一度この手順で全部手動で動かすという体験をするのは悪くないとは思います。
sbt0.13.2-M1の新しいインクリメンタルコンパイル試したら素晴らしい結果がでた
今(0.13.7)では、もうこの新しい仕組みデフォルトで有効になってます。べつにいまさら読む必要はそれほどなさそうなエントリ。
dottyという新しいScalaコンパイラ実装
たしか、dottyがオープンソースになったタイミングで書いた、そんなに中身のないエントリ。2014年もodersky先生は結局Scala本体の作業はほぼやらずに、ずっとdottyやってたみたいです。dottyはまだまだ開発中といった感じなので、近況はよくわからないけど、すぐに使えるという状況にはならなそう、たぶん。
Scala祭と日本のScalaコミュニティ
やってる当時は、他の人にくらべれば冷静に仕事して裏方に徹してたつもりだったけど、今から振り返ると色々熱くなってた部分もあったなぁーとか思うところもありますね。来年・・・
macroとdynamicを使って任意の型を簡潔に記述、生成する手法がやばい
やばい、のですが、そのヤバさと、「shapelessにおいてRecordと同時に使う場合の実用性」が、どのくらい伝わってるのか謎ですね。ヤバイだけじゃなく、実用性あるんですよ?
こういった黒魔術、今後もまた出てきそうな予感。
Scalaで、FutureやOptionやListがネストしてしまったときに、いい感じに変換する方法
Scalaz入門するにはある意味よい使い方?だろうし、あまり古くならないだろうから、今でも地味におすすめ
HaskellのGADTsすごいなーと思ったのと、それをscalaz.Leibniz使って頑張る話
これも個人的には「今まで知らなかったHaskellとScalaとの違いを知れた」という意味で思い出深いのだけど、(難し過ぎるのか?)それほどはてブついてないですね。まぁ
逆に英訳してtypelevelのblogに引用してもらった
のが感慨深いので、とてもよかったです
CoproductとInjectを使ったFree Monadの合成とExtensible Effects
これは(もとの説明がわかりやすくて)とても感動的でした。Free Monadさえまだそこまで広まってないから難しいとは思うけど、今後もこのあたりの関数型なテクニック頑張って勉強していきたいですね。「Data types a la carte」の発展形なものは、「Extensible Effects」以外にも色々あることに最近ようやく理解し始めたところなので、そのあたり理解したらまとめてみたい
akkaにおけるActorの生成時の注意事項
2014はakkaを頑張った年でもありました。この部分が超絶わかりにくいから頑張って解説したけど、akkaやるうえでは他にもっと重要なことある気がするので、これはこれで気をつけるべきなのですが、べつにそこまで神経質になる必要もないなー、と今となっては思う
Scala2.11.3がでたけど絶対使っちゃダメです
もう2.11.4でたので振り返る必要もそれほどないんですが、そんなこともありましたね。事故原因の解説書きたかったけど、結局書かないままになってしまった・・・。
ScalaでOperational Monadを使って作ったAPI clientの内部実装の解説
はてブ数少ないけど、自分にとってはようやくFree Monadを使いこなせた感がでてきて、思い出深い?感じもあるので載せておこう。今年作ったライブラリまとめとかは、余裕があれば別で書くかなぁー
他にも紹介したいものいっぱいありますが、(たぶん2014年だけで、120件、つまり3日に1回くらいのペースで書いてる)、きりがないので、このくらいにしておきます。