Scala楽しい
- 作者: Martin Odersky,Lex Spoon,Bill Venners,長尾高弘,羽生田栄一,水島宏太
- 出版社/メーカー: インプレス
- 発売日: 2016/09/20
- メディア: Kindle版
- この商品を含むブログを見る
1日の時間のうち、家庭や仕事の時間を抜くと以外と取り組める時間は限られているのだがようやく半分ほど読み終えた。
ここまでで読み進めた感触としては、 これまでのどの言語よりもやりたいことが出来そうと感じている。
MVCではなく...
Scala + Playの開発環境も整ったのでボチボチと
- 作者: Martin Odersky,Lex Spoon,Bill Venners,長尾高弘,羽生田栄一,水島宏太
- 出版社/メーカー: インプレス
- 発売日: 2016/09/20
- メディア: Kindle版
- この商品を含むブログを見る
(Playは2.5系を利用しているが日本語ドキュメントがない為、2.4系のドキュメントを見つつ2.5系との差分を確認している)
まだ関数型プログラミングの旨みとかPlay frameworkの特性とかは理解している最中だが、アーキテクチャはMVCでもMVVMでもなく「 iOS Clean Architecture 」を採用することにした。
GitHubリポジトリへのSSHアクセスについて
これからScalaで作成していった物はGitHubでリポジトリ管理することにしました。
Windowsを使用しているのでクライアントツールは以下を利用します。
上記ツールのインストール手順は記載しませんが、 それぞれ上記リンクよりインストーラをダウンロードしました。
以降は、上記がそれぞれインストールされている前提で記載しています。
公開鍵・秘密鍵の作成
まずはGitBushを起動してください。
起動が終わったら以下のコマンドで「.ssh」ディレクトリを作成してカレントディレクトリを変更します。
$ mkdir ~/.ssh $ cd ~/.ssh/
続いて鍵を生成します。
$ ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/%ユーザ名%/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again:
対話形式で質問が3回ありますが、すべて何も入力せずにEnterで鍵が作成されます。
※鍵の名称を変更したり、パスフレーズを設定したりする場合は適宜値を入力する必要があります。
上記と同様のコマンドを実行していれば、この時点で以下のファイルが作成されています。
id_rsa :秘密鍵 id_rsa.pub :公開鍵
GitHubへのSSH keysへの公開鍵の登録
まずは自身のGitHubの設定ページを表示して、画面左にあるメニューより「 SSH and GPG keys 」を選択します。
選択するとSSH keysが表示されるので「 New SSH Key 」ボタンをクリックしてください。
クリックすると上記が表示されますので、まずは「Title」に任意のタイトルを設定します。
(後々、何の鍵か分かるような名前であれば問題ありません)
続いて、GitBushにて以下のコマンドで公開鍵の中身をコピーします。
$ clip < ~/.ssh/id_rsa.pub ※上記で作成した公開鍵を指定してください。
コピーした物をGitHub上の「 Key 」に設定して、「Add SSH Key」ボタンをクリックすると公開鍵の登録が完了します。
上記までで作成した秘密鍵をTortoiseGitで扱う為に「 ppkファイル 」に変換
上記までで作成した秘密鍵(id_rsa)をppkファイルに変換するためには、
TortoiseGitインストール時に同時にインストールされる「 puttygen.exe 」を利用します。
(デフォルトのインストールパスであれば「C:\Program Files\TortoiseGit\bin」にあります)
起動すると以下ダイアログが表示されます。
続いて「File -> Load private key」で先ほど作成した秘密鍵(id_rsa)を開きます。
(選択できる拡張子が「.ppk」になっているので「All Files (.)」に切り替える必要があります)
秘密鍵の読み込みが成功したら「 Save private key 」ボタンを押してppkファイルを作成します。
(必要であれば「passphrase」も入力してください)
ここまでで、秘密鍵と同ディレクトリにppkファイルが作成完了です。
GitHubリポジトリからclone
GitHubよりリポジトリパスをコピーしたら、任意のディレクトリでGit Cloneします。
TortoiseGitの「Git Clone...」を選択するとGit Cloneダイアログが表示されます。
ダイアログ中のURLにリポジトリURLを設定し、
ダイアログの中心付近にある「 Load Putty Key 」に先ほど作成したppkファイルを設定すると無事Cloneできます。
最後に...
ここまででGitHubよりCloneができました。
あとは、適時コミットやプッシュを行っていくだけとなります。
さて、ボチボチ開発に入っていきますかー
Scalaの開発環境の構築(Windows)
にも書いた構成でScalaの開発環境の構築を行います。
(OSはWindows10 64bit)
目次
- 目次
- JDK インストール
- Scala インストール
- Play framework インストール
- IntelliJ IDEA (IDE) インストール
- IntelliJ へのプロジェクトのインポート
- IntelliJを使用したリモートデバッグ
- 最後に…
JDK インストール
Java SE Development Kit 8 - Downloadsより JDK 8u121をダウンロードする。
(2017/02/20 時点)インストールが完了したらシステム環境変数を設定する。
・JAVA_HOMEを新規追加
パスは「C:\Program Files\Java\jdk1.8.0_121(上記でのインストールパス)」を設定
・Pathに「C:\ProgramData\Oracle\Java\javapath」を追加
※インストーラが設定してくれている
・Pathに「%JAVA_HOME%\bin」を追加ここまででインストール完了。
無事に完了していれば以下のコマンドでバージョンを確認できます。
java -version javac -version
Scala インストール
Download | The Scala Programming Languageを確認したところ、 以下から好きな方法を選んでねって書いてあった。
「Scala単体でのインストール」
「sbtをインストール」
「Scala IDEsをインストール」
と3つ記載があるが、今回は後述する「Activator」でScalaもインストールされるのでScala単体でのインストールは行いません。
※コンソールからScalaを個別に実行したい場合などは個別にインストールする必要があります。
Play framework インストール
Play frameworkはsbtをカスタマイズしたActivator(LightBend社)を利用してインストールします。
(Scalaも同様)
※プロジェクトの新規作成や実行もActivatorから行います。
Typesafe Activatorより、最新のActivator(mini-package版)をダウンロードします。
ダウンロードが完了したら書き込み権限のある任意のディレクトリにてダウンロードしたZip(typesafe-activator-1.3.12-minimal.zip)を解凍します。
解凍が終わったら、「activator.bat」のあるディレクトリパスをシステム環境変数のPathに追加します。
※「%解凍したパス%\typesafe-activator-1.3.12-minimal\activator-1.3.12-minimal\bin」解凍が終わったら、「%解凍したパス%\typesafe-activator-1.3.12-minimal\activator-1.3.12-minimal\bin」内にある「 activator.bat 」を実行します。
このバッチでactivatorに必要なものがインストールされます。
(数十分ほど時間がかかりますが、気長に待ちましょう)
インストール後半で「Java™ Platform SE binary」の外部への通信の許可を求められますので、 これを 許可 します。
(ローカルで確認する分であれば「プライベートネットワーク」のみで問題ありません。)
しばらくすると以下のメッセージがコンソールに表示され、「http://127.0.0.1:8888/home」でブラウザが立ち上がります。
[info] play - Application started (Prod)
[info] play - Listening for HTTP on /127.0.0.1:8888
立ち上がったブラウザからもプロジェクトの作成などが行えるのですが、
今回はコンソールとIDEを利用して開発を進めるので、これは利用しません。
なお、ここまででインストールは完了となりますので、起動されたブラウザとコンソールは閉じてください。
(コンソールは「ctrl + c」で止めます)
activatorのコマンドに関しては、コンソール上でactivator help
と入力し実行することで確認できます。インストールが完了したので、プロジェクトを新規に作成してみます。
プロジェクトの新規作成はコンソールから以下のコマンドで行います。
activator new testapp play-scala ※プロジェクトを作成する前にカレントディレクトリを プロジェクトを作成するディレクトリに移動しておいてください。 ※「testapp」はプロジェクト名
※activator
コマンドで「sbtconfig.txt が見つかりません。」と表示される場合は
「%解凍したパス%\typesafe-activator-1.3.12-minimal\activator-1.3.12-minimal\conf」に「sbtconfig.txt」を作成してください。
以下はファイルの中身
# Set the java args to high -Dfile.encoding=UTF-8 -Xmx512M # -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=128m # Set the extra SBT options -Dsbt.log.format=true
- プロジェクトの作成が完了したら、起動してみます。
まずはカレントディレクトリをプロジェクト内に移動してください。
cd testapp
移動が完了したら、実行してみます。
activator run ※初回起動では、必要なファイルのインストールも同時に行われるため、数十分ほどかかります。 (ScalaやPlay frameworkなど)
しばらくすると以下のメッセージが表示されますので、表示されたら「http://127.0.0.1:9000」で実行したアプリを確認できます。
(ブラウザからアクセスするとScalaのコンパイルが動くので、初回は時間がかかります)
--- (Running the application, auto-reloading is enable) --- [info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started, use Ctrl+D to stop and go back to the console...)
ブラウザの画面
IntelliJ IDEA (IDE) インストール
IntelliJ IDEA the Java IDEよりインストーラをダウンロードします。 (今回は無料の Community Edition を選択)
上記でダウンロードしたインストーラ(ideaIC-2016.3.4.exe)を実行し、インストールを行います。
(2017/02/20 時点)インストールが完了したら、IntelliJを起動します。 起動すると以前の設定を引く次ぐかどうかのダイアログが表示されますが、 初めてのインストールなので
「I do not have a previous version of IntelliJ IDEA or I do not want to import my settings」
側にチェックをいれてOKボタンを押します。 (以前の設定を引き継がない場合も同様)
Plivacy PolicyをAcceptして、「 Download featured plugins 」まで進みます。
ここで「 Scala plugin 」が表示されていますので、これをインストールします。
インストールが完了したら「Start using IntelliJ IDEA」ボタンを押下して、 無事起動完了となります。
(次回以降は上記手順はスキップされます。)
IntelliJ へのプロジェクトのインポート
起動画面から「Import Project」を選択します。
プロジェクトディレクトリを選択するダイアログが表示されるので、
上記にて作成したプロジェクトディレクトリを選択し、OKボタンを押下します。
※上記で作成したディレクトリの場合は「%任意のディレクトリ%\testapp」次ページでは「 Import project from external model 」にチェックをし、
「 SBT 」を選択して、Nextを押下します。次のインポートオプションを選択する画面では、
「Use auto-import」
「Create directories for empty content roots automatically」
にチェックを入れ、「Project SDK」については「New -> JDK」でPC内のJDKを検索して
パスを表示してくれるので対象のJDKを選択して、Finishボタンを押下します。しばらくすると「SBT Project Data to Import」ダイアログが表示されますが、
そのままOKボタンを押下します。
ここまででインポート完了です。
無事インポートが終わっていればIntelliJが表示されます。
なお、画面右下で「2 Processes running…」と表示されている間は、
インデックス作成とリフレッシュが動作していますので、その間はPCの負荷が高くなります。(重たくなる)
※「2 Processes running…」が消えた後も、「Indexing…」が表示されている間はアクションを利用できません。
IntelliJを使用したリモートデバッグ
「IntelliJ Ultimate」を利用している場合は、
上述しているプロジェクトのインポートから含めてActivatorと連携できるはずなので、もっと簡単にできる筈です。
ここではCommunity Editionの場合の説明を記載します。
(インデックス作成などが終わっている前提)
- 「Edit Configurations」からデバッグ設定を開いて、
デバッグ設定ダイアログが開いたら、ダイアログ左上の「+」ボタンを押下して、「Remote」を選択します。
選択するとリモートデバッグの設定内容が表示されるので、ダイアログ上部の「Name」を入力して、Applyボタンを押下してください。
(その他の設定はデフォルト値のままで問題ありませんが、必要であればポート等を変更してください)
activator -jvm-debug 5005 run
起動したらIntelliJ右上のプルダウンで上記で作成した物を選択し、虫アイコンをクリックします。
IntelliJのコンソールに以下のメッセージが表示されたら、リモートデバッグ成功です。
Connected to the target VM, address: 'localhost:5005', transport: 'socket'
あとは、好きな箇所にブレークポイントを配置して、確認してみてください。
最後に…
仕事が終わってからの隙間時間でポチポチ進めており、
纏まった時間をなかなか取れないので思うようには進みませんが、
今のところ少しづつでも楽しみながら進められているのでこのまま続けていこうと思います。
Scalaはじめます
仕事ではPHPを使用したWebアプリケーションや、iOS/Android向けのネイティブアプリの開発をおこなっているのだが、
「新しいことを始めたい」
「流行りに乗っかりたい」
という思いから Scala を始めてみることにした。
ネットで検索するとそこそこの情報が該当するのだが、新しい言語を勉強する時はいつも手元にリファレンスとする為の本を持つようにしている。
今回は「Scalaスケーラブルプログラミング第3版」を選びました。
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレス
- 発売日: 2016/09/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
フレームワークは色々調べた結果、「Play framework」を利用することにしました。
※正直なところ「Skinny framework」とかとも悩んだのですが、サーブレットコンテナにする必要もなかったので勢いで決めました。
また、IDEについては仕事で「Ecripse」を利用してるので別の物を利用したいって気持ちで「IntelliJ IDEA」を選択しました。
それでは、ゆるゆるとScalaに慣れ親しんでいこうと思います。