自分をClojure化する方法

2,745 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,745
On SlideShare
0
From Embeds
0
Number of Embeds
60
Actions
Shares
0
Downloads
11
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • では、「自分をClojure化する方法」を発表させていただきます。まず「タイトルは釣りです」の部分に言い訳をさせてもらうと、Shibuya.lispのLTで発表したい!と思ってこのタイトルでとりあえず応募だけしたんですが、結局ネタが思いつきませんでした。なのでClojure関連で違う趣旨の話をします。
  • まずは自己紹介でも。名前は深町英太郎です。Twitterやってます。
    主にWeb関連の開発をしていて、OpenPNEというオープンソースのSNSエンジンの開発に携わっています。もちろん、好きな言語はLispです。
  • いつもこんな感じで自己紹介をしているのですが、
    先日某セミナーでも同じように、「好きな言語はLispです」とか言ってたら
  • なんか相手の反応がおかしくて、Lispというだけで笑われてしまいました。

  • ところで、この中にはご存知の方もいらっしゃるかもしれませんが、

  • まあLisp好きの僕には関係ないだろ、って思ってたら
  • “Clojure”というものを知りました。
    みなさん既にご存知のように、JavaVMで動くLisp方言ですね。
  • そして早速社内向けのプログラムを書いてみました。
  • こんな感じ。
    importとかjavaとか見えますが…

  • Clojureを書いてるとありがちなことですが、
    だんだん、自分が書いているのがLispなのかJavaなのかわからなくなるんですよね
    Lispを書いていたと思ったらJavaを書いていた、っていう。そこで愕然とした僕は、
  • 「ひょっとしてスーツ族がLisp界に侵攻してきたのか…?」という危機感が
  • いや違う。逆なんだ
  • Shiroさん曰く、「(Clojureの)最終目標はLisp族によるJavaエンタープライズの乗っ取りである」
  • ここで強調したいのは、Clojureは敵ではない、ということ
  • 我々が乗っ取るための手段なのだ!
  • でもどうやって乗っ取るのか
  • 僕はWebプログラマなのでWebの例をあげます。

  • 会社で、「Lispで書きたいです」というと必ず言われるのが、「Lispが動くホスティングサーバとかないよね」ということ。まあインストールすれば動くのは当たり前なんですが、他言語よりも敷居が高い。特にOpenPNEみたいなOSSのパッケージ製品ではこれが致命的
  • 会社で、「Lispで書きたいです」というと必ず言われるのが、「Lispが動くホスティングサーバとかないよね」ということ。まあインストールすれば動くのは当たり前なんですが、他言語よりも敷居が高い。特にOpenPNEみたいなOSSのパッケージ製品ではこれが致命的
  • 会社で、「Lispで書きたいです」というと必ず言われるのが、「Lispが動くホスティングサーバとかないよね」ということ。まあインストールすれば動くのは当たり前なんですが、他言語よりも敷居が高い。特にOpenPNEみたいなOSSのパッケージ製品ではこれが致命的
  • 会社で、「Lispで書きたいです」というと必ず言われるのが、「Lispが動くホスティングサーバとかないよね」ということ。まあインストールすれば動くのは当たり前なんですが、他言語よりも敷居が高い。特にOpenPNEみたいなOSSのパッケージ製品ではこれが致命的
  • 会社で、「Lispで書きたいです」というと必ず言われるのが、「Lispが動くホスティングサーバとかないよね」ということ。まあインストールすれば動くのは当たり前なんですが、他言語よりも敷居が高い。特にOpenPNEみたいなOSSのパッケージ製品ではこれが致命的

  • ClojureはJDKさえインストールされていればどこでも動く
    特に、強調したいのが、AppEngineで動くということ
  • ClojureはJDKさえインストールされていればどこでも動く
    特に、強調したいのが、AppEngineで動くということ
  • AppEngineをご存知でない方に簡単に説明しますと、
    AppEngineとはGoogleが提供する、Java ReadyなWebクラウドプラットフォームです。
    しかも、無料で提供されている
    これを使うと今までと何が違うのか?
  • AppEngineをご存知でない方に簡単に説明しますと、
    AppEngineとはGoogleが提供する、Java ReadyなWebクラウドプラットフォームです。
    しかも、無料で提供されている
    これを使うと今までと何が違うのか?
  • たとえばCommon Lispの場合。
    まず、ダウンロードしてもらう。そしてサーバにCL処理系を入れてもらう。
    とてもハードルが高い
  • たとえばCommon Lispの場合。
    まず、ダウンロードしてもらう。そしてサーバにCL処理系を入れてもらう。
    とてもハードルが高い
  • たとえばCommon Lispの場合。
    まず、ダウンロードしてもらう。そしてサーバにCL処理系を入れてもらう。
    とてもハードルが高い
  • たとえばCommon Lispの場合。
    まず、ダウンロードしてもらう。そしてサーバにCL処理系を入れてもらう。
    とてもハードルが高い
  • 一方Clojureは簡単。
    重要なのは、「誰がセットアップしても同じようにできる」ということ
  • 一方Clojureは簡単。
    重要なのは、「誰がセットアップしても同じようにできる」ということ
  • 一方Clojureは簡単。
    重要なのは、「誰がセットアップしても同じようにできる」ということ
  • もちろん、「Write once, run anywhere」のJavaVMで動いているので、AppEngine以外で動かすのも簡単です
  • まとめとして、僕がまず言いたいのは、「Clojureは敵ではない」むしろ味方、ということ
  • まとめとして、僕がまず言いたいのは、「Clojureは敵ではない」むしろ味方、ということ
  • まとめとして、僕がまず言いたいのは、「Clojureは敵ではない」むしろ味方、ということ
  • まとめとして、僕がまず言いたいのは、「Clojureは敵ではない」むしろ味方、ということ
  • 以上です。ご清聴ありがとうございました。
  • 自分をClojure化する方法

    1. 1. Clojure Shibuya.lisp TT #5 (2010/3/20)
    2. 2. • • Twitter @nitro_idiot • Web • OpenPNE • Lisp
    3. 3. Lisp
    4. 4. Lisp watch
    5. 5. Java
    6. 6. Clojure
    7. 7. (import 'javax.imageio.ImageIO) (import 'java.io.File) (import '[java.awt Color Graphics2D AlphaComposite]) (def tejimaya-image (ImageIO/read (new File "/Users/fukamachi/Desktop/tejimaya-LT/tejimaya2.png"))) (def *alpha* 0.8) (defn tejimayanize [image-path & alpha] (let [read-image (ImageIO/read (File. (str "/Users/fukamachi/Desktop/tejimaya-LT/" image-path)))] (doto (.createGraphics read-image) (.setComposite (AlphaComposite/getInstance AlphaComposite/SRC_OVER (or alpha *alpha*))) (.drawImage tejimaya-image 0 0 nil)) (ImageIO/write read-image "png" (File. "/Users/fukamachi/Desktop/tejimayanized.png"))))
    8. 8. ... Java
    9. 9. Lisp Java
    10. 10. ..
    11. 11. Lisp Java --
    12. 12. Clojure
    13. 13. Web
    14. 14. Lisp Web • Lisp Web • Lisp • (OSS )
    15. 15. Lisp Web • Lisp Web • Lisp • (OSS ) •
    16. 16. Lisp Web • Lisp Web • Lisp • (OSS ) • •
    17. 17. Clojure
    18. 18. Lisp Web • Clojure JavaVM
    19. 19. Lisp Web • Clojure JavaVM • Google AppEngine
    20. 20. Google AppEngine • Java Web
    21. 21. Google AppEngine • Java Web •
    22. 22. Common Lisp
    23. 23. Common Lisp •
    24. 24. Common Lisp • • SBCL
    25. 25. Common Lisp • • SBCL • Hunchentoot
    26. 26. Common Lisp • • SBCL • Hunchentoot • MySQL
    27. 27. Clojure
    28. 28. Clojure •
    29. 29. Clojure • •
    30. 30. Clojure • • •→
    31. 31. AppEngine
    32. 32. • Clojure
    33. 33. • Clojure • Clojure Lisp
    34. 34. • Clojure • Clojure Lisp • Clojure Java
    35. 35. • Clojure • Clojure Lisp • Clojure Java • Clojure Java

    ×