SlideShare a Scribd company logo
1 of 27
Leiningen超速入門 @Kuchitama
自己紹介

  • @Kuchitama
  • フリュー株式会社勤務
   - www.furyu.jp
  • 社会人1年と1ヶ月
  • Java/Scala/AS3/Clojure
Leiningen超速入門
自己紹介
                             キモ
  • @Kuchitama                  イ 画像
  • フリュー株式会社勤務               すい
                                ませ
                                   晒し
                                     て
   - www.furyu.jp                  ん

  • 社会人1年と1ヶ月
  • Java/Scala/AS3/Clojure
Leiningen超速入門
基本スタンス


  • とにかく書いてみる
  • まずは手を動かす


Leiningen超速入門
目次
   • Leiningenとは
   • メリット
   • 使ってみた
     - プロジェクト作成
     - 依存関係の解決
     - テスト
     - パッケージング
    • まとめ
Leiningen超速入門
Leiningenとは
  • ライニンゲン(独)らしい
  • Clojureプロジェクトのビルドツール
  • デファクトスタンダード
   - jarの依存関係解決
  • maven2リポジトリから取得
  • Clojure未インストール環境でも動作
   - Javaさえあれば!
Leiningen超速入門
メリット

  • 超お手軽インストール
   - ●nix
   - windows
  • 実行環境の構築
  • Java資産の再利用

Leiningen超速入門
使ってみよう

  • インストール
  • ライブラリ取得
  • テスト
  • パッケージング

Leiningen超速入門
使ってみよう1


             インストール
   • For Unix/Linux
  1.スクリプトをダウンロードし、パスを通す
  https://raw.github.com/technomancy/leiningen/stable/
  bin/lein
  2.実行権限の設定
  $ chmod a+x /YOUR_PATH/lein
  3.self-updateの実行
  下記コマンドを実行することで、インストール完了。
  $ lein self-install
Leiningen超速入門
使ってみよう2


  プロジェクトの作成
  • 次のコマンドを実行
   • lein new [プロジェクト名]
   $ lein new KyotoCljSample
  • プロジェクトが作成される




Leiningen超速入門
使ってみよう2


   プロジェクトの作成
  KyotoCljSample
                   README
                   project.clj
                   src
                   test
                   lib

Leiningen超速入門
使ってみよう2


   プロジェクトの作成
  KyotoCljSample
                   README
                   project.clj
                   src
                   test
                   lib

Leiningen超速入門
使ってみよう2


  プロジェクトの作成
   (defproject KyotoCljSample "1.0.0-SNAPSHOT"
   :description "FIXME: write description"
   :dependencies [[org.clojure/clojure "1.3.0"]])




Leiningen超速入門
使ってみよう2


  プロジェクトの作成
   (defproject KyotoCljSample "1.0.0-SNAPSHOT"
   :description "FIXME: write description"
   :dependencies [[org.clojure/clojure "1.3.0"]
                 [org.clojure/clojure-contrib "1.2.0"]])



   $lein deps
Leiningen超速入門
使ってみよう2


   プロジェクトの作成
  KyotoCljSample
                   ・・・
                   ・・・
               lib
                         clojure-1.3.0.jar	

                         clojure-contrib-1.2.0.jar

Leiningen超速入門
使ってみよう2


  プロジェクトの作成
   Clojars http://clojars.org/




Leiningen超速入門
使ってみよう2


   プロジェクトの作成
  KyotoCljSample
                   README
                   project.clj
                   src
                   test
                   lib

Leiningen超速入門
使ってみよう2


  プロジェクトの作成
       src
              KyotoCljSample
                    core.clj
       test     KyotoCljSample
                    test       core.clj

Leiningen超速入門
使ってみよう2


  プロジェクトの作成
   (ns KyotoCljSample.core)
   (def wrap-p-tag [str-seq]
        ; 与えられたシーケンスを<p></p>でくくる


       (map #(format “<p>%s</p>” %) str-seq)
   )




Leiningen超速入門
使ってみよう2


  プロジェクトの作成
   KyotoCljSample/core.clj
   (ns KyotoCljSample.core)
   (def wrap-p-tag [str-seq]
        ; 与えられたシーケンスを<p></p>でくくる


       (map #(format “<p>%s</p>” %) str-seq)
   )



Leiningen超速入門
使ってみよう2


  プロジェクトの作成
       core.clj
   (ns KyotoCljSample.core)
   (def wrap-p-tag [str-seq]
        ; 与えられたシーケンスを<p></p>でくくる


       (map #(format “<p>%s</p>” %) str-seq)
   )



Leiningen超速入門
使ってみよう3


       テスト実施
       src
              KyotoCljSample
                    core.clj
       test     KyotoCljSample
                    test       core.clj

Leiningen超速入門
使ってみよう3


              テスト実施
         test/core.clj

   (ns KyotoCljSample.test.core
     (:use [KyotoCljSample.core])
     (:use [clojure.test]))
   (deftest wrap-test ;; wrap-p-tagがちゃんと動くか
     (is (= (wrap-p-tag ["Welcome" "Kyoto" "clj"])
       ["<p>Welcome</p>" "<p>Kyoto</p>" "<p>clj</p>"])

      "ちゃんとくくれてない"))

Leiningen超速入門
使ってみよう3


                 テスト実施
   $ lein test


   > Testing KyotoCljSample.test.core
   >
   > Ran 1 tests containing 1 assertions.
   > 0 failures, 0 errors.


Leiningen超速入門
使ってみよう4


       パッケージング
   $ lein uberjar

  KyotoCljSample
                    ・・・
                    KyotoCljSample-1.0.0-
                      SNAPSHOT-standalone.jar
                    KyotoCljSample-1.0.0-
                              SNAPSHOT.jar

Leiningen超速入門
まとめ

  • あっという間にClojure環境構築
  • 使いたいライブラリを速攻ゲット
  • テストまで出来る
  • 超お手軽パッケージング

Leiningen超速入門
参考サイト


  • Clojure@wiki : http://www16.atwiki.jp/clojure/
  • GitHub: http://github.com/kuchitama/hentai


Leiningen超速入門

More Related Content

What's hot

Clojureの発表など
Clojureの発表などClojureの発表など
Clojureの発表など
Kikuta Go
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
 
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
Toshimichi Suekane
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
Sea Mountain
 
Java/phpからのOracle接続(debian)
Java/phpからのOracle接続(debian)Java/phpからのOracle接続(debian)
Java/phpからのOracle接続(debian)
Kimiyuki Yamauchi
 
Scala.jsはじめました?
Scala.jsはじめました?Scala.jsはじめました?
Scala.jsはじめました?
K Kinzal
 
Introductionof taskflow
Introductionof taskflowIntroductionof taskflow
Introductionof taskflow
harubelle
 

What's hot (20)

gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
gulp + sass で目指せ倍速コーディング(東区フロントエンド勉強会 2015年 第1回) 環境準備編
 
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのかJavaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
Javaの進化にともなう運用性の向上はシステム設計にどういう変化をもたらすのか
 
Clojureの発表など
Clojureの発表などClojureの発表など
Clojureの発表など
 
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
 
Scala.jsはじめました!
Scala.jsはじめました!Scala.jsはじめました!
Scala.jsはじめました!
 
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
gulp + sass で目指せ倍速コーディング(第2回 gulpfile.jsの分割管理と画像作成の効率化)
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状についてClojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
Clojure の各種React系ラッパーライブラリのサーバーサイドレンダリングの現状について
 
ClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろうClojureでElectronアプリを作ろう
ClojureでElectronアプリを作ろう
 
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Alibaba Cloud で Docker を動かしてみよう [Hands-on]Alibaba Cloud で Docker を動かしてみよう [Hands-on]
Alibaba Cloud で Docker を動かしてみよう [Hands-on]
 
minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳
 
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
 
Gulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くするGulp入門 - コーディングを10倍速くする
Gulp入門 - コーディングを10倍速くする
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
 
Java/phpからのOracle接続(debian)
Java/phpからのOracle接続(debian)Java/phpからのOracle接続(debian)
Java/phpからのOracle接続(debian)
 
Scala.jsはじめました?
Scala.jsはじめました?Scala.jsはじめました?
Scala.jsはじめました?
 
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
 
Introductionof taskflow
Introductionof taskflowIntroductionof taskflow
Introductionof taskflow
 

Similar to Leiningen超速入門

Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
kojiokb
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
hiro345
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CI
kanabuchi
 

Similar to Leiningen超速入門 (20)

React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
ocamloptの全体像
ocamloptの全体像ocamloptの全体像
ocamloptの全体像
 
Cryogenでサイトつくろーじぇん
CryogenでサイトつくろーじぇんCryogenでサイトつくろーじぇん
Cryogenでサイトつくろーじぇん
 
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
Deep Learning Implementations: pylearn2 and torch7 (JNNS 2015)
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
LAMMPS クラウド活用勉強会説明資料(Rescale編) 2017/01/24
LAMMPS クラウド活用勉強会説明資料(Rescale編) 2017/01/24LAMMPS クラウド活用勉強会説明資料(Rescale編) 2017/01/24
LAMMPS クラウド活用勉強会説明資料(Rescale編) 2017/01/24
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
Osoljp201210 oi swift
Osoljp201210 oi swiftOsoljp201210 oi swift
Osoljp201210 oi swift
 
Haikara
HaikaraHaikara
Haikara
 
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
 
Nseg20120929
Nseg20120929Nseg20120929
Nseg20120929
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
SwaggerとAPIのデザイン
SwaggerとAPIのデザインSwaggerとAPIのデザイン
SwaggerとAPIのデザイン
 
Lightweight Keycloak
Lightweight KeycloakLightweight Keycloak
Lightweight Keycloak
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
OpenStack on OpenStack with CI
OpenStack on OpenStack with CIOpenStack on OpenStack with CI
OpenStack on OpenStack with CI
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 

More from Kiyotaka Kunihira

Mackerel Day#2 チェック監視が救う!!エンジニア0カンパニー
Mackerel Day#2 チェック監視が救う!!エンジニア0カンパニーMackerel Day#2 チェック監視が救う!!エンジニア0カンパニー
Mackerel Day#2 チェック監視が救う!!エンジニア0カンパニー
Kiyotaka Kunihira
 

More from Kiyotaka Kunihira (20)

Mackerel Day#2 チェック監視が救う!!エンジニア0カンパニー
Mackerel Day#2 チェック監視が救う!!エンジニア0カンパニーMackerel Day#2 チェック監視が救う!!エンジニア0カンパニー
Mackerel Day#2 チェック監視が救う!!エンジニア0カンパニー
 
着任したエンジニアをスムーズにテイクオフさせる道具だて
着任したエンジニアをスムーズにテイクオフさせる道具だて着任したエンジニアをスムーズにテイクオフさせる道具だて
着任したエンジニアをスムーズにテイクオフさせる道具だて
 
React native実践談
React native実践談React native実践談
React native実践談
 
ガチのスタートアップがScalaを採用した結果(公開版) #scala_ks
ガチのスタートアップがScalaを採用した結果(公開版) #scala_ksガチのスタートアップがScalaを採用した結果(公開版) #scala_ks
ガチのスタートアップがScalaを採用した結果(公開版) #scala_ks
 
ここが変だよRuby/RoR #rubykansai
ここが変だよRuby/RoR #rubykansaiここが変だよRuby/RoR #rubykansai
ここが変だよRuby/RoR #rubykansai
 
時をかける開発 #devtool_night
時をかける開発 #devtool_night時をかける開発 #devtool_night
時をかける開発 #devtool_night
 
DevLove関西 - ShareWisの文化を支えるエンジニアリング
DevLove関西 - ShareWisの文化を支えるエンジニアリングDevLove関西 - ShareWisの文化を支えるエンジニアリング
DevLove関西 - ShareWisの文化を支えるエンジニアリング
 
スタートアップとScala
スタートアップとScalaスタートアップとScala
スタートアップとScala
 
オリジナル社内ツールの末路
オリジナル社内ツールの末路オリジナル社内ツールの末路
オリジナル社内ツールの末路
 
GitBucketPlugin@2014忘年度会
GitBucketPlugin@2014忘年度会GitBucketPlugin@2014忘年度会
GitBucketPlugin@2014忘年度会
 
アジャイルな新婚旅行
アジャイルな新婚旅行アジャイルな新婚旅行
アジャイルな新婚旅行
 
もがいているエンジニア集まれ~今度こそ英語をモノにしよう~
もがいているエンジニア集まれ~今度こそ英語をモノにしよう~もがいているエンジニア集まれ~今度こそ英語をモノにしよう~
もがいているエンジニア集まれ~今度こそ英語をモノにしよう~
 
とりあえず使えるSBT
とりあえず使えるSBTとりあえず使えるSBT
とりあえず使えるSBT
 
Scala開発チームの挑戦-技術編-@DevLove2014
Scala開発チームの挑戦-技術編-@DevLove2014Scala開発チームの挑戦-技術編-@DevLove2014
Scala開発チームの挑戦-技術編-@DevLove2014
 
気が狂わないサーバ増設x10
気が狂わないサーバ増設x10気が狂わないサーバ増設x10
気が狂わないサーバ増設x10
 
GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?GitBucketで社内OSSしませんか?
GitBucketで社内OSSしませんか?
 
仕事のゲーム化でやる気モードに変える
仕事のゲーム化でやる気モードに変える仕事のゲーム化でやる気モードに変える
仕事のゲーム化でやる気モードに変える
 
プログラマが 引っ越しで気をつける 3つのこと
プログラマが 引っ越しで気をつける 3つのことプログラマが 引っ越しで気をつける 3つのこと
プログラマが 引っ越しで気をつける 3つのこと
 
Ec2 automation framework
Ec2 automation frameworkEc2 automation framework
Ec2 automation framework
 
Chefとかプロビジョニングまわり
ChefとかプロビジョニングまわりChefとかプロビジョニングまわり
Chefとかプロビジョニングまわり
 

Recently uploaded

Recently uploaded (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Leiningen超速入門

  • 2. 自己紹介 • @Kuchitama • フリュー株式会社勤務 - www.furyu.jp • 社会人1年と1ヶ月 • Java/Scala/AS3/Clojure Leiningen超速入門
  • 3. 自己紹介 キモ • @Kuchitama イ 画像 • フリュー株式会社勤務 すい ませ 晒し て - www.furyu.jp ん • 社会人1年と1ヶ月 • Java/Scala/AS3/Clojure Leiningen超速入門
  • 4. 基本スタンス • とにかく書いてみる • まずは手を動かす Leiningen超速入門
  • 5. 目次 • Leiningenとは • メリット • 使ってみた - プロジェクト作成 - 依存関係の解決 - テスト - パッケージング • まとめ Leiningen超速入門
  • 6. Leiningenとは • ライニンゲン(独)らしい • Clojureプロジェクトのビルドツール • デファクトスタンダード - jarの依存関係解決 • maven2リポジトリから取得 • Clojure未インストール環境でも動作 - Javaさえあれば! Leiningen超速入門
  • 7. メリット • 超お手軽インストール - ●nix - windows • 実行環境の構築 • Java資産の再利用 Leiningen超速入門
  • 8. 使ってみよう • インストール • ライブラリ取得 • テスト • パッケージング Leiningen超速入門
  • 9. 使ってみよう1 インストール • For Unix/Linux 1.スクリプトをダウンロードし、パスを通す https://raw.github.com/technomancy/leiningen/stable/ bin/lein 2.実行権限の設定 $ chmod a+x /YOUR_PATH/lein 3.self-updateの実行 下記コマンドを実行することで、インストール完了。 $ lein self-install Leiningen超速入門
  • 10. 使ってみよう2 プロジェクトの作成 • 次のコマンドを実行 • lein new [プロジェクト名] $ lein new KyotoCljSample • プロジェクトが作成される Leiningen超速入門
  • 11. 使ってみよう2 プロジェクトの作成 KyotoCljSample README project.clj src test lib Leiningen超速入門
  • 12. 使ってみよう2 プロジェクトの作成 KyotoCljSample README project.clj src test lib Leiningen超速入門
  • 13. 使ってみよう2 プロジェクトの作成 (defproject KyotoCljSample "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.3.0"]]) Leiningen超速入門
  • 14. 使ってみよう2 プロジェクトの作成 (defproject KyotoCljSample "1.0.0-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.3.0"] [org.clojure/clojure-contrib "1.2.0"]]) $lein deps Leiningen超速入門
  • 15. 使ってみよう2 プロジェクトの作成 KyotoCljSample ・・・ ・・・ lib clojure-1.3.0.jar clojure-contrib-1.2.0.jar Leiningen超速入門
  • 16. 使ってみよう2 プロジェクトの作成 Clojars http://clojars.org/ Leiningen超速入門
  • 17. 使ってみよう2 プロジェクトの作成 KyotoCljSample README project.clj src test lib Leiningen超速入門
  • 18. 使ってみよう2 プロジェクトの作成 src KyotoCljSample core.clj test KyotoCljSample test core.clj Leiningen超速入門
  • 19. 使ってみよう2 プロジェクトの作成 (ns KyotoCljSample.core) (def wrap-p-tag [str-seq] ; 与えられたシーケンスを<p></p>でくくる (map #(format “<p>%s</p>” %) str-seq) ) Leiningen超速入門
  • 20. 使ってみよう2 プロジェクトの作成 KyotoCljSample/core.clj (ns KyotoCljSample.core) (def wrap-p-tag [str-seq] ; 与えられたシーケンスを<p></p>でくくる (map #(format “<p>%s</p>” %) str-seq) ) Leiningen超速入門
  • 21. 使ってみよう2 プロジェクトの作成 core.clj (ns KyotoCljSample.core) (def wrap-p-tag [str-seq] ; 与えられたシーケンスを<p></p>でくくる (map #(format “<p>%s</p>” %) str-seq) ) Leiningen超速入門
  • 22. 使ってみよう3 テスト実施 src KyotoCljSample core.clj test KyotoCljSample test core.clj Leiningen超速入門
  • 23. 使ってみよう3 テスト実施 test/core.clj (ns KyotoCljSample.test.core (:use [KyotoCljSample.core]) (:use [clojure.test])) (deftest wrap-test ;; wrap-p-tagがちゃんと動くか (is (= (wrap-p-tag ["Welcome" "Kyoto" "clj"]) ["<p>Welcome</p>" "<p>Kyoto</p>" "<p>clj</p>"]) "ちゃんとくくれてない")) Leiningen超速入門
  • 24. 使ってみよう3 テスト実施 $ lein test > Testing KyotoCljSample.test.core > > Ran 1 tests containing 1 assertions. > 0 failures, 0 errors. Leiningen超速入門
  • 25. 使ってみよう4 パッケージング $ lein uberjar KyotoCljSample ・・・ KyotoCljSample-1.0.0- SNAPSHOT-standalone.jar KyotoCljSample-1.0.0- SNAPSHOT.jar Leiningen超速入門
  • 26. まとめ • あっという間にClojure環境構築 • 使いたいライブラリを速攻ゲット • テストまで出来る • 超お手軽パッケージング Leiningen超速入門
  • 27. 参考サイト • Clojure@wiki : http://www16.atwiki.jp/clojure/ • GitHub: http://github.com/kuchitama/hentai Leiningen超速入門

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n