JJUG CCC 2015 Fallに行ってきた

JJUG CCC 2015 Fallに参加してきました。
聴講したのは控えめに次の5つ。

  • Struts&独自フレームワーク!今からでも遅くないJava EE Web開発入門ハンズオン!by 多田 真敏
  • Reactive Webアプリケーション – そしてSpring 5へby making
  • タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-by 田中孝清(日本IBM)
  • これからのコンピューティングの変化とJavaby きしだなおき
  • Java8 Stream APIApache SparkとAsakusa Frameworkの類似点・相違点by ひしだま


Java EE7は触ったことがなくて知識もなかったので、話を聞くより分かりやすいかなと思って参加してみました。しかも、カサレアルさんということは研修のプロってことでその他のセッションを捨ててこちらに参加することを決意。
ハンズオンの環境はこちらmasatoshitada.hatenadiary.jp
今回はPayara、JDK8、NetBeansというかんじ。準備は前日に済ませておいた。
現在にトレンド話をチラリ。トレンドはJavaEE or Spring Frameworkで、「一般的」の最上級?の「標準」ということで、JavaEEとのこと。

架空の社員管理システムをJSFJAX-RSとJersey MVCで作ってみようというものでした。
JSFコンポーネントベースは個人的にちょっと気持ち悪かった。
JAX-RS、よさげ。でもJSFにも共通することだが、アノテーション多すぎ。引数の文字列とかタイプミスしてはまりそう。
Jerser MVCは時間切れでデモだけでした。(まあ、2時間じゃ仕方ないか。)アクションベースが良ければMVC1.0への繋ぎ(2020年くらいまで?)で使えば良いらしい。
というわけで、Java EE7時代?の選択肢は、Java EE7標準にこだわりたいならJSFJavaScriptフレームワークやモバイル連携にこだわりたいならJAX-RS。アクションベースならJersey MVCからのMVC1.0とのことでした。

ハンズオンやりながら話を聞いてすごく分かりやすかったです。準備も大変だとお察しします。ありがとうございました。
あと、オススメ本を色々紹介してくださったので読んでみよう。

Reactiveということで、今回一番聞きたかったセッション。発表のテンポが良く、楽しく聞かせて頂きました。
Spring5で端から端までReactive Streamsで繋がるよという話で、Typesafeのプラットフォームの方が進んでるなって実感したこと(makingもすぐ使いたかったらPlayでとおっしゃってました)と、Springもそっちに向いているとうことが知れて良かった。
ブロッキングは金だという話はまさにそうで、金さえ出せばある程度までは解決できてしまうというのもアレなので、売り込み方が難しい。。
どちらにせよSpringの未来も楽しそう。


タイムマシン採用ってことで、新しい技術はWeb系企業で採用が進んで、実績ができた数年後にSIで採用されるので、Web系企業の同行を見ればエンタープライズの将来が分かる(らしい)という話。
これから採用されることが確実な技術として、HTML5、マイクロサービス、Java EE7、SE8、Docker、CHEFのお話をされていました。
こちらでもJavaEEを採用する価値として「標準」である強みっていう話がありました。「標準」恐るべし。。

SIはWeb系企業の動向を見てればいいというのは、ちょっと寂しい話ですが、一言でSIと言っても色々あって適材適所、向いてる分野向いてない分野、向いてる技術向いてない技術ってのがあると思うので、きっちり見極めていきたいですね。

ともあれ、新しい技術をSIで採用することの難しさに共感です。。

今回は普段よりちょっとだけ視野を広げて話を聞けて良かった。発表者の方々、スタッフの方々、ありがとうございました!

そして、なぜか翌日、Javaエンジニア養成読本を読んでました。

Javaエンジニア養成読本[現場で役立つ最新知識、満載!]

Javaエンジニア養成読本[現場で役立つ最新知識、満載!]

「Scala Conference in Japan 2013」に行ってきました。

「Scala Conference in Japan 2013」に行ってきたので参加報告を書きます。

f:id:yugolf:20130302175008j:plain

「日本初となるScalaに関する海外からのゲストスピーカーも招いた大規模な有料イベント」ということで、「東京工業大学 大岡山キャンパス」まで行って来ました。

参加枠200名も1週間経たずして埋まり、70名以上のキャンセル待ちが出るという人気ぶり。Scalaの注目度が伺えます。

オープニングでは事務局水島さんがカンファレンスに対する想いを語られました。

Scalaは海外コミュニティとの交流が少ない、日本からのコントリビュートが少ない、そんな溝を埋めたいという熱いお話でした。
Play2の登場でScala界隈がにわかに盛り上がってきたものの、まだまだノウハウが共有されていないという問題提起もありました。
まさに、このカンファレンスが交流の場・ノウハウ共有の場ですね。

今回、私は次のセッションに参加しました。

参加セション一覧

私自身、まだまだScalaを勉強し始めたところだったので、どの発表もレベルが高く、大変勉強になりました。
個人的に特に良かったのは最後の2セッションでした。

「使ってわかったScalaのここがダメ!Play2によるシステム開発事例」

いつもお世話になっている「Scala逆引きレシピ」の著者であるNTTデータ竹添さんのご講演。

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Scala逆引きレシピ (PROGRAMMER’S RECiPE)


なぜ、Scalaをやっているのか?
Webアプリ開発を効率化する上でJavaに限界を感じた。これ以上効率が上がらないのではないか?
・・・想いは同じです。

Seasar2で作ってたWebシステムを半年くらいかけてPlayに置き換えたことにより、
コード量が40-50%削減出来たしバグも減ったとのこと。

  • 型推論
  • Javaライブラリが使えるし、部分的にJavaも書ける。
  • 柔軟性と安全性の絶妙なバランスを保っている

・・・

Scalaのいいところをひと通りお話された後、ここがダメ的な話に入りました。


コンパイルが遅い
Javaと比較にならないくらい遅い。開発効率に影響あるくらい遅い。
私は今のところ、ちっちゃなお試しアプリしか作ってないのでそんなに気にならないですが、今後の課題ですね。

解決策としては、チーム全員分良いマシンを買う!
それから、ビルドを自動化して体感時間を減らす。

ScalaIDEが遅い
これも辛い。
解決策は、インクリメンタルビルダーを切るとかコード補完を切るとか、切実です。
最終兵器はテキストエディタ!?
そういえば、私も最近コード補完を切ってました。
IntelliJを使えば、そんなことないのかな??

SBTがSimple Build Toolじゃない
SBTはIvy上で動いているので、問題が起こったときにどちらが悪いかの切り分けが難しい。
Ivyはローカルリポジトリとキャッシュの2段階だったり、バージョンアップが頻繁だったり。。。
Play2がSBTに依存していてバージョンを上げれなかったり。という問題があるそうです。

Play2もコンパイルが遅い(ここからはPlay2の話)
Seasar2のHotDeployの10倍遅いそうです。
コンパイルのスピードは開発リズムに影響するのでちょっと問題ですね。

Seasar2ホットデプロイは、APサーバの再起動無しにビルド結果が即アプリケーションに反映されるので、ちょっと書いて、すぐに動かしてみて、また、ちょっと書いてというリズムで開発できるので効率がいい。
ガッツリコードを書いてから動かすというスタイルじゃないので、実装をミスってても問題箇所を特定するのも容易。
このリズムに慣れているとちょっとつらいんじゃないかと思う。
Seasar2はコードを保存した瞬間にビルドしているがPlay2は実行時?のため、仕組み上仕方がないという説も。

こちらも解決策は、良いマシンを買う。メモリをいっぱい積む。16G!?
設計的になるべくJarを分割したほうがということもお話されていました。

また、CSSJavaScript、画像ファイルを大量に使用している場合の問題に対して、ブラウザに出来るだけキャッシュさせ、発生するリクエストを減らし高速化するという「play2-fastassets」を作成されたそうです。
詳しくはこちらのブログで紹介されています。

Validationまわりが弱い
クライアントサイドで仕組み的に考慮されていない。エラーメッセージの柔軟性が考慮されていない。

独自のヘルパーを作りましょう。

Anormがシンプルすぎる
SQLが中心でタイプセーフじゃない。Magicが廃止された。
動的SQLをサポートしていない。

といわけで、ScalaQueryを使うべき。ただ、動的なクエリは自作しましょう。
S2JDBCを持ってきた?という「mirage-scala」も紹介して頂きました。
書きっぷりもS2JDBCそっくりで、かなり使いやすそう。

Function22問題。Playは18。
function typeは22まで、Playだと18になるので注意。
ネストで解決するんだけど、最初は大丈夫って思っていて途中で増えた時に最初から分割しておけば良かったって後悔する。
ありそうですね。注意しよう。

サーブレットコンテナ上で動かない。
技術的ではない要因によって動かさないとダメな時もある・・・。
HttpSessionが使えなかったり。
こちらのブログにも書かれていますが、既存システムのポーティングという時にScalaが選択肢から外れてしまうのは悲しいです。

そこで、まだまだ解決すべき課題はあるようですが、play2-war-pluginplay2-httpsessionに期待ですね。

他にも多くのプロダクトを作成されGitHubで公開されているとのことでした。

最後にもう一度、
Scalaは実践的・実用的な言語なので、業務として使って行きましょう!」
ただ、トラブルになるとScalaのイメージが悪くなってしまうので、注意深く、慎重に。
そのとおりですね。イメージ大事!

Scalaはまだ成長過程の言語だし、私は当時のことをよく知りませんが、今の状態は10年くらい前Javaも通ってきた道だそうです。
様々な問題も時間が解決してくれることもあるだろうし、待っているだけでなく、Scalaの成長に貢献できるいいタイミング、ないものは自分たちで作ればいいという、大変説得力のあるお話でした。

LTでもScalaGitHub時代の言語だとおっしゃられていました。
そういう意味では成長のスピードはJavaよりも早いのかな?

ちょうどカンファレンス直前にこういうの欲しいと思ってた機能がプルリクエストされていて、取り込まれるといいなと思ってたら、あっという間に本流に取り込まれていたということがありました。


・・・X時間後。

awesome!

これがGitHub時代の言語か、Scala成長への貢献かと思い起こしながら話を聞いていました。

竹添さんのおっしゃるように最初のイメージが大事なので、業務で使うにはまだまだ勉強が必要だと感じさせられた一日でした。

聞いた話は書ききれませんが、色々勉強しないとと思ったキーワードをメモ。

・・・
スライドが公開されたらじっくり見返してみよう。

「Play Framework - The modern web framework that packs a punch」

そして、最後のJames Roperさんのライブコーディングは圧巻でした。
Play newからスタートしてあっという間に作成されたフィードバックアプリは魔法のようでした。


Scalaすごい。
Playすごい。
IntelliJすごい。
James Roperさんすごい。
IntelliJすごい。

生で見れてよかったと心から思います。

カッコヨスギ。


最後にこういう機会を与えてくださったスタッフの皆様、講演者の皆様、ありがとうございました。
次回も是非参加したいです。


tweets

あ、そういえば、B会場がいっぱいで土佐さんの利用事例のお話が聞けなかった事が唯一の後悔。
もっとササット移動するんだった。。
f:id:yugolf:20130302110704j:plain

Eclipse(Windows)からGitHubにプッシュする。

GitHubにリポジトリを作って、前回作成したplay2のデフォルトアプリをプッシュします。

GitHubとは、Gitのホスティングサービスで、全世界の人たちとコードを共有出来る場所を提供してくれます。
全世界というと大げさなので、友人とか同僚とかとですね。

今回は、会社の仲間とソーシャルスタディという勉強会をはじめたので、その仲間とコードを共有して行く目的で使って行きます。
ソーシャルスタディの詳しい話は、また別のブログに書きます。

Gitは?っていうと、分散型バージョン管理システム
Subversionリポジトリをサーバに集中させるので集中型といいますが、それに対してGitはサーバ上にリモートリポジトリを置いて、
さらに、開発者の端末にローカルリポジトリを配置するので分散型なのです。

何が嬉しいのかというと、自分の端末にリポジトリがあるのでオフラインでも使えますし、コミットを失敗して仲間に迷惑をかけることもありません。
リモートリポジトリにPushするまでは、気兼ねなくコミットが出来ます。
最近特にGitがいいな、と思うのは複数コミットをひとつにまとめられること。
細かくコミットされているとコードレビューにかなり苦労していたりします。

詳しくは「サルでもわかるGit入門」を。

では、GitHubのアカウントの作成から、リポジトリを作って、play2のアプリをプッシュするところまで行きます。

1. Gitのインストール

以下のサイトからGit for Windowsをダウンロードします。

http://msysgit.github.com/

ダウンロードしたインストーラを起動します。
執筆時の最新は「Git-1.8.1.2-preview2013201.exe」
「Next」
f:id:yugolf:20130219013541p:plain

「Next」
f:id:yugolf:20130219013550p:plain

任意のインストール先を入力して「Next」
f:id:yugolf:20130219013602p:plain

「Next」
f:id:yugolf:20130219013617p:plain

「Next」
f:id:yugolf:20130219013627p:plain

「Checkout Windows-style,commit Unix-style line endings」のまま「Next」
Checkoutの時の改行コードは「CRLF」、コミットの時は「LF」。
f:id:yugolf:20130219013744p:plain

2つ目の「Run Git from the Windows Command Prompt」を選択し「Next」
EclipseからもGitを使うのでこうしておいた方が良さそう。
f:id:yugolf:20130219013748p:plain

「Finish」
f:id:yugolf:20130219013822p:plain
これで「Git for Windows」のインストール完了です。

続いて、「Git Bash」を起動してGitの設定をしておきます。
設定するのは名前とメールアドレス。

名前:yugolf
メールアドレス:xxx@gmail.com

上記の場合は以下のコマンドを実行。

git config --global user.name "yugolf"
git config --global user.email "xxxx@gmail.com"

※プロキシ環境化の場合は、プロキシの設定も必要です。

git config --global <プロキシサーバ名>:<ポート>

2. GitHubのアカウント作成

GitHubのページからアカウントを作成します。
ユーザ名、メールアドレス、パスワードを入力し「Sign up for free」。Freeです。
f:id:yugolf:20130219014638p:plain

3. SSH Keyの設定

「Git Bash」から以下のコマンドを実行しSSH Keyを作成します。

ssh -keygen -t rsa -C "xxxx@gmail.com"

パスワードを設定するよう要求されるので、パスワードを2回入力。

先ほど作成したアカウントでGitHubにログインし、SSH Keyを登録します。
画面右上の「Account settings」をクリック。
f:id:yugolf:20130220011532p:plain
画面左のSSH Keys」をクリックし、右上「Add SSH key」をクリック。
f:id:yugolf:20130220010137p:plain
下に出てくる「Add an SSH Key」に、任意の「Title」を設定し、「Key」には先ほど作成した「SSH Key」を貼付けます。
貼付けるのは「C:¥Documents and Settings¥<ユーザ名>¥.ssh」にある「id_rsa.pub」の内容をそのままでOK。

4. リポジトリの作成

画面右上の「Create a new repo」からGitHubにリモートリポジトリを作成します。
f:id:yugolf:20130220010856p:plain
「Repository name」「Description」を入力、「Public」を選択し、「Create repository」をクリックするとリポジトリが作成されます。
f:id:yugolf:20130219015454p:plain

5. EclipseのプラグインEgitをインストール

Eclipseを起動し、「ヘルプ」->「新規ソフトウェアのインストール」を選択します。
f:id:yugolf:20130211000528p:plain
作業対象で「Juno - http://download.eclipse.org/releases/juno」を選択し、表示された「名前」から「コラボレーション」の「Eclipse EGit」と名のつくものをすべてチェックします。
選択肢にない場合は、「追加」から追加しましょう。
Pleiades All in oneを使った場合は、既にインストールされているものもあります。

「次へ」・・・と流れに従ってインストール。
f:id:yugolf:20130220011829p:plain

6. Eclipseの設定

Eclipseから「ウィンドウ」->「設定」を選択し、「設定」画面を表示します。
画面左のメニューから「チーム」->「Git」を選択、「複製リポジトリー」の「デフォルト・フォルダー」は
「C:¥Documents and Settings¥<ユーザ名>¥.git」とし、「OK」。
既に設定されている場合は、特に変更しなくてもOK。
f:id:yugolf:20130220012525p:plain

ついでに「構成」の内容も確認しておきましょう。
「Git Bush」で設定したユーザ名、メールアドレス、プロキシ(設定した人のみ)が設定されているはずです。
f:id:yugolf:20130220013121p:plain
f:id:yugolf:20130220013133p:plain

7. play2アプリケーションをローカルリポジトリにコミット

pay2のアプリケーションを「GitHub」で共有します。
「パッケージ・エクスプローラー」でplay2のアプリケーションを右クリックし、「チーム」->「プロジェクトの共用」を選択。
f:id:yugolf:20130220020006p:plain
もちろん「Git」を選択し「次へ」。
f:id:yugolf:20130220020132p:plain
「プロジェクトの親フォルダー内のリポジトリーを使用または作成」をチェックしリポジトリの作成」をクリック後「次へ」。
これをチェックするとEclipseのworkspaceにローカルリポジトリが作成されるのですが、この設定にしないとGitHubにプッシュした時に余計なディレクトリ階層が1個できてしまったので、チェックして進めます。
f:id:yugolf:20130220020249p:plain
プロジェクトがチーム共用となりました。
f:id:yugolf:20130220020331p:plain

続いて、ローカルリポジトリへコミット。
「パッケージ・エクスプローラー」でplay2のアプリケーションを右クリックし、「チーム」->「コミット」を選択。
f:id:yugolf:20130220013246p:plain
コミット・メッセージに「first commit」と入力し、コミットしたいファイルをチェック。「.target」と「bin」以外にします。
「Push the chages to upstream」をチェックし、一気にGitHubのリポジトリにプッシュします。
f:id:yugolf:20130220013542p:plain

8. play2アプリケーションをGitHubにプッシュ

「宛先Gitリポジトリー」にプッシュするリポジトリを設定します。
f:id:yugolf:20130220013843p:plain
URI」を設定すると、自動的に「ホスト」「リポジトリー・パス」が設定されます。
プロトコルは「https」。
「認証」にはGitHubのユーザとパスワードを設定し「次へ」

URI」はGitHubのリポジトリ作成直後の画面から確認出来ます。
f:id:yugolf:20130220014026p:plain

「Add create/update specification」の「ソーズ参照」は「master」選択し「Add Spec」をクリック。
「Specification for プッシュ」に表示されたのを確認して、「完了」。

あとは流れに沿っていけば、GitHubへのプッシュが完了します。
f:id:yugolf:20130220014601p:plain
f:id:yugolf:20130220014622p:plain

GitHubのリポジトリを確認すると、play2のアプリケーションがプッシュされているのが分かります。
f:id:yugolf:20130220014724p:plain

これで、play2のアプリケーションは全世界に公開された事になります。

※コミット時にプッシュせず、あとからプッシュだけする場合は、「パッケージ・エクスプローラー」でプロジェクトを右クリックし、「チーム」->「リモート」->「プッシュ」からやります。
f:id:yugolf:20130220123433j:plain

今回はEclipseからのGit利用を紹介しましたが、GUIツールとして「TortoiseGit」や最近Windows向けのベータ版が出た「SourceTree for Windows」もあります。
でも現時点(2013.1)では「sourcetree-for-windows-beta-signup」は64bit版しかないようですね。

Eclipse(Windows)にPlay Frameworkの環境を作る。

前回、Eclipse上でScalaを使って開発するための環境が出来たので、続いてPlay Frameworkの環境を作ります。

1.Play Frameworkインストール

Play FrameworkWebサイトからダウンロード

http://www.playframework.org/download

「Get the latest official version」から「play-2.0.4.zip」をダウンロード。

「C:¥app」(任意)に解凍して、「C:¥app¥play-2.0.4」環境変数のpathに追加する。

2.Playプロジェクト作成

playコマンドでプロジェクトを作成する。

C:¥home¥project¥scala¥work>play new myApp
       _            _
 _ __ | | __ _ _  _| |
| '_ ¥| |/ _' | || |_|
|  __/|_|¥____|¥__ (_)
|_|            |__/

play! 2.0.4, http://www.playframework.org

The new application will be created in C:¥home¥project¥scala¥work¥myApp

What is the application name?
> myApp

Which template do you want to use for this new application?

  1 - Create a simple Scala application
  2 - Create a simple Java application
  3 - Create an empty project

> 1

OK, application myApp is created.

Have fun!

中身を覗いてみる。Controllersとかviewsとか出来てますね。

C:¥home¥project¥scala¥work>cd myApp

C:¥home¥project¥scala¥work¥myApp>tree
フォルダ パスの一覧
ボリューム シリアル番号は CXXX-XXXX です
C:.
├─app
│  ├─controllers
│  └─views
├─conf
├─project
└─public
    ├─images
    ├─javascripts
    └─stylesheets

3.Playアプリケーションの実行

これでWebアプリケーションが出来上がったので、「play run」で実行。
※myApp配下で実行して下さい。

C:¥home¥project¥scala¥work¥myApp>

C:¥home¥project¥scala¥work¥myApp>play run
[info] Loading project definition from C:¥home¥project¥scala¥work¥myApp¥project
[info] Set current project to myApp (in build file:/C:/home/project/scala/work/myApp/)

[info] Updating {file:/C:/home/project/scala/work/myApp/}myApp...
[info] Done updating.
--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on port 9000...

(Server started, use Ctrl+D to stop and go back to the console...)

最初はちょっと時間がかかるかも。

サーバが起動したようなので、Webブラウザでアクセスしてみる。
URLはこれ。

http://localhost:9000/

サンプルのアプリケーションが動いてこんな画面が出てきました。
f:id:yugolf:20130211181247p:plain
成功!

アプリケーションの停止は[Ctrl]+[D]
[Ctrl]+[C]とやっても止まりません。起動時のコンソールをよく見てみるとご丁寧に、書いてますね。

(Server started, use Ctrl+D to stop and go back to the console...)

4.プロジェクトをEclipseにインポート

「play eclipsify」Eclipse用の設定ファイルを生成。
※play2.1.0では「play eclipseとなっているようです。

C:¥home¥project¥scala¥work¥myApp>play eclipsify
[info] Loading project definition from C:¥home¥project¥scala¥work¥myApp¥project
[info] Set current project to myApp (in build file:/C:/home/project/scala/work/myApp/)
[info] About to create Eclipse project files for your project(s).
[info] Successfully created Eclipse project files for project(s):
[info] myApp

「.project」とかが生成されて無事Eclipseプロジェクトになったようなので、Eclipseにインポート

「ファイル」->「インポート」
f:id:yugolf:20130211183011p:plain

「既存プロジェクトをワークスペースへ」を選んで「次へ」
f:id:yugolf:20130211183022p:plain

「参照」から先ほど作成したプロジェクト「myApp」を選んで、「完了」。
f:id:yugolf:20130211183031p:plain

これで、Eclipseにプロジェクトとして取込まれました。

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Eclipse(Windows)でScalaの環境を作る。

当選確率(18%)のIntelliJ IDEAは残念ながら当たらなかったので、

EclipseScalaの環境を作った時の手順をまとめておく。

1.Eclipseのインストール

普段使っているやつを使う。

自分のPCに少し古いIndigoだが、Pleiades All in OneのJava Full All in One(JREあり)をベースに色々プラグインとか入れている環境があったので、そのまま利用することにした。

一応、Scala向けのAll in Oneがないか除いてみたが、やはりなかった。

2.Eclipseプラグインのインストール

ヘルプ->新規ソフトウェアのインストール
f:id:yugolf:20130211000528p:plain

追加から
f:id:yugolf:20130211000642p:plain

名前:Scala IDE for Eclipse
ロケーション:http://download.scala-ide.org/sdk/e37/scala29/stable/site/
を入力。
Juno(Eclipse4.2)やScala2.10の場合のロケーションはこちらを参照。
Download the Milestone

f:id:yugolf:20130211000710p:plain

インストールできるプラグインが出てくるので、とりあえず全部選択して「次へ」・・・
f:id:yugolf:20130211000742p:plain
の流れでインストール。

インストールが終わると「再起動?」と聞かれるので再起動しておく。
#いつものことだけど、このプラグインアップデート機能は不安定で時間がかかったり、固まったりするけど、ここは我慢。

3.Scalaプロジェクトの作成

Eclipseが立ち上がってきたら、Scalaプロジェクトを作ってみる。
ファイル->新規->プロジェクトを選択。
f:id:yugolf:20130211000950p:plain

Scalaウィザード」の中にある「Scalaプロジェクト」を選び「次へ」。
f:id:yugolf:20130211001026p:plain

プロジェクト名に「ScalaTest」と入力して「次へ」&「完了」。
f:id:yugolf:20130211001050p:plain

プロジェクトが出来上がると、「関連づけられたパークスペクティブを開きますか?」という確認ダイアログが出てくるので、「はい」を選び、Scalaパークスペクティブを利用する。
#間違ってJavaパースペクティブを使うとライブラリが常に展開された状態になっていて見づらい。

4.Hello World

作成したプロジェクト「ScalaTest」を右クリックして「新規」->「Scalaオブジェクト」
f:id:yugolf:20130211001147p:plain

パッケージを「yugolf」、名前を「HelloScalaObject」として「完了」。
f:id:yugolf:20130211001312p:plain

こんなクラスを作って「実行」([Ctrl]+[F11])。

package yugolf
object HelloScalaObject {
    def main(args: Array[String]): Unit = {
        println("Hello World")
    }
}

Hello World」に成功!

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

Scala逆引きレシピ (PROGRAMMER’S RECiPE)

第二回JetBrainsユーザーグループin大阪を視聴しました。 #jbugj

大阪でIntelliJ IDEA」の勉強会があったなんて、

しかも、@yusukeさんが講演されていたなんて知らなかった。

 

と悔やんでいたら、こちらに勉強会の様子をすべてまとめて下さっていたので、 早速、拝見しました。

 

 主催者の方から経緯の説明があったあと、

@yusukeさんから、IntelliJ IDEA中心に、JetBrains製品の紹介、その後

IntelliJ IDEA

・PHPStorm

・WebStorm

と各製品の紹介があった模様。

 

JetBrains製品ってこんなにあったのか、正直IntelliJ IDEAWebStormくらいしか知らなかった。Objective-C IDEとか、課題追跡・CIまで、他にもいっぱい。触った事があるのは、IntelliJ IDEAだけ。恥ずかしながら、有償というだけで自らの選択肢からは外れていた。

IntelliJ IDEAを初めて使ったのは、去年のTDDBC大阪テストコードをSpockで書いてみることにしたら、有無を言わさず@kyon_mmにインストールさせられていた。。

いいなって思ったんだけど、その後は普段の業務で使うのがEclipseだから やっぱりそっちばっかり使ってたものの、最近Scalaを触り始めてEclipseの不便さを感じていた。

 

IntelliJ IDEAいいって噂を聞いていたので、再び興味を持ち始めていたタイミングで この勉強会だったので、がっつり視聴してみた。

(講演者、当日の様子を公開して下さった方々に感謝。)

 

IntelliJ IDEAのお話は、基本的な使い方だったので、オオッというのはなかったのですが、 全部入りっていうのはいいですね。

Eclipseは使いたいプラグインを自分で入れてオリジナルの環境が作れる反面、その設定は煩わしいし、全ての機能がすぐ使えるというのはありがたい。

社内では、おススメセットみたいなのを作って配布しているけど、 その必要もなくなるし。

Ulltimate Editionは各種APサーバ、DB接続、フレームワークに対応している、

もちろん、Play2もというから、魅力的

ライセンス、買うならPersonal。でもやっぱりちょっと高いなあ。

 ライセンスマトリクスはこちら 

@masanobuimaiさんのAdvent Calendarもじっくり読んでみよう。

 

デモでは、Mavenの依存関係の追加がスムーズに出来ていいかんじに思えたEclipseでも近い事は出来そうだけど、あんなにスマートじゃない気がする。

DB接続とか補完もEclipseのプラグインで出来るけど、Javaコードの中でSQL補完はきっとできない。O/Rマッパーとか使ってたら、直書きSQLを使う場面はそんなにないかもしれないけど。。

HTMLの補完で、imageのイメージ(内容)まで見れるのはちょっと驚いた。

これは便利。

 

 おススメ機能の話。 PRODUCTIVE GUIDEはいいな。

自分のがどんな機能を使っていて、他人のを見せてもらうと自分の使えてない機能が分かって すごい勉強になりそう。気が利いた機能。。

 

コードナビゲーションの重要性をお話しされていました。

プログラマの作業時間の8割はコードを読むことに費やされている。」

レビュー比率の高い人とかは、もっとだろうし、 ナビゲーション機能が重要って話は同意。

だいたいEclipseでも出来そうな気がしたけど、Go to symbolはないかも。

 

質問にあった「新しい機能探しは、PRODUCTIVE GUIDE@masanobuimaiさんのブログで。」と、メモメモ。

 

 PHPはたぶん私は触れる機会はなさそうだったけど、 WebStormJavaScriptは書く機会も増えてきそうなので、使ってみたいな。

 

今回、JetBrainsをがんがん使われている方のお話で 大変参考になりました。

 

今度はPlay Frameworkでの使い方とか聞いてみたいな。

というか、ひとまず、試用ライセンスで色々試してみよう。

  

3ヶ月の試用ライセンスもらえるみたいだけど、

30日の試用ライセンスが切れた状態からでも蘇るのか??