サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
seratch.hatenablog.jp
http://twitter.github.com/scala_school/coll2.html 以下は私の方でtypoや表示崩れを直したものです。 https://github.com/seratch/scala_school/blob/master/web/_posts/2011-05-08-lesson.textile 誤訳などありましたら、お手数ですが、ご指摘いただければ幸いです。 The basics List スタンダードな単方向リスト(Singly linked list)です。 scala> List(1, 2, 3) res0: List[Int] = List(1, 2, 3) 関数型言語であれば期待する通り、consでリストに付け加えることができます。 scala> 1 :: 2 :: 3 :: Nil res1: List[Int] = List(1, 2, 3)
この記事は Scala福岡2016 - connpass でのハンズオン向けの入門記事です。 JDK (Java SE Development Kit) インストール http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Oracle 社の Web サイトにアクセスして、License Agreement に同意してから自分のプラットフォームにあったインストーラをダウンロードして実行してください。 インストール後はターミナルから java コマンドに PATH が通っていることを確認してください。java -version でエラーにならず以下のような出力が表示されれば OK です。 $ java -version java version "1.8.0_71" Java(TM
このブログに書くか微妙なところですが、まあいいかと。 今年の 2 月くらいから 4 歳の息子とガンバライジングというアーケードゲームで遊んでいるので、それについて今年を総括してみます。 なお、本業については今年結構色々やっててまとめるの大変そうだし、特にやりませんw ガンバライジングとの出会い 今年に入って Twitter の私の日本語アカウント(@seratch_ja)にちょくちょく仮面ライダーネタが出てくるようになりました。これでも自重してるんですが... そもそも私と仮面ライダーについては以下のような感じ。 子供生まれるまで平成仮面ライダーについて全く知らなかった 子供とリアルタイムで見ているのは鎧武(ガイム)、ドライブ、ゴーストの 3 シリーズ 大人になってからもリアルタイムで仮面ライダーを追っている人は結構いますが、私は完全に息子の影響でした。 とはいえ、ガンバライジングについて
Skinny Framework 2.0 をリリースして一ヶ月弱、@yusuke さんのご厚意により、東池袋のサムライズムのオフィスをお借りして Skinny Meetup Tokyo の第 2 回を開催させていただきました。 skinnyjp.doorkeeper.jp 当日使ったスライドはこちら。 Skinny Meetup Tokyo 2 日本語スライド from Kazuhiro Sera www.slideshare.net 英語版はこちら。 Skinny 2 Update from Kazuhiro Sera www.slideshare.net 関連する tweet を Togetter にまとめました。 togetter.com 当日の内容 Meetup の流れは、まず、私の方から Skinny が 2.0 で変わったこと(とちょっとだけさだまさしコンパイラのデモ)をお話し
qiita.com この記事を読んで、記事の本筋からはそれますが、前から思っていたことをつぶやいたのでまとめておきます。 前後関係がある Future 処理を一つの処理として抽出すればシンプルなケースではおかしなことにはならないと思うけど real world では横からはさみこみたくなる要件が継ぎ足されていくとつらくなる。— seratch_ja (@seratch_ja) 2015, 3月 26 そういう要件は本当は同期処理でやるのがよいわけで、そこをあえて Future とかコールバック関数縛りでやらなければならない理由が何かを考える。リソース効率とか膨大な同時接続への耐久性を可読性を犠牲にしてでも得たいのかという。— seratch_ja (@seratch_ja) 2015, 3月 26 適当に作るとデバッグとか運用のトラブルシュートとか大変になるし、開発の難易度はそれなりに上が
ScalikeJDBC は手軽なはず ScalaでORマッパーというとSlickやScalikeJDBC等色々あるが、ほんとにちょっとしたツールを作りたいだけならばもっと手軽にやりたいと思うはず。 ScalaでDBを使った小物ツールをサクッと作れるJDBI - 気まぐれラボラトリィ 手軽ですよということを示すためにちょっとしたサンプルを書きました。ScalikeJDBC や Skinny ORM のミニマムな導入方法としても参考になるかなと思います。 https://github.com/seratch/jdbi-scalikejdbc-skinny-orm-example/blob/master/src/main/scala/app.scala JDBI については私も結構好きなんですが Java であることの限界が見えてしまっている感はあります。SQL をアノテーションに書くわけですが
Scalaの主要な機能を使いながらHello Worldサンプルを書いてみたものです。 なお、以下の例に出てくるApplicationトレイトは2.9.0.final以降でdeprecatedになりました。新しいAppトレイトを使用して下さい。 成果物 https://github.com/seratch/scala-hatena-diary/blob/master/scala-hatena-diary/src/main/scala/scalahatenadiary/helloworld/hello-world.scala 記事 Singletonオブジェクトのmain関数を実行する object HelloWorldByMainMethod { def main(args: Array[String]) = println("Hello World!") } // Hello World
何となく ScalaMatsuri のふりかえりでもしてみようかという気分になりました。自分の中での整理という感じなので、あまり面白みはないかもしれません。 Scala と私 というところで見直してみたけど、私の Scala への関わり方は以下のスライドに全てあらわれているので、その点はもう補足の必要がないですね。私の活動に興味を持っていただいていた方にとっては、やってきたことそのままであることがおわかりいただけるかと思いますが、この機会に明文化できて自分としては一区切りついたというか、すっきりした感はあります。 スライド もう少し踏み込んだ話 もう少し踏み込んで言うと、もしも Scala 使うようになって前より仕事が楽になったり、楽しくなっていないとしたらそれは明らかに間違っているというか、少なくとも今いるメンバー、やろうとしてることとのミスマッチがあるわけなので「頑張って FP の勉強
最近 ruby-openid に付属している example の Rails3 アプリをベースに実装を始め、Rails4 にバージョンアップ、微妙な実装箇所を直したり、SReg ではなく AX に対応させるよう修正・・とやっているうちに気がつくとほぼ全部書き換えていた・・!というオチになった私なのですが、その中でも既存の実装を活かし続けていたところでちょっとハマったのでエピソードとして。 response.headers['content-type'] = 'application/xrds+xml' render :text => yadis これだと Content-Type が application/xrds+xml に設定されずに text/html だとかになってしまう。正しくはこう。 response.headers['Content-Type'] = 'applicatio
最初に調べてから一年経ったので、また GitHub スター数の推移を見てみました*1。というか、こういうの自動化するサービスがあるといい気がしてきたけど。。 DB ライブラリ 順位 名前 2013/06 2013/07 2013/08 2013/09 2013/10 2014/06 総増減 1 Slick 613 638 658 692 717 922 +309 2 postgresql-async 159 187 213 227 240 421 +262 3 Squeryl 322 329 334 338 340 365 +43 4 ScalikeJDBC 112 135 141 150 180 274 +162 5 Querulous 154 157 158 162 164 170 +16 6 scala-activerecord 92 101 104 113 130 168 +76
Skinny Framework Meetup Tokyo 1 ようこそ Skinny Framework Meetup Tokyo へ!! http://skinnyjp.doorkeeper.jp/events/10607 (この記事は Skinny Framework Meetup Tokyo でのプレゼン内容です) Skinny Framework Scala on Rails です。 http://skinny-framework.org/ Skinny Framework の歴史 Skinny Framework は 0.9 時代も含めるとだいたい半年弱の歴史があります。 年月日 バージョン 内容 2013/08 後半 --- プロトタイプ実装に着手 2013/09/25 0.1.0 Kabukiza.tech #1 でお披露目 2013/10/19 0.9.4 怖くない Sc
English? This is an article for Japanese developers. English article is here: http://blog.seratch.net/post/77537302500/try-skinny-framework-1-0-0-rc1 Release Candidate 1 Skinny Framework 1.0.0-RC1 をリリースしました。基本的にはこれからは大きな機能追加はせずにバグの修正や API の最終的な確認・改善を行っていきます*1。 これから約 1 ヶ月、いろんな方に試していただいて final を良い形でリリースできればと思っています。 まずチームに感謝 私一人の力ではありません。本業も忙しい中、contribute してくださった @BlackPrincess と @Arakaki の両氏と pull
Play Framework に関する初めての本格的な日本語書籍となる「Play Framework 2 徹底入門」を献本いただいたので、読ませていただきました。索引まで含めると 529 ページの力作です。著者の方々、大変お疲れ様でした。 Play Framework 2徹底入門 JavaではじめるアジャイルWeb開発 作者: 掌田津耶乃,原一浩出版社/メーカー: 翔泳社発売日: 2013/12/17メディア: 大型本この商品を含むブログ (3件) を見る タイトルに「Java ではじめるアジャイル Web 開発」とある通り、この書籍では基本的には Play2 Java がターゲットとなっており Scala での開発は 9 章のみで触れられています。 私は Scala 版はドキュメント、ソースコードを読んだり、実際にアプリケーションを書いたり、プラグインをサポートしたり、とそれなりに経験が
これは Play framework 2.x Scala Advent Calendar 2013 の 8 日目です。 http://www.adventar.org/calendars/114 ご存知の方もいるかと思いますが、私は Skinny Framework というフレームワークをつくっています。これのコンポーネントは基本的に Skinny Framework 以外でも使えるようにつくられていて、その一つである Skinny ORM がある程度使える ORM として育ってきました。まだドキュメントはそれほど充実していませんが、こちらをご覧ください。 http://skinny-framework.org/documentation/orm.html この Skinny ORM は ScalikeJDBC という DB ライブラリをより ORM 的に使えるようにするために、Scali
この記事は Play framework 2.x Java and 1.x Advent Calendar 2013 の 2 日目です。元々 12/3 の予定でしたが 12/2 が空いたままで存亡の危機だったので、一日スライドしました。 http://www.adventar.org/calendars/104 pvm とは 今回は pvm(Play Version Manager)について紹介したいと思います。 https://github.com/kaiinkinen/pvm pvm は nvm の仕様を踏襲した、複数の Play Framework のバージョンを管理するためのツールです。bash で書かれたシンプルなスクリプトで pvm.sh を .bash_profile などで読みこんで使います。 README では $HOME/utils/pvm に git clone する
10 月の怖くない Scala 勉強会に対応する形で 11/28 に「怖い Scala」というイベントが開催されました。主催の @yamashiro さん、会場提供いただいたグリー株式会社さん、どうもありがとうございました。 http://connpass.com/event/4112/ これはまさかりを持った @kmizu さんです。このように非常に恐ろしい雰囲気の中、開催された勉強会でした。 LT をしました ここで「Skinny Framework 進捗どうですか?」というタイトルの LT をしてきました。 Skinny Framework についてはこちらをご覧ください。 http://skinny-framework.org/ https://github.com/skinny-framework/skinny-framework https://twitter.com/skin
Type Dynamic とは? Scala 2.10 から Type Dynamic という動的なメソッド/フィールド呼び出し機能が追加されました*1。 http://docs.scala-lang.org/sips/pending/type-dynamic.html これは動的なのでコンパイルチェックの恩恵を受けることは出来ません。不正な呼び出しなら例外を throw するという使い方が一般的かと思います。 import scala.language.dynamics object Example extends Dynamic { def selectDynamic(name: String): String = { if (name.matches("^[A-Z0-9].+")) throw new IllegalArgumentException(s"${name} should
怖くないScala勉強会 #kwkni_scala http://connpass.com/event/3420/ 怖くないというのは何となく初心者でも大丈夫、みたいな意味だったのかなぁと思いますが、それも多少は考慮はしつつ、前から話したかったことと自分がやっていることを紹介しました。 http://www.slideshare.net/seratch/kwkni-scala めんどくさくない Scala #kwkni_scala from Kazuhiro Sera Video streaming by Ustream 一応、その場と Web 上の反応を見る限り、それなりに好評なようなのでよかったです。Skinny Framework は出来るだけ早く実績を増やして行きたいので、引き続き機能拡充と品質向上に努めてなるべく早く 1.0 を出したいと思います。
ドワンゴさん主催の「歌舞伎座.tech#1」という勉強会で LT をしました。主催・運営いただいた皆様ありがとうございました。懇親会行きたかったですが、明日早いので自重しました。 http://connpass.com/event/3278/ 3 分間の LT なのに盛り過ぎだったのでかなりはしょりましたが、それでも最後までいけずでした。使用したスライドを公開します。 歌舞伎座.tech 1 LT - ScalikeJDBC Async & Skinny Framework #kbkz_tech from Kazuhiro Sera ガラパゴスいくないということで、英語版も。 Skinny Framework は Scalatra を直接使ってるようなケースであれば、現時点でも既にこちらの方が楽に開発できるレベルにはなっていると思いますが、さすがに品質や API のこなれ具合はこれからです
@yusuke さんがブログを書いていたので、思い出したように書いてみます。 http://atnd.org/event/E0018616 主催していただいた @johtani さん、会場提供してくださったリクルート社に感謝します。@johtani さんとは懇親会で初めてお話しできてよかったです。 今回は同僚の @cbirchall(GitHub やSlideshare は @cb372) が ES を使った開発の tips やテストフレームワークの紹介などを発表していました。 Debugging and Testing ES Systems from cb372 発表にもある通り、弊社ではこれまで各サービスごとに Solr を使っているケースが多かったですが @cbirchall がリードしてくれて、新しく立てるものは ES(ElasticSearch)が利用されています。ES を実際使
#play_kb 「PlayFramework関西ビギナーズ 第2回 #play_kb」という Play Framework 初心者の方向けの勉強会が行われているようです。素晴らしいですね。 http://www.zusaar.com/event/891003 東京で Scala 界隈の方にお会いすると、名前くらいは知っていただけていることも増えてきましたが、それは地域限定の話で、まだまだ知名度が低いようです。 ScalikeJDBC も選択肢に加えてあげてください! #play_kb— がくぞ (@gakuzzzz) August 3, 2013 ScalikeJDBC はまだまだ知名度が足りないですね。たぶん初心者の人はこっちの方が楽ですよ。 #play_kb— Kazuhiro Sera (@seratch) August 3, 2013 @seratch SlickもSqueryl
を実現するライブラリをつくり、週末に公開しました。 概要 ScalikeJDBC の extension という位置づけで ScalikeJDBC-Async という名前です。 https://github.com/seratch/scalikejdbc-async 内部では postgresql-async/mysql-async という Netty ベースの独自ドライバーを使っています。 https://github.com/mauricio/postgresql-async ただし postgresql-async をそのまま使うのは結構プリミティブな感じなので、いかに隠蔽して使いやすくするかにこだわって実装しました。 とりあえずそれについてはまずまずうまくいったのではないかと思っています。 例えば postgreslq-async をそのまま使うとこのサンプルのようにsendQue
以前、こちらでお話しした時のネタだったのですが http://playframeworkja.doorkeeper.jp/events/4219 GitHub、Google Code の star 数で Scala の DB アクセスライブラリのランキングをつくってみました。もちろんたくさん star がついているからといって必ずしも優れたライブラリとは限らないわけですが、ある程度の指標にはなるはずです。 スターの数は 6/26 23:30 頃、私が確認した時点での数字です。() つきになっているものはフレームワークの一部の機能として DB アクセスが提供されているものです。 そうすると、本来は Anorm がダントツ一位になるわけですが、Play2 の将来のバージョンで外される見込みなので除きました。また、Lift Framework の DB アクセスもありますが、こちらは Lift
RubyKaigi 2013 お疲れ様でした まずは運営関係者の皆様に感謝を述べたいと思います。素晴らしいカンファレンスだったと思います。本当にありがとうございました。そして、これまでの準備も含めて大変お疲れ様でした。 これだけの規模のイベントですから、当然大変なことも数多くあったことと推察いたしますが、それを微塵も感じさせないスタッフの皆様の姿勢は素晴らしかったです。 現地で交流させていただいた皆様、ありがとうございました。これも何かの縁ということで、今後ともよろしくお願いします。 LT に出させていただきました このブログでは Scala のことばかり書いていますが、実は Ruby も仕事・プライベートでそれなりに書いていまして、今回は拙作の rspec-kickstarter という gem の紹介と自社のエンジニア募集の宣伝をさせていただきました。 http://rubykaigi
ScalikeJDBC に新しく SQL を組み立てるための DSL を追加しようとしています。次のリリースバージョンを 1.6.0 とし、scalikejdbc-interpolation でこの DSL が利用可能になる想定です。手前味噌ですが「なかなか便利なのでは?」と思っています。 (追記:5/16) 1.6.0 としてリリースしました。お試しください。 http://git.io/scalikejdbc sandbox で試す どういったものかというと、実際に動かしてみるのがわかりやすいと思います。まず sandbox をダウンロードしてみてください。 git clone git://github.com/seratch/scalikejdbc.git cd scalikejdbc/sandbox sbt console sbt console を起動すると、簡単なデータが準備さ
SQLInterpolation ScalikeJDBC の SQLInterpolation では以下のような形でクエリを書きます。 val input = "Chris" val (u, c) = (User.syntax("u"), Company.syntax("c")) val foundUser: Option[User] = sql""" select ${u.result.*}, ${c.result.*} from ${User as u} left join ${Company as c} on ${u.companyId} = ${c.id} where ${u.name} = ${input} """.map(User(u.resultName, c.resultName)).single.apply() String Interpolation に Type Dy
Ninja web framework というのが、少し試したところ、なかなか好印象だったのでご紹介します。Play1 に強く影響されているフレームワークなのですが、このまま育っていけば Play1 の後継候補(or 超える)に十分なれると思いました。 http://www.ninjaframework.org/ Ninja はフルスタックな Web フレームワークである点が売りですが、何でもかんでも自作はせず、土台は Servlet を使い DI は Guice、バリデーションは JSR 303、テンプレートエンジンは FreeMarker を使っいて Play とは思想の違いを感じさせます。 DB アクセスは今のところは標準でこれというのは特にないようですが、何でも好きなものを使って対応できそうですし、私はそれでよいと思います。 開発が始まったのは去年でまだまだ若いフレームワークですが
Scala Notebook というアプリがなかなか面白いです。 https://github.com/Bridgewater/scala-notebook The IPython Notebook http://ipython.org/notebook.html に触発されて作った Scala の REPL を提供する Web アプリケーションとのことです。サーバは unfiltered で実装されています。 sbt "project server" run とやれば起動して勝手にデフォルトブラウザでトップ画面を開いてくれます。サンプルが付いているので早速それらを実行して試す事が出来ます。 研修や勉強会などで使うと便利かもしれませんね。
ScalikeJDBC Interpolation 1.4.7 から experimental 扱いで SQLSyntaxSupport という機能が追加されました。この記事ではこの機能の概要について紹介します。 https://github.com/seratch/scalikejdbc/tree/develop/scalikejdbc-interpolation SQLInterpolation とは何か まず ScalikeJDBC の SQLInterpolation とはどういうものかをご紹介します。なお SQLInterpolation は Scala 2.10.0 の新機能に依存していますので Scala 2.9 環境では使用できません。 まず、このようなマッピング先を用意しておいて import scalikejdbc._ case class Group(id: Long
次のページ
このページを最初にブックマークしてみませんか?
『seratch's weblog in Japanese』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く