本日行われたNiigata.LLに参加してきました。LL(Lightweight Language)と言っても、どの言語がLLなのかは各自の判断に任されたので、様々な言語・プロダクトについての話がありました。

以下今日の発表の簡単なまとめです。

発表まとめ

@~ はTwitterのid

SL4Aでとび森を捗らせたかった @nekokusa

SL4A(Scripting Layer for Android)を利用すると、Android上でPython Perl RubyなどのScript言語が動く。これとQRコードスキャナを組み合わせて、「とびだせ どうぶつの森」のマイデザインのQRコードを生成する。

…はずが失敗。マイデザインのQRコードの中身は独自形式のバイナリデータだったため。Unicode文字列で表示できない文字が<?>に。この部分を改善すればどうにかなるのか?

C#はLLですが何か? @masaru_b_cl

祝電スライド1つ目。内容はこちら

LTSV(Labeled Tab-separated Values) とは hoge:foo\tbar:baz\nのような形式のデータストラクチャ。

DynamicLTSV:LTSVライブラリを作ったよという話。これからLTSV流行る?

ガベージコレクションについて @mihyaeru21

ガベージコレクションの基本的なアルゴリズムのお話。基本的なマーク・アンド・スイープ、参照カウント、コピーGCに加え、3つを組み合わせたもの、世代別GCなどの発展的なものの話もあり。最強のGCは無いっぽい。

Groovyの紹介 @toby55kij

GroovyはJavaVM上で動作する動的なプログラミング言語。Javaのコードがほぼそのまま動くのでJavaとの相性が良い。クロージャー、演算子オーバーロード、Groovy JDK (GDK)、便利なライブラリ(Groovy API)など、Javaを強化する機能が盛り沢山。

開発を効率化するために、Webアプリフレームワークの「Grails」、デスクトップアプリケーションフレームワークの「Griffon」、ビルドツール「Gradle」、常駐化で高速起動「GroobyServ」、その他「Gaelyk」、「Gpars」、「GroovyFX」などのフレームワークやライブラリ群などがある。   パフォーマンスはそのままだとそこまで良くないが、最近実装された静的な型チェックや静的コンパイル機能を使ってやると結構早い。Javaより少し遅い程度かも?

日本Grails/Groovyユーザーグループに日本語情報あり。

Padrinoでオンラインブックマークサービスを作った @jewel_x12 (1回目)

鯛虎という、Web記事タイトルをみんなでひたすら翻訳するサービスブックマークサービスをPadrinoでつくったとのこと。ちなみに、Title:鯛 Transration:虎。

軽量WebアプリケーションDSL(Domain Specific Language)としてRubyにはSinatoraがある。多言語用の似たものとして、PerlにはMojoliciousやDancer、PythonにはFlaskやJuno、PHPにはSlimやSilexなどがある。

PadrinoはSinatoraベース(Sinatoraを拡張)のWebアプリケーション作成フレームワーク。Sinatoraにロガー、ヘルパー、ジェネレータ、Rails風MVCの導入、メール配信機能、管理画面、View用ヘルパー、多言語対応など諸々の機能が追加されている。Webアプリでおなじみのディレクトリ構成をいちいち手動で作る必要がなく、必要な機能のみ選択して拡張可。

小さなサービスをサクッと作るには良いフレームワークっぽい。 Knohとか出てきてるし、今後記事翻訳系サービスが面白くなるかも的な話もあった。

CGIを軽量WAFにリプレースして捗った話 @aokcub

Padrinoに引き続き、WAF(Web Application Framework)のMojoliciousのお話。これはPerl用。公式の日本語ドキュメントが充実していて、テンプレート、開発用サーバ・開発用SSL証明書、json、Websoketなどはデフォルトで用意されている。足りないところはCPANでカバーする。例えばデータベースやセッション管理など。

Perlで小粒なアプリケーションをつくるならMojolicious一択!

Cinnamon @hayajo

CinnamonはPerl製のデプロイツール。複数ホストに対して、アプリケーションをガッとデプロイ。他言語の似たようなツールはCapistrano (Ruby)、Fabric (Python)などがある。

Cinnamonの実態は、SSHでホストに接続してコマンド実行。Role x Task で柔軟に対応できる。

同時実行たタスク・イン・タスクなどはこれから実装される?シンプルだけどまだまだこれからのようです。この手のツールは基本的に学習コスト高。

Fabricよさげなので、Pythonに抵抗ない人はそっち使おう!というオチ。

Excel VBAのユニットテスト @bei_kan

XLUnitはわかりづらい。VBAUnitは手間がかかる割には使いづらい。そこでVBAUnit(jp)。日本語の関数名が使える、レッド/グリーンバーがある、関数を追加するだけでテスト追加、対象とテストのファイル分離可、対象のソースをあまり汚さないなど非常に使いやすい。

VBAであまり組みたくないというオチ。

Introduction to Scala @joe_noh

Scala入門編。オブジェクト指向 + 関数型 ≠ 関数型。オブジェクト指向で作っていい。副作用があってもいい。JavaにRubyを足した感じ。すべてオブジェクト(型も)。トレイトを使ってMix-in。Javaのライブラリが使え、より簡潔に書ける。型推論もある。並列処理や再帰が得意。などといった特徴がある。

欠点はコンパイルとJVM起動がややもっさり。また言語仕様が複雑。例えばListのインスタンスメソッド名が++ ++: +: /: :+ etc…のように名が体を表しておらず意味不明。

拡張ライブラリにscalazというものがあるが、こういうことやるからScalaは怖い的なことを言われるので、最初は使わなくてもおkらしい。

関数型言語は興味あるので、そのうち触ってみるつもり。

OctopressとGithub Pages @salinger001101

発表してきました。LLと相性のいいブログだよ!資料はこちら

mruby @dictav

MONO Rubyとはmrubyともの作りのコラボイベント。3Dプリンタの話など、すでにmrubyが組み込まれた製品の話。

mrubyは組み込み向けの軽量ruby。日本語で参加可能なオープンソースプロジェクトでまだまだ発展途上。

RubyのGemはmrubyではmrbgemsとなっている。mrubyを拡張する仕組みでmrubyコンパイル時にlimmrubyに機能を組み込む。基本的な組み込み関数もこれで提供されるので極限まで最適化可能。

プロジェクトの規模は大きいけどソースコードはまだ小さい。もしかしたら、Matzのコードレビューが受けられるかも?今ならmrubyの先駆者になれる。さあLet’s pull request!

JS TDD (and Test) with your language @isiduca

基本的にJSのテスト駆動開発(TDD)の話。クライアント(ブラウザ)を使うテスト:PhantomJS、単体(ユニット)テスト:QUnit、コマンドライン上からのテスト:QUnit-TAP & prove、更新に合わせたテストの自動実行:pfswatchなどが紹介された。

コマンドが成功するか失敗するかによってその結果に対応した音声が流れるモジュールを利用して、テスト結果の通知を音声で通知するという面白い試みについての話App::WithSoundもありました。

一度TDDはしっかり勉強しないと…

PowerShellの話 @kasacchiful

PowerShellはWindows用のShell。Win7は2.0、Win8は3.0。MS製品との親和性が高い。例えばSQLServerとかActiveDirectoryとか。基本Shellだが、VBScriptの代替にも使える。

lsって入力できる!エイリアスが登録できる(lsもdirもエイリアス)。csvファイルの読み書きが簡単。スクリプトファイルに保存、実行できる。.NET Frameworkのクラスライブラリが使える。パイプが使える。.NET Frameworkのオブジェクトが渡せる。オブジェクト指向プログラミングができる。IDEが標準で付属。サーバー管理機能。テストツール、例外処理、文字コード周りの処理などもちゃんとある。

もはやなんでもあり。

Perlなめんな @neko_gata_s

祝電スライド2つ目。内容はこちら

最近のPerlの可読性・オブジェクト指向(Mouse)や例外(Try::Lite)のお話。There’s More Than One Way To Do It. 「やりかたはひとつではない」的な観点に基づくと別にPerlにこだわりすぎる必要もない。

いままで作ったもののお話 @su8erlemon

ここにAdobe AirとかopenFrameworksを使って制作したもののサンプルあり。ミーム DE ディスカッションとか。

プロジェクトマッピングとかのお話も。こんな(YouTube)感じで、かなりレベル高かった。今回一番の衝撃。

この手の話は、普段あまり聞く機会がなかったので面白かった。もっと芸術的なセンス欲しい…

JO_RI_botの紹介 @shogo82148

@JO_RI_bot のお話。いわゆる人工無能。圧縮新聞とかしゅうまい君の仲間。Twitterでリプライを送るだけで様々な機能が利用可能。

ぬるぽ->ガッ、タイマー、翻訳(Bing翻訳を利用)、多言語対応、Amazonの商品検索、本の感想(じょりくん:@JO_RI が読んだ本(主にラノベ)ならだいたい返ってくる)、キーワード検索、ユーザー検索、イベントの詳細、QA機能、etc..

詳細はここ読めばおk。

Scalaのパターンマッチング @jewel_x12 (2回目)

Scalaのパターンマッチングのお話。簡単に言うと豪華なCase文的なイメージ。定数パターン、シーケンスパターン、型付きパターン、コンストラクタパターン、抽出子(インスタンスの構成要素を分解してマッチング)など。

色々できて便利!Scalaは多機能故に学習コスト高…

普段使わない言語の考え方って面白い。

感想など

今回は飛び入りの発表者が多く、分量・内容ともかなり増し増しな感じでした。LLは用途的にもWeb開発系のフレームワークの話が多いかなと思ってたけど、そんなことはなかった。

普段はほとんどPythonを使っているけれど、こういう場で学んだ他言語・他ツールとの共通部分・差異をもっと意識すれば、もうちょっとマシなプログラムが書けるはず。精進あるのみ。

それから、普段見落としそうな所にもアンテナを向けるためには、「こんなんあるけど、どうよ?」と言ってくれる人がいる、情報を受動的に手に入れられる環境に定期的に顔出すのって重要なのを再認識しました。