EclipseでTomcatツールバーの表示

どのバージョンからなのか忘れたが、EclipsePleiades All in OneJavaパースペクティブからTomcatツールバーが標準で表示されないようになってしまった。

新しくワークスペースを作ったときなど、このツールバーの表示設定を毎回しないといけないので、忘れないように設定方法をメモ。
ウインドウ > パースペクティブのカスタマイズ
でカスタマイズ画面を表示させて、「コマンド・グループ可用性」タブを選択。
「使用可能なコマンド・グループ」リストの「Tomcat」のチェックボックスにチェックを入れる。これで表示される。

AWSにSubversionサーバを作ってみた

過去のエントリなどにも書いたが、私はもともとSubversion(SVN)ユーザである。LAN内のサーバにはSVNを入れて運営していた。ところが、外部からアクセスできるようにということでGitHubを使っている。このいきさつはこのエントリにも書いた。
ところが、やはりGitHubでは運用上問題があるのだ。一番の問題はGitはひとつのリポジトリに(Eclipseでいうところの)ひとつのプロジェクトしか格納できないところ。特に、Android開発となると、Eclipseの1プロジェクトが1アプリでこれが1リポジトリとなってしまう。実開発ならそれでもいいのかもしれないが、私は講義用サンプルも扱っているので、ひとつの講座だけで十数個のリポジトリが必要になってしまう。それが数講座となるとGitHubのプライベートリポジトリではいくらお金があっても足らなくなってしまう。こうなってくるとサブプロジェクトが作成できるSVNのほうが断然有利となる。
当初はSugarSyncを使ってソース同期をしていたのだが、そこはクラウドストレージだけあって、ソースだけ同期という都合のいいことはできず、classファイルなど不要なものまで同期して、かなりの負荷がかかっていた。Windowsマシンなどはブルースクリーンまで出るようになってしまった。
困っていたところで出会ったのがAWS。いや、AWSは大昔から知っているのだが、つい先日本格的にいじりはじめるきっかけがあった。これをきっかけで、ふと、AWS上にSVNサーバを立てられないのだろうか、と考えるようになった。ほぼ同時期に、@が自身のブログでAmazon EC2+EBSにSubversionを突っ込んでみた | 毒舌プランナーの異論持論というどんぴしゃのエントリをあげてくれた。実際、ググってみると同じようなことをしている人が多々ある。
じゃあ、やってみよう!
ということで先の記事AmazonEC2+EBSにsubversionリポジトリを置く | Drowsy Dog's Diaryhttp://www.mori-soft.com/2008-08-15-01-36-37/2008-12-07-09-39-26/118-ec2-subversionredmine-15を参考にして、あっさり作れてしまった。
これは便利。

Androidエミュレータの高速化

久しぶりにAndroidの授業を持っている。前回授業したときはAndroid2.3系を使ってMacで行った。今回は、4.3でWindowsを使っての授業。お約束のHelloAndroidからはじめるのだが、エミュレータ(AVD)が遅い。いや、前回授業したときも遅かったのだが、今回は遅すぎる。まあ、でも、AVDというのはこういうものか、とあきらめていたのだが、Care i3や場合によってはCore2Duoマシンの学生もいる中で、どうもこれでは授業が成り立ちそうにない。どうしようかと思っていたら、ある学生が「AVDの高速化」なる方法を見つけてくれた。Google先生にたずねてみると、ネット界隈では結構当たり前の方法らしい。「AVDはもともと遅いもの」としてあきらめて調べなかった自分を反省しつつ、その方法をメモしておこう。

HAXMとシステムイメージのダウンロード

Android SDKマネージャーを起動し、最下部にある
Extras > Intel x86 Emulator Accelerator (HAXM)
にチェック。さらに、現在インストール済APIレベル(例えば、「Android 4.3 (API 18)」など)配下の「Intel x86 Atom System Image」のチェックを入れて、「Install ## packages」ボタンをクリックする。次の画面で「Accept License」ラジオボタンを選択し、「Install」をクリック。
ダウンロードが開始される。

IntelHaxmのインストール

Android SDKがインストールされたディレクトリをANDROIDSDK_HOMEとしたら、
ANDROIDSDK_HOME\extras\intel\Hardware_Accelerated_Execution_Manager
内の「IntelHaxm.exe」をダブルクリック。
Setupウィザードが起動するので、「Next」2回で画面遷移の上に「Install」をクリックしてHAXMをインストール。
完了画面(「Completed the Intel …」画面)では、「Launch Intel HAXM Documentation」のチェックボックスをはずして「Finish」をクリック(ドキュメントを読みたい人はチェックボックスをはずさなくてもよいがブラウザが起動してしまう)。

BIOSの設定が必要かも

もし、インストール中にVT-xに関するエラーが表示された場合、BIOSで「Virtualization Technology」が「Disable」になっている可能性が高い。これを「Enable」に変更する。

AVD設定

Android 仮想デバイス・マネージャーを起動し、リストから該当のAVDを選択し、「編集」ボタンをクリック。
編集画面の「CPU/ABI」のプルダウンから「Intel Atom (x86)」を選択し、「OK」をクリック。
以上で、AVDが爆速化する!
はず。
AVDを起動したときにコンソールに
HAX is working and emulator runs in fast virt mode
と表示されていれば爆速のはず。そうでない場合、
HAX is not working and emulator runs in emulation mode
と表示されている可能性が高い。この場合、マシン自体の再起動が必要かも。

Elastic Beanstalkに恋してしまいそう

しんぞうくん」のデモサイトを早急にオープンさせる必要性が出てきた。前々から気になっていたので、ちょうどいい機会なのだが、実はSarvaが借りているレン鯖では動かないのだ。かといって他のレン鯖をわざわざ借りるのもどうかと悩んでいるうちに後回しになっていた経緯がある。
そこで、これも前々から気になっていたAWSを使ってみてはどうかと思い至った。きっかけはデブサミ関西2013での基調講演なのだが、そのデブサミ関西にきておられた@こと安川さんに相談してみることにした。そこで勧められたのが、Elastic Beanstalk。Elastic Beanstalk自体は、以前どこかのイベントの@こと片山さんのセッションで見てから気にはなっていたので、使ってみることにした。で、

恋してしまいそう…。

そもそも、クラウド自体は前から視野には入れていたのだが、AWSに手を出さずにレン鯖を使っていたのはIaaSはやはりハードルが高いからなのだ。特にネットワーク周りにあまり詳しくない私としては、LAN内のサーバならいざ知らず、インターネット上に公開するサーバを構成するのは少し荷が重い。そういった意味でいろいろ設定が済んでいるレン鯖か、あるいはPaaS環境がいいのだ。ところが、いわゆる共有レン鯖やPaaSというのは自由度があまりない。時にはSSHでログインしてコマンドでガシガシいじったほうが早いこともある。これができない。するとしたら、専用レン鯖になるのだが、こちらはコストがかかる。
この両方のいいとこどりができるのがElastic Beanstalkなのだ!管理Webコンソールから数回クリックするだけでPaaS環境が作れる。ところが、その実、AWSの各商品を組み合わせただけなのでSSHでログインして、root権限でいじることもできる。これは便利だ。

実際、ほぼ半日でデモサイトが起動した。肝心の「しんぞうくん」自体の動作確認がまだなので、「オープンした」とはまだいえないが、このお手軽さは驚異的だ。

なんにせよ、ハンズオン資料やらマニュアルやらいろいろと紹介してくださった上に、こちらの疑問にも丁寧に答えてくださった安川さんには、感謝感謝。

Oracleのインストール

久しぶりにOracle DBをインストールする必要が出てきた。過去何回かインストールした際は何ともなかったのに、今回は苦戦したのでそのメモ。
インストールはOracle Database 11g R2でOSはWindows 7 64bit。現象としては、インストーラの途中で「前提条件のチェック」というのがあるのだが、その途中でインストーラーが落ちるというもの。最初は次の画面(サマリー画面)の表示処理に時間がかかっているだけと思っていたが、タスクマネージャでプロセスを監視していると明らかにインストーラーのプロセス自体が消えている。Google先生に尋ねてみても、全く同じような現象が見当たらない。そこで、いろいろと実験した結果最終的には何とかインストールできた。
で、私が行ったことが以下の3コ。今となってはどれが主原因かわからない。

Professionalへのアップグレード

まず行ったのが、これ。インストール対象のマシンが、Windows 7 Home Premiumだった。あまり気にしていなかったのだが、対応OSを確認してみると最低でもProfessionalが必要とのことorz。ということで、まずはOSのアップグレードを行った。私はProfessionalのライセンスを持っているので、これは、Windows Anytime Upgradeを使えば簡単。

Zipファイルの再ダウンロード

次に行ったのがこれ。Oracle DBのインストーラーというのは、メディアではなくダウンロードサイトからダウンロードした2コのZipファイルを使う。容量が大きいだけに、これが壊れている可能性もある。ということで、再ダウンロード。

PATHの書き換えと短縮

最後に行ったのが、これ。恐らく、これが原因としては一番濃い。それは、環境変数PATH。実際、「前提条件チェック」画面でPATHのチェック中にプロセスが消えている。PATHがWindowsのデフォルトでは「Path」と記述されている。Windowsでは大文字小文字は基本は区別しないのだが、Oracle DBのインストーラーが作られたJava言語は区別する。そこで、まず、「Path」を「PATH」とした。
次に、Google先生に聞いてみると、どうもこのPATHの設定内容がやたら長いと不具合を起こすらしいということがわかった。そこで、現在の設定をいったんテキストファイルなどにコピペしておき、ほとんどのPATH内容を消去し、再起動。これで、無事インストールすることができた。もちろん、最終的にPATHは元に戻しておく必要があるし、その際Oracleインストーラーが書き加えたものも追加しておく必要がある。

Subversion管理リポジトリをGitHubに移管

著名開発者もすなるgithubといふものを、私もしてみむとてするなり - Archit!!のさらに続き。
現在Subversion(SVN)で管理しているリソースをGitHubに移管する方法のメモ。
基本的には、GitHubのヘルプ記載の方法をとる。そこに記載している svn2git を使う。svn2gitの使い方もsvn2gitのREADMEを読めば書いてあるのだが、少しはまるところがあるので注意が必要。

svn2gitのインストール

  1. 前提として、git、git-svnrubyがインストールされているローカル環境が必要。さらに、rubygemsがインストールされている必要がある。なぜか、私のMacにはすでに入っていた。いつ入れたのだろう…。
  2. 上記環境で、以下のコマンドを実行。
    $ sudo gem install svn2git

authors.txtファイルの用意

SVNでのユーザー名とGitのユーザー名の対照を記述したauthors.txtファイルを用意する。以下のような内容を記述して、任意の場所に配置する*1

jcoglan = James Coglan 
stnick = Santa Claus 

作業ディレクトリの用意

ローカルにSVNから吸い出したソースを配置するディレクトリが必要。どこでもいいので任意のディレクトリを用意し、cdコマンドでそのディレクトリまで移動する。

SVNリポジトリからソースを吸い出す。

SVNでは通常、trunk-branches-tags構成になっているはずなので、その上位ディレクトリから吸い出すことになる*2。このあたりは、先のエントリにも書いたが、例えば、

HogeProject
  |----Document
  |      |----branches
  |      |----tags
  |      |----trunk
  |             |----hogedoc
  |
  |----src
  |      |----branches
  |      |----tags
  |      |----trunk
  |             |----hogesrc

の場合、HogeProject全体をGitHubに移管はできない。この場合は、DocumentでひとつのGitHubリポジトリ、SrcでひとつのGitHubリポジトリとなる*3。そのことを念頭に置いて、例えば、Srcを吸い出す場合は、以下のコマンドを実行する。

$ svn2git http://[svnのURL]/HogeProject/Src  --username [ユーザー名] --authors [authors.txtファイルのパス] -v

ここで、ポイントとなるのが-vオプション。通常SVNは認証がかけられていることが多い。-vオプションをしていることで、コマンド画面に

Authentication realm: SVN Repository
Password for '[ユーザー名]':

というのが出力される。この状態で認証パスワードを入力する。ただし、「ひょっとしてこちらの入力、間違っている?」と尋ねたくなるぐらい何回もきいてくることがあるので、その都度入力する*4

GitHub

吸い出しが完了したら、作業ディレクトリ内はすでにGitリポジトリ構成になっているので、それをGitHubにあげればいい。手順は以下の通り。

  1. GitHubリポジトリを作成。この時、SSH用のURI、例えば、
    git@github.com:architshin/hoge.git
    が表示されるので、それをコピーしておく。
  2. 作業ディレクトリ上で以下のコマンドを実行。URIは上記1のURIに読み替える。
    $ git remote add origin git@github.com:GITHUB_USERNAME/REPO_NAME.git
  3. 作業ディレクトリ上で以下のコマンドを実行。これで、プッシュが完了する。
    $ git push origin master

*1:svn2gitのREADMEによると、~/.svn2git/authorsファイルとして配置すると、自動で読み込んでくれるらしい。

*2:svn2gitのREADMEにはtrunk-branches-tags構成ではない場合の吸い出し方法も書かれている。

*3:プライベートリポジトリへの移管の場合、リポジトリ数が一挙に増えてすぐにMicroプランでは足らなくなってしまう。このあたりは悩ましいものだ。

*4:私は5、6回ほど入力した。

GitHub+Eclipseを使ったプロジェクトのはじめ方

著名開発者もすなるgithubといふものを、私もしてみむとてするなり - Archit!!の続きのようなもの。
GitHubEclipseを使ってプロジェクトを始めるためのメモ。最近のEclipseは標準でEGitが入っているので、Eclipse側での追加インストールなどは不要。

初期作業(リポジトリ作成からローカル環境構築)

  1. GitHubで新しいリポジトリを作成する(たとえばhogeとする)。
    自動的にGitHubリポジトリURLを発行してくれる。例えば、
    https://github.com/architshin/hoge.git
    のように。
  2. Eclipseでローカルリポジトリを用意する。
    1. Gitリポジトリエクスプローラパースペクティブで「Gitリポジトリを複製し、このビューへ追加」をクリック。
    2. 出てきたダイアログの
      1. 「ロケーション」の「URI」に上記1のURLをペースト。「ホスト」や「リポジトリパス」が自動的に入力される。
      2. 「接続」の「プロトコル」が「https」になっていることを確認。
      3. ユーザーとパスワードにGitHubにログインするためのIDとパスワードを入力。必要に応じて「セキュアストアに保管」にチェックを入れる。
      4. 「次へ」をクリック。
    3. 上記入力に問題がなければ、ダイアログが「ブランチ選択」画面に遷移し「ソースGitリポジトリは空です」というメッセージが出ている。そのまま「次へ」をクリック。
    4. ダイアログが「ローカルの宛先」画面に遷移する。「宛先」の「ディレクトリ」を適宜変更する。例えば、今から作成するプロジェクトがWEBサイトやPHPアプリなどの場合はApacheのドキュメントルート内に保管したほうがいいだろう。
  3. Eclipseでプロジェクトの作成。
    JavaでもAptanaでもPHPでも、作成するプロジェクトに応じてそのパースペクティブに変更し、それぞれに応じた新規プロジェクトを作成する。
    1. プロジェクト名は任意のものを入力。
    2. プロジェクトのロケーションをデフォルトではなく、上記2-4で指定したディレクトリを指定する。

これで、Eclipse内にプロジェクトが作られる。これ以降は次の通常作業に移る。

通常作業

  1. プロジェクト内に必要ファイルを追加。これは、通常のEclipseでの操作。
  2. Eclipse上で、プロジェクトを右クリックして
    1. チーム > コミット
      Gitはコミットコメントが必須なので何か入力する。
    2. チーム > プッシュ
      この際、「Please provide HTTP authentication password」として、ユーザー(Username)とパスワード(Password)を入力するダイアログがそれぞれ出てくる場合があるが、その場合はGitHubログイン用のIDとパスワードを入力する。*1
  3. 上記を繰り返す。

別マシンのEclipseでの環境構築

上記「初期作業」の2「Eclipseでローカルリポジトリを用意する。」とほぼ同じ。

  1. Gitリポジトリエクスプローラパースペクティブで「Gitリポジトリを複製し、このビューへ追加」をクリック。
  2. 出てきたダイアログの
    1. 「ロケーション」の「URI」にリポジトリのURLをペースト。例えば、先のhogeプロジェクトなら、
      https://github.com/architshin/hoge.git
      となる。「ホスト」や「リポジトリパス」が自動的に入力される。
    2. 「接続」の「プロトコル」が「https」になっていることを確認。
    3. ユーザーとパスワードにGitHubにログインするためのIDとパスワードを入力。必要に応じて「セキュアストアに保管」にチェックを入れる。
    4. 「次へ」をクリック。
  3. 上記入力に問題がなければ、ダイアログが「ブランチ選択」画面に遷移する。今回は、すでにソースがあるはずなので、ブランチのリストが表示される。master、あるいは必要なら別のブランチをチェックし、「次へ」をクリック。
  4. ダイアログが「ローカルの宛先」画面に遷移する。
    1. 「宛先」の「ディレクトリ」を適宜変更する。これも、初期作業同様、今から作成するプロジェクトがWEBサイトやPHPアプリなどの場合はApacheのドキュメントルート内に保管したほうがいいだろう。
    2. 初期作業と違い、「Import all existing projects after clone finishes」にチェックを入れる。あとからプロジェクトのインポートもできるが、ここでやっておくと楽。

これで、Eclipse内にプロジェクトがインポートされているので、通常作業に移る。

プル

別のマシンでリポジトリ内容を更新した場合、その変更を自マシンに反映させるにはプルを行えばいい*2。その際、HTTP認証の関係上、Gitリポジトリエクスプローラパースペクティブで行ったほうがいい。

*1:どうも、プッシュは各プロジェクトのパースペクティブのプロジェクトエクスプローラー上で行うよりはGitリポジトリエクスプローラパースペクティブで行ったほうがいい。その場合は、保管されたユーザー名とパスワードを使ってHTTP認証を自動で行ってくれる

*2:プルとフェッチの違いは「うわっ…私のバージョン管理、ダメ過ぎ…?」を解決するGitの使い方“超”入門 (3/3):かんばん!〜もし女子高生がRedmineでスクラム開発をしたら(5) - @ITがわかりやすい