「オブジェクト指向プログラマが次に読む本 Scalaで学ぶ関数型入門」を読んだ
基本的に関数型言語もScalaもJVM言語も初心者なのでその前提で書かせていただきます。
Scala興味なくても関数型と並列に興味がある人なら必要最低限の情報がうまく俯瞰できるようになっていて非常にいいです。関数型プログラミングの基本概念の副作用、単一代入、参照透明性、カリー化、部分適用、遅延評価、クロージャー、再帰、周りが丁寧に解説されています。アクタープログラミングとパーサーコンビネーターのところもまとまっていてわかりやすかったです。
ただ、タイトルのつけ方で若干損をしている感じはした。
関数型やScalaやりたいんだけど若干敷居高いなと感じてる初心者にはおすすめかと思います。
オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門
- 作者: 株式会社テクノロジックアート,長瀬嘉秀,町田修一
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/13
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 340回
- この商品を含むブログ (32件) を見る
追記
Scala抑えたいなら通称コップ本である。「Scalaスケーラブルプログラミング第2版」や並列処理周りの「Effective Akka」とかもあるといいかもです。コップ本ないとつらいです。電子版早くでてください。
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (45件) を見る
- 作者: Jamie Allen
- 出版社/メーカー: O'Reilly Media
- 発売日: 2013/08/15
- メディア: Kindle版
- この商品を含むブログを見る
楽してgitignoreを得る方法
何かのプロジェクトを始めるたびに、.gitignoreを作ったり、他のプロジェクト見つけてきて移植するのが毎回面倒でした。最近楽する方法を2種類ほど見つけたので紹介します。
github.com/github/gitignore
githubが提供しているgitignore集ですね。
自分に合った物をこれでみつけてはっければ特に考えなくてもいけます。
(ただし、perlだとcarton対応とかあるので若干カスタマイズする必要性があります)
gitignore.io
gitignore.ioというサイトですね。言語名いれて検索するだけで
自分の欲しいgitignoreを得ることができます。
(知らないだけで裏でgithubのやつがうごいててもおかしくないですが)
エナジーチャージキャンディが販売終了していた
こちらのエナジーチャージキャンディという物が疲れたときに頼りになるので箱買いしてたのですがいつの間にか販売終了していました。(売れなかったんですね)
- 出版社/メーカー: カバヤ食品
- メディア: 食品&飲料
- この商品を含むブログを見る
代替物で何か無いかなとおもって探したら似たようなものが出てきたのでこんどはコレを買ってみようかと思います。
- 出版社/メーカー: ノーベル製菓
- 発売日: 2013/12/09
- メディア: 食品&飲料
- この商品を含むブログを見る
英文から単語帳を作成するやつをつくってみた
デ辞蔵Webサービスというものをがありまして、こちらはAPI経由で辞書データが使えるサービスらしいです。
Google自動翻訳は便利だけどほしいものは英文からの単語帳なんだよなぁと思っていたのでちょうどいいから試しに作ってみました。本当に作ってみただけなのでとりあえず動作はしますという状態です。bin以下に放置しておいたんですがそのまま忘れ去りそうだったのであげてみました。macだとcarton で以下のように動作します。思い付きでパパッと作ったので直したいところてんこ盛りなんですがとりあえず放置の方向です。
cat data | carton exec perl -I lib scripts/cetfs.pl > index.html && open index.html
ScalaMaturi2014に参加してきた
感想としては、Scala楽しそうですね。
良かった点
- お値段がカンファレンスとしては高すぎず助かった。
- 出てきたお弁当がそれなりにいい物で美味しかった
- 長丁場なのでお菓子とか水が飲み放題なのは助かった。
- 空調とか音声周りの対応が早かった。
- 講演内容が技術寄りで初心者の自分としては為になった。
困ったなあと言う点
- とにかく長帳場でお昼もガチのLTが流れるのでもうちょっと息つく暇が欲しかった。
- ABの2会場あったのですがどちらも聞きたい感じのセッションが多くて辛かったです。
目立った単語
話しを聞いていてよく聞こえてきた単語がこのようになります。
話の内容を大別すると
使用しているライブラリ等
- 並列分散ライブラリ:Akka
- WebFramework: Play
- ORM: Slick
- Twirl: テンプレートエンジン
Akkaはとにかく技術系の話が出るたびにほぼ毎回でてきました。並列・分散のライブラリなのでその辺の需要が高かったんですね。PlayはメジャーなWebFrameworkなのでこちらも何回か見た気がします。ORMはSlickの話しもよくでましたが他にも何件かライブラリが例として上がっていました。
各種発表のメモ
「GitBucket: Perfect Github clone by Scala 」
ScalaとJGitで作られたオープンソースのプロジェクトGitBucketについての紹介でした。githubで開発されていて、現在3000越えのstarをもらっている。開発者もcontributorもそれなりにいるけどまだまだ理想の開発速度を出すには足りないから開発者が欲しい。依存しているテクノロジーとしては、Scalatra, Twirl, Slick, JGit, H2, Jetty, Apache MINAと言った物をしようしています。フロントエンド側は、JQuery, Bootstrap2, jsdifflib, google-code-pretty,AceEditor,DropZone,ZeroClipboardと言った物を使っているようです。
絶えずgithubの開発ブログやデザインなどをキャッチアップしているそうです。開発ではIntelliJ IDEAで開発していて,Gitter,ZenHubを利用しているそうです。最後に質問で、数百人レベルで使用されている事例はありますかという物がありまして、その規模になると現状の実装だと辛いという話しをされていました。
Xitrum Web Framework ライブコーディング
ハイパフォーマンスなScalaのWebFrameworkだそうです。採用事例は国外の方が多くてフランス・ロシア等でよく使われているみたいです。内部アーキテクチャでAnnnotation周りの説明があって、チャットアプリの作成デモをされていました。ScalaとJavaのアノテーションの違いとかAkkaとか初心者の自分には割とその辺が興味を引く話題でした。
ランチLT
ランチLTと書いてあったので、ライトな発表だろうと思って油断していたら
時間が短いだけでガチなLTが多かったのでびっくりしました。
スポンサー企業が発表していきました。全部では無いのですが、
技術的な話が多かった物をメモしていたので残しておきます。
LINE
LINE社はBackendの話しで「Asynchronous Tasks Monitoring Tool」、「Distributed Tracing System」それに絡んでFinagle, Slicck Saddle, Scrooge、Zipkinといったツール群の話しが聞けました。
http://slick.typesafe.com/
https://github.com/saddle/saddle
https://github.com/twitter/scrooge
https://github.com/twitter/zipkin
サイバーエージェント
サイバーエージェント社はDynalystというサービスでScalaをつかっている会社で配信システムのところで使っているとのことでした。
週一でFunctional Programming in Scalaという本で読書会をしているそうです。技術的にはakka,spray,redshiftなどが出てきました。
http://manning.com/bjarnason/
http://akka.io/
http://spray.io/
http://aws.amazon.com/jp/redshift/
DWANGO
DWANGO社はAndroid API Server, New niconico live、その他4つぐらいのサービスでScalaを投入されているそうです。基本的なArchitechtureはScala 2.1、Play, specs, Scala Test, Squerl, ScalalikeJDBC, Twirl, Scalate+ Mustache, Akkaを採用しているようです。
https://www.playframework.com/
https://code.google.com/p/specs/
http://www.scalatest.org/
http://squeryl.org/
http://slick.typesafe.com/
http://scalikejdbc.org/
https://github.com/playframework/twirl
http://scalate.fusesource.org/
http://akka.io/
グリー初のScalaプロダクト!チャットサービス公開までの苦労と工夫
GreeChatのバックエンドをScalaでどう構築したのかという発表でした。ユーザー数が多く、リアルタイム性を要求され、少ないサーバー台数で動作させたい、5年以上はメンテしたいという要件を満たすものを探したときにScalaが浮上してきたそうです。採用の理由としては、平行プログラミングに強い、一プロセスで複数のコネクションを張れる、静的型付けでの保守性、チームにScalaおじさんがいた等があげられていました。ただ、全体数のなかでScalaおじさんの占める割合が低かったので自主学習とチーム学習を使いこなして乗り切ったそうです。実装としてはfinagleを使用したリクエストを受け付けるのに専念するAPIServer,DB等絡む処理でakkaを使用したEventBusServer,ストリーム関連を担当するStreamServerの
紹介していました。実際に開発する際に出てきた問題は、FullCG,Sharding, UIDとInnoDBとの相性の悪さという問題とその対処が語られました。
ID生成機を作成するという話しをされていたのですが、その成果であるコーンフレークという名前だった気がするのですがググっても見つけられませんでした。あとは、ドメイン駆動設計で作成しているという話しをされていました。
https://twitter.github.io/scala_school/finagle.html
http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%A7%86%E5%8B%95%E8%A8%AD%E8%A8%88
国技とScala
ドワンゴにおけるScala開発事例で、相撲協会公式アプリのバックエンド開発の話でした。Scala選択の理由として、Type-Safeであること、OOP,Immutable, map/fold,traint,monadといったSkillを強制的に学べることなどを上げられていました。ライブラリの所管としては、ScalalikeJDBC,Twirl,Scaladi,ScalaTestなどを良い面、悪い面をあげてそれぞれ紹介されていました。あとは、得られた知見として ExceptionHandlinでTryを使う、Static Code AnalysisでSCoverageがいいらしい、デプロイ面の話し、Tuningの話しなどをされていました。
macで使ってるmarkdown viewer
メモ書きをmarkdownで作成したり残したりすることが多いのだけど書いてる最中に綺麗に表示してくれると脳味噌的に助かるのでviewer欲しいなぁと思って探してたらharoopadというものを見つけて割といいです。
- 方言とか選べない
- いま自分が編集してる部分に集中できない
など細々気になるところはあるのですがテンポラリの記録を書き留める物としては十分に有効なので割と重宝してます。
何してるのか?
最近プライベートだと仕事とは別の言語使っていることが多い。それはまあ別のことがやりたかったり、読みたいプロダクトが別の言語だったり色んな理由があるんだけど、とてもしんどい。自分の好きな言語で好きなことしてるのになんでこんなにしんどいのか、おそらくは目的に到達するためにもっと早い自分を知っていてその比較から多分いらついていてそれで苦しんでいる。どうにかならないかなぁと考えていたら、そもそも僕は言語を通して何をしていたのかということふと思い至ってそれですごく楽になった。