読者です 読者をやめる 読者になる 読者になる

Creatable a => a -> IO b

Haskellと数学とちょびっと音楽

CROSS2014 言語CROSSに登壇して来ました #cross2014 #cross2014e

どーもー、玄米茶無しでは生きられない20代男子、ちゅーんさんです。

はい。

普段あまりWeb関係の技術とは関わりが無かったのですが、@Lost_dog_さんにご依頼頂き、 2014/1/17 に開催されたCROSS2014(http://www.cross-party.com)にて、言語CROSSというセッションに登壇して来ました。 基本的Haskellについて語りたくてしょうがない人なので、こういうお話があれば喜んで飛んでいきます。

Google Groupでやりとりしながら準備し、当日直前に顔合わせというわりとドタバタとした感じではありましたが、 普段関わりの薄いジャンルの勉強をしている人達と直接顔をあわせて情報交換するのは、とても良い刺激になりました。 多分、本イベント内で2番目くらいに異色を放っていたセッションだったんじゃ無いでしょうか。


というわけで、僕はHaskellを紹介させてもらったんですが。うーん、いまいち魅力とか伝えきれなかったカモシレナイ

具体的にどんな内容だったかとかは、誰かが書くでしょうし、各々USTとか見て頂ければ良いかと思いますので、 本記事では各言語について、個人的に感じた事とか考えたこととか、つらつらと書いて行こうかと思います。

Delphi (@pikさん担当)

リッチなGUIじゃんけんゲームで会場を沸かせたのが、セッションオーナーでもある@pikさんによるDelphiの紹介でした。 IDE等の環境周りが充実していて・・・いや、実際GUIの開発はVisualStudioよりも良さげな雰囲気を感じました。

ちょっと興味持って触ってみた時(10年近く前の話)はWindowsアプリケーション作るのに使える、VBみたいな開発環境くらいに思ってたのですが、 今はWindowsはもちろん、iOS/Android双方に対応したネイティブアプリの開発が出来たりするのですね。
今回紹介された言語の中では一番とっつきやすいものだと思います。言語自体も明快で余計なものがついて無さそうな所が好感度高いです。

開発環境はEmbarcaderoのページから購入できるっぽいですよー。
http://www.embarcadero.com/jp

Clojure (@eseharaさん担当)

@eseharaさんによるLisp方言Clojureの紹介。プレゼンが面白かったで賞大賞を授与します。

Clojure使いはClojureが無くなったら皆LispじゃなくてHaskellやります。」
「論理型言語の事忘れてませんかっ!?」

と、色々と予想の斜め上を行く発言で楽しませて頂いて・・・あっ、もちろん、Clojureの紹介もバッチリでしたよ!!
JVM上で動作し、Javaの膨大な資産使いたい放題の時点で既にそうですが、関数名であるとか名付けであるとか、随所に「実用性」への意識が見られる、異色のLispという印象を受けました。

(当店では「Lispは実用言語だ!」みたいなそういうマサカリは受け付けておりません。)

ポール・グレアムさんのエッセイ、僕は大好きですし、Lispは魅力的な言語だと思うのですが、 もう一息、あえてGroovyでなくScalaでなくClojureを使うべき理由!のようなアピールがあると良かったかなぁと思いました。

Clojureの導入は以下が参考になりそうです。
http://clojure.org/getting_started

F# (@igetaさん担当)

Haskellガチ勢としては無視できないのがこちら、OCamlをベースにして作られた.NET Framework向けの関数型/オブジェクト指向プログラミング言語です。@igetaさんが紹介して下さいました。 言語としてのアプローチは今回の言語の中では一番Haskellに近く、強い型付けや関数プログラミングによる安全性をベースとして、 .NET上の資産使いたい放題というのが強みでは無いでしょうか。

何よりマイクロソフトによって開発が勧められ、MSDN2012以降には標準搭載というのが素晴らしいです。 やはりVisualStudioは優れていますし、とにかくめちゃくちゃ普及したIDEなので、 今後大きく流行る可能性のあるプログラミング言語という事で、とても注目しています。

MSDNをさくっと購入できる方は良いのですが、無料で使いたい!という方も多いかと思います。 導入方法が書かれたブログを見つけたのでペタっと貼っておきますねー。
http://d.hatena.ne.jp/Nobuhisa/20100905/1283678443

う、Ubuntuの場合はどうするのが一番良いですかっ?

Smalltalk(@umejavaさん担当)

オブジェクト指向の本家本元と言えばこちら、Smalltalkです。 本セッションは、@umejavaさんによるSmalltalkの紹介が一人勝ち状態でしたね・・・。

すいません、ちゅーんさん実際、オブジェクト指向ナメてました。
OOって、環境の中にオブジェクトを配置してメッセージをやり取りさせる、というイメージが先行していたのですが、 Smalltalkは「環境の中に飛び込んでそこからオブジェクトを構築する」というイメージだそうで、 何度も会場を沸かせた超動的なプログラミング環境は、本当に必見ですお。

いじってみたい人は、以下を参考にすれば良さそうな感じー。
http://msugai.fc2web.com/pgm/smalltalk.html

Haskell (誰が担当だって?俺だよ、俺)

はい、んで、向かって右から二番目の席でHaskellの話をモニョモニョしていた冴えないにーちゃんがちゅーんさんです。 Trifectaという、Pasecをベースにしたパーサライブラリを使って、「ドヤァ」とかしたかったのですが、 時間とかの関係でパーサコンビネータのApplicativeスタイルの説明とかほとんどマトモに出来てなかった希ガス・・・げふんげふん

まぁ、色々と言い訳はあるのですが、Haskellの良さってやっぱり、純粋さや型付けによって得られる安全性を維持しつつ、 強力な抽象力や柔軟性を得ている部分にあると思うのですよ。
なので、やっぱり書いて感じて頂けるのが一番なのかなぁ、とか思ったります。

最初は硬いけど、噛めば噛むほど味が出る、スルメのような言語、Haskellを、是非是非使ってみてくらはい!
http://www.haskell.org/platform/

反省点

僕の出した数式パーサーの問題もそうですが、一つ一つのお題がハードになってしまったため、 時間等々の関係で解法の紹介で踏み込んだ話ができなかったのは惜しかった気がします。(それでもやり切れなかったですし)
本番の事考えると、数行で作れるような簡単なお題のほうが、ブログとかにも手軽に載せられたりしますし、良かったかもしれませんね・・・。

セッションの性質上、やっぱりIDE等の環境周りで「見せ」られるDelphiやSamlltalkが強かった印象。 言語そのものや思想の差まで踏み込んだ議論ができなかったのはHaskellerとしては残念だったかも。

紹介やお題はほどほどにして、さまざまなテーマでディスカッションをする時間を作れるともっと面白くなっていたかもしれませんね。

マイナー言語って言うな!

Haskellはマイナー言語じゃねぇ!!と言いたいのはHaskeller達の心の叫びではあったりして・・・ 実際、登壇の依頼を受けた時、心の中で思ったりとかしたんですが、えーと?

やはり、仕事を通して知ってる人には、あまり会う事が無いですし、ツイッターのTLでも知ってるけど使ってない人、多いです。 この辺は、5言語何れにも当てはまる問題なので、セッション中に出来ると盛り上がっていたかもしれないお話。

実際の開発に導入しようとかいう話になってくると、技術者が少ない事がネックになってしまうのですよね、 偉い人達にしてみれば「出来上がったシステムを誰がメンテするの?あんた一生面倒見てくれる?」という事になってしまうのです。

Haskellでも例えば、ある程度権限のある人だったら積極的に導入を進めたりとかしているようです。 あとはやっぱり、コミュニティを通して広めていくしか無いのでしょう。


とまぁ、こんな感じで、なんやかや無事に言語CROSSを終える事ができました。 冒頭でも書きましたが、普段関わりの薄いジャンルや言語の人達とお話できたのはとても良い経験となりました。

得に、何度も書きますがSmalltalkは、「動的」という言葉の意味について色々と考えさせてくれました。ちょっといじってみようと思います。

ではでは、楽しい時間をありがとうございましたm(_ _)m