いつブロ

いつまで続くか分からないブログ(仮)主に趣味やプログラミングに関するメモを書いています。

RubyMineのJetBrainsにライセンスについて聞いてみた

これは RubyMine Advent Calendar 2014 の18日目のブログエントリーです。
昨日は @spring_aki さんの Git - RubyMineで簡単に行ごとのコミットログを見る方法 (Annotate,Blame) - Qiita でした。
明日は @genta さんです。
 
 
前回のエントリー(Goodbye Struts, Hello Java EE #javaee)が堅すぎたので、
今度は気をつけたいと思います。
 
さて、この Advent Calendar は RubyMine です。
初めにお断りを入れておくと、私自身 RubyMine を1回ぐらいしか起動した事がありません!
普段 Ruby の開発では MacVim を使っているので、完全に初心者です。
にも関わらず、Advent Calendar に挑戦したのには訳があります。
 
それは RubyMine の OSライセンスを持っているからです。 1回ぐらいしか起動したこと無いクセに!
このカレンダー見ていると結構使い勝手が良さそうなので、
そのうちVim?だせぇとか言ってるかも知れません。
そのときはすみません。
 
 

1. ライセンスの種類には一体どんなのがあるの?

RubyMine には大きく分けて有料のライセンスと無料のライセンスがあります。
有料のライセンスは一度購入すればずっと使用出来ます。
1年間のアップグレードサブスクリプションが付いてきますので
その1年間は何度でも無料でアップグレードが出来ます。
継続してアップグレードしたい場合はサブスクリプションの延長を申し込む必要があります。
サブスクリプションの追加購入は有料です。
無料のライセンスは1年間有効で毎年更新が必要です。
 
ライセンス比較表(RubyMine :: License Comparison Matrix)を翻訳するとこんな感じ。
ここから先、翻訳している箇所が度々出てくるので、間違いがあればそっと教えて下さい。

f:id:koichi0814:20141214072805p:plain

個人的にOSSを作っているので、
一番右のオープンソースライセンスに食いついた訳です。
なんて言ったって無料ですからね!
 

2. OSライセンスを申請してみる

https://www.jetbrains.com/ruby/buy/f:id:koichi0814:20141214074157p:plain

ライセンス比較表には載っていませんでしたが、
スタートアップなら半額というオプションもあるんですね。
「For Open Source projects」のリンクをクリックして次に進みましょう。
 

f:id:koichi0814:20141214080523p:plain

申請の最初の画面にはOSライセンスの条件について書かれています。
リンクをクリックする前に条件も一応確認しておきましょう。 英語のニュアンスが難しい。。。

※赤字は私からのコメントです。
1. You are the project lead or a regular committer.
あなたはプロジェクトリーダーかコミッターである。
じゃなきゃ申請しないでしょ。
 
2. Your OS project meets the Open Source definition
(http://opensource.org/docs/osd).
お使いのOSプロジェクトは、オープンソースの定義を満たしている。
肝心な部分をリンクで飛ばすなんて。。
 
3. You do not perform any paid support, consulting or training services for your OS project,
and you do not distribute paid versions of your OS software. If you provide paid services
for or distribute paid versions of your OS software, we might have other options
available for your project. Please contact us at opensource@jetbrains.com for details.
任意のOSプロジェクトのサポートに使用したり、コンサルティング
トレーニングサービスを行って料金を取ったり、OSSの有料版を配布しないで下さい。
もし有料版を配布する場合は使用できるオプションがあるかも知れませんので、
opensource@jetbrains.com まで連絡して下さい。

OSSを有料に…って、別プロジェクトになりそうだけど、そういうのもダメなのかな。
 
4. Your OS project is being actively developed for a minimum of 3 months.
3ヶ月以上に渡って、積極的に開発されている。
ちょうど申請する1ヶ月ぐらい前にgithubに上げてた!
 
5. Your OS project's community is active. This means that you have recent activity in your
newsgroups or forums.
OSプロジェクトのコミュニティはアクティブです。
これはあなたのニュースグループやフォーラムで活動していることを意味します。

アクティブもアクティブ。githubに上げたとこ。
 
6. Your OS project has a web site. The web site has a News section that is being kept up to
date, or links to a social network account used to announce updates of the project.
OSプロジェクトのWebサイトを持っていること。
Webサイトには最新情報が掲載されていたり、
最新情報を提供するSNSアカウントのリンクがあること。

Vectorでもよろしいか?
 
7. You release updated builds on a regular basis.
最新版が実行出来る状態になっていること。
ちょっと分かりにくい。。
 
 
OSライセンスの申請ページでは色々入力します。
実際に入力した内容は確かこんな感じでした。ちょっと小さくて見難いかも知れませんが。

f:id:koichi0814:20141214220315p:plain

 

3. ライセンスを貰いました

申請後直ぐにメールが来ました。

Hi Koichi,
 
Thank you for taking the time to submit your membership form. The RubyMine review board will evaluate your request over the next few days. We will make every effort to take care of this promptly and will notify you as soon as the review board has come to a decision.
 
If you wish to reply to this message, use the "Reply" button on your e-mail program. Please do not make any changes to the subject line, as this may lead to a long delay in responding to you.
 
Best regards,
JetBrains Team
http://www.jetbrains.com
"Develop with pleasure!"

超簡単に訳すと、
 
あなたが申請した内容を確認するのでまた連絡します。
 
ということのようでした。
 
このメールからが長かった。
待つこと3週間!
申請していたことすら忘れるぐらいの長さ。
国が違うから言葉の壁とかあったのかな?
配布サイトはVectorだし。
 
 
次のメールはこんな感じでした。

Hi Koichi,
 
I’m writing to you regarding your RubyMine Open Source license request. Please excuse our delay with replying you – due to vacations time (part of the staff is away). We have approved your request and issued a free OS license of RubyMine to your project. It will arrive in a separate message shortly. Please feel free to share this key with the project core team members (via secured channels only: please do not use a public forum or mailing list to share license keys).
 
The license will be valid for one year and is subject to all upgrades (including major ones) during this time. You may apply for renewal shortly prior to the expiration date by writing directly to opensource@jetbrains.com We hope that the license will become useful as the project grows.
 
Should you have any additional questions I’m happy to help.
 
Kind regards,
Elena Ganenkova
Community Support Coordinator
JetBrains,
http://www.jetbrains.com
"Develop with pleasure!"

超簡単に訳すと、
 
返事が遅れたことを許して下さい。
実は、休暇でスタッフが居ませんでした
 
私たちはあなたの要求を承認し、OSライセンスを発行しました。
この後メールが届くので、プロジェクトのメンバーと共有して下さい。
掲示板やメーリングリストには流さないで下さいね。
 
ライセンスは1年間有効で、この期間は全てのアップグレードが可能です。
ライセンスの延長は opensource@jetbrains.com 直接申し込んでもいいですよ。
 
他に何か質問があればどうぞおっしゃって下さい。
 
 
 
ヨーロッパ特有のバカンスかよ!
とも思いましたが、何はともあれライセンスキーが届いたので、
早速RubyMineに登録しました。
 
つたない英語でよく通ったなと思いましたが、
OSSを作っているとこういう所でラッキーな事もあるんですね。
 
 

4. そのライセンス大丈夫??

ライセンスを登録したものの、使い方もイマイチ分からないので、
そのまま起動することなく放置していましたが、このカレンダーを書くにあたって、
ふと思ったんですよね。
 
 
 
 
 
RubyMineのOSライセンスなのにRubyじゃないプロジェクトで
申請してもよいものかと。
 
申請は通ったんですがね。
 
 
 
 
 
私のgithubhttps://github.com/Koichi-Kobayashi)のリポジトリ一覧をご覧下さい。
 

f:id:koichi0814:20141214234017p:plain

 
C#です。
 
申請時のプロジェクトタイプにデスクトップアプリケーションが選べるから
Rubyじゃなくてもいいかなって思ったんです。
 
 
若干心配なので RubyMine の開発元である JetBrains に聞いてみました。
私はこのまま使わずじまいでライセンスの期限が来そうな気がしているんですが、
この記事を読んで、OSSを開発していれば何でもいいんだーって思われても・・・
という気がするので。
 
 
送ったメールはこれです。

To whom it may concern,
 
I am a person who previously got the OS license.
My OS project uses C#.
C# can't be used in RubyMine,
so even if it's used by the Ruby project made newly, is it no problem?
 
And can an OS license be used for a general commercial project?
 
Best regards,

私は以前OSライセンスを頂いた者です。
私のOSプロジェクトではC#を使っています。
RubyMineではC#は使えないので、
別のRubyプロジェクトで使用しても問題ないでしょうか?
 
それと、OSライセンスを商用プロジェクトに使用してもいいですか?
 
 
言いたかった内容をGoogle翻訳に通したものを再度日本語に翻訳しているので
大分変な日本語になっているような気もしますが・・・
 
 
今回の返信は早かったです。
時差も考えて深夜に送ったら翌朝には返信がありました。
 
 

Hello Koichi,
 
Thank you for contacting us.
 
The rules of our Open Source License Program are listed at the page:
https://www.jetbrains.com/ruby/buy/choose_edition.jsp?license=OPEN_SOURCE.
 
So, the OS license is granted to a particular project and cannot be used for
commercial purposes.
 
Your project's RubyMine OS license is valid till June 16, 2015. We cannot
cancel it or check how it is used. We trust our applicants and hope the
licenses are used for the Open Source development.
 
Should you have any further questions - I'm happy to help.
 
Have a great day)
Kind regards,
 
Nadya Kudryavtseva
Community Support Coordinator
JetBrains,
http://www.jetbrains.com
"Develop with pleasure!"

超簡単に訳すと、
 
ご連絡ありがとうございます。
Open Source ライセンスについては、こちらに記載しています。
https://www.jetbrains.com/ruby/buy/choose_edition.jsp?license=OPEN_SOURCE
このリンク、さっき見ました。。。

OSライセンスは特定のプロジェクトに対して与えられるもの
商用には使えません
 
あなたのプロジェクトの RubyMine OS ライセンスは2015年6月16日まで有効です。
私達はOSライセンスを無効に出来ませんし、どのように使われるかをチェックできません。
オープンソース開発のためにOSライセンスが使用されることを信じています
 
 

5. まとめ

RubyMineのライセンスについては、ライセンス比較表をよく読みましょう。
OSライセンスといっても、使える場面や用途が決まっています。
私の場合は AipoReminder というプロジェクトで申請しているので、
そのプロジェクト内で Ruby を使う分には使用出来そうですが、
現状は C# なので、実際には使えそうにもありません。
また、他のプロジェクトや商用にも使えません。。。
他のプロジェクトで AipoReminderApi というものを Ruby で作りましたが、
申請したプロジェクトとは違うのでダメな気がします。
 
このブログを読まれた方で、これからOSライセンスを取得しようとされるのでしたら、
gemの開発などに使うのがベストな気がします。
 
無料は色々面倒な事もあるので、
そういうしがらみの無い有料版を最初から選ぶ方が返って一番良いのかも知れません。

Goodbye Struts, Hello Java EE #javaee

これは Java EE Advent Calendar 2014 の3日目のブログエントリーです。
昨日は @irof さんの Java EEを説明してみる #javaee - 日々常々 でした。
明日は @kazuhira_r さんです。
 
 

はじめに

20年前の今日はプレイステーションの発売日でした。
来年はJavaが誕生してちょうど20年になります。
私が住んでいる神戸もある意味20年の節目の年を迎えます。
この20年の間に色々ありました。
ここ数年はIT技術の進歩がめざましく、とりわけWebの世界においては様々な言語やフレームワークが誕生しては消え(更新が途絶えたり)、Javaにとってはある意味混沌とした時代でもありました。
 
私はStrutsを10年ぐらいやっていました。それも1系を。
Javaが誕生してから半分の期間も!
Struts 1系は2013年4月にEnd Of Life(開発停止)が宣言されました。そもそも1系の最新である1.3.10がリリースされたのは2008年12月の事なので、事実上もっと前に終わっていた技術だと思います。
それでも企業で使われていたのはStrutsを使える技術者なら容易に集められたり、いわゆる枯れた技術(漠然とした安心感や根拠の無い使い古された技術だと安心)だったからなのではないでしょうか。

Strutsをやっていた10年余りの間にASP.NET(言語は何故かVB系ばかり…)をやっていたり、ベンダーの何とかフレームワークとか、何とかフレームワークとか何とかフレームワークを使っていたりしていました。
これらのフレームワークに一貫して言える事は、MVCモデルのVに当たるjspやaspxにロジックが入り込む事が往々にしてあったという事です。(最近のASP.NETはちょっと勉強不足なので、ここに書いている内容に当てはまらないかも知れません。)
 
 
前置きが長くなってしまいました。
今日は、Strutsぐらいしか知らない人がJava EE 7をやってみて良い意味で衝撃を受けたという事を書いてみようと思います。
(悪い意味では、もっと早くJava EE(6以降)に触れておけば良かったという後悔。。)  
 

ViewでJavaScriptを使うという事

一つの例を示したいと思います。
ユーザーの入力によって動的に計算する際にjQueryを使ってテキストボックスの値と隠し項目のhiddenの値を計算したり、一覧に行を追加したりする場合にDOMをjQueryから操作するのが本当に面倒でした。一回作ってしまえば、後は楽と思うかも知れませんが、仕様変更で項目が増減されたときもJavaScriptを修正しないといけない所が面倒でバグの原因にもなっていました。
 
次のレガシーなjspをご覧下さい。
数ヶ月前までStrutsを触っていたのに、改めて書いてみると結構うろ覚えなので間違っている所もあるかも知れません。

<input type="button" value="行追加" onclick="addrow()">
<table>
  <thead>
    <tr>
      <td>No</td>
      <td>品名コード</td>
      <td>品名</td>
      <td>倉庫コード</td>
      <td>倉庫名</td>
      <td>在庫数</td>
      <td>単価</td>
      <td>金額</td>
    </tr>
  </thead>
  <tbody>
    <logic:iterate id="item" property="productList" indexId="idx">
    <tr>
      <td>
        <bean:write name="idx" />
      </td>
      <td>
        <bean:write name="item" property="hinmeiCd" />
      </td>
      <td>
        <bean:write name="item" property="hinmeiNm" />
      </td>
      <td>
        <bean:write name="item" property="sokoCd" />
      </td>
      <td>
        <bean:write name="item" property="sokoNm" />
      </td>
      <td>
        <html:text name="item" property="zaikoSu" 
                   size="10" maxlength="3" 
                   onblur='calc(<bean:write name="idx" />)' />
      </td>
      <td>
        <bean:write name="item" property="tanka" />
      </td>
      <td>
        <html:text name="item" property="kingaku" 
                   size="10" readonly />
      </td>
      <input type="hidden" name="zaikoSuMax[<bean:write name='idx' />]">
    </tr>
    </logic:iterate>
  </tbody>
</table>

このテーブルは在庫数を入力すると単価と計算して合計を算出する事が出来、在庫の最大数とのチェックも行えます。
また、行追加ボタンを押すと一番下に新しい行が追加出来ます。
ただし、それらはJavaScriptを使って書いておく必要があります。
EclipseJavaScriptの入力補完が全く効かず、デバッグもし難いので書いては動かして書いては動かしての繰り返しが辛かった日々を想い出します。。。
もしかしたらNetBeansIntelliJではその辺りが充実しているのかも知れません。
 
少し調べてみるとEclipseでもJavaScriptのコード補完が出来るようですが、当時は知りませんでした。
JavaScript 開発環境の用意(Eclipse WTP/JSDT) | hiromasa.another :o)  
 

Viewが完全に切り離せる

Java EE 7 (JSF2.2) を使う場合は、JavaScriptを全く記述する事なく同じ事が出来てしまいます。
Java EE 6でも基本的に同じだと思います。) しかもAjaxを全く意識しなくても画面の部分的な更新が簡単に出来ます。
この2点がとても素晴らしいところです。
ロジック部分がJava側に集約されるのでJUnitでしっかりとテストが出来るという点も素晴らしいです。
 
次のxhtmlをご覧下さい。
(実際に動かしていないので、間違っている部分もあるかも知れません。。。)
hから始まるタグはJSF標準のタグで、pから始まるタグは PrimeFaces というJSFベースのリッチUIコンポーネントです。
見た目が凄く綺麗になりますし、本当にリッチなUIが使えます。
jQueryプラグインで部分的にリッチにしてしまってアンバランスなUIを構築してしまうという痛恨のミスも最早過去の話です。

<h:form id="form">
  <p:growl id="msgs" showDetail="true" />
  <p:outputPanel id="panel">
    <p:commandButton value="行追加" 
       actionListener="#{zaikoViewModel.addRow}" 
       update=":form:panel, :form:msgs" />
    <p:dataTable var="item" value="#{zaikoViewModel.details}" 
       rowIndexVar="rowIndex">
      <p:column headerText="No">
        <h:outputText value="#{rowIndex+1}" />
      </p:column>
      <p:column headerText="品名コード">
        <h:outputText value="#{item.hinmeiCd}" />
      </p:column>
      <p:column headerText="品名">
        <h:outputText value="#{item.hinmeiNm}" />
      </p:column>
      <p:column headerText="倉庫コード">
        <h:outputText value="#{item.sokoCd}" />
      </p:column>
      <p:column headerText="倉庫名">
        <h:outputText value="#{item.sokoNm}" />
      </p:column>
      <p:column headerText="在庫数">
        <h:inputText id="zaikoSu" value="#{item.zaikoSu}" >
        <p:ajax event="blur" listener="#{zaikoViewModel.onBlur}" 
           update=":form:panel, :form:msgs" />
        </h:inputText>
      </p:column>
      <p:column headerText="単価">
        <h:outputText value="#{item.tanka}" />
      </p:column>
      <p:column headerText="金額">
        <h:outputText value="#{item.kingaku}" />
      </p:column>
    </p:dataTable>
  </p:outputPanel>
</h:form>

先ほどのjspJSFに書き換えるとこうなります。
個人的にはテーブルのヘッダー部分とボディー部分を一緒に書ける所が直感的で良いなと思います。
 
このxhtmlにはhiddenが書かれていません。
代わりにp:ajaxというタグがあり、listenerで指定したzaikoViewModelクラスのonBlurメソッドが呼び出される仕組みがあります。
eventに指定したクライアント側のイベント実行時にformで囲んだ値がサーバー側に送信され、メソッド内での処理が終わるとupdateで指定したコンポーネントが更新されます。
これぞまさしくStruts時代に憧れていたAjaxです。
 
もう一つ、行追加ボタンについて。
こちらもボタンが押されたときにactionListenerで指定したクラスのメソッドが呼ばれ、updateで指定したコンポーネントが更新されます。
行追加と言っても、Java側でdetails(大体がArrayList)に空のオブジェクトをaddすれば完了です。
たったそれだけで行追加が出来ます。
もうjQueryでDOMをこねくり回す必要はありません。

JavaScriptでやっていた計算やDOMの操作がJSFを使う事によってJava側で出来てしまうのです。

Java EE 6以降をご存知の方には当たり前だと思いますが、知らなかった私はかなり衝撃を受けました。
これって意外と知らない人多いんじゃないかと思います。
(知ってたらJava EEが流行ってる気がするので。)
(技術系の記事によくあるサンプルだと実際の業務システムイメージが付きにくいという事もあるのかも知れませんね。)
 

業務システムでもUXを

今までjQueryを使って部分的にリッチになっていたり、いまいちパッとしない業務システムの画面もPrimeFacesを使う事でシステム全体が同じデザインで統一されます。デザインを変更するテーマファイルも結構あるので、気に入るものがきっとあると思います。
エンタープライズ系のシステムもエンドユーザー向けのシステムと同じようにとことんUXに拘ってもいいのではないでしょうか。
洗練されたUIはとても使い勝手が良く、おそらくソースも綺麗でしょう。
 
UXに関してちょうど良いタイミングで記事が出ていましたね。

 
 

まとめ

Java EEを使うとAjaxが簡単に使え、PrimeFacesと組み合わせる事でリッチなWebシステムが構築出来ます。
もうJavaScriptで無駄な時間を消費することもありません。
Viewにロジックが入り込まないため、JUnitを使ったテストで充分網羅出来ます。(Excelにエビデンス貼り付けるの止めようよ。)
JUnitとの相性も良いということは仕様変更にビクビクする事もありません。
簡単に再テスト出来るし、何より自分で書いたコードでテストが完了するので安心感もあります。
Java SE 8もあるので、ラムダとStream APIでコーディングが楽しくなるということも言っておきます。
 
jspベースなフレームワークを使っているという人が居るなら、マイグレーションの際にはJava EE 7を断然オススメします。
使い勝手も悪く工数も掛かるフレームワークはどんどん淘汰されて行くでしょう。
 
 

おまけ

先日、関ジャバに初めて参加しました。
 
 
Javaエンジニア養成読本にサイン貰いました。
写真大きいままですけど。。。

f:id:koichi0814:20141203004353j:plain

 
 
本の内容はこちらにあります。

WildFlyの管理画面にアクセス出来るようにする

[前提]
Mac OS X Yosemite
WildFly 8.1.0
 

管理画面のURL

WildFlyの管理画面へのアクセスは次のURLでいいのですが、いきなりアクセスしても設定が必要と言われてしまいます。  

http://localhost:8080/consolef:id:koichi0814:20141123055201p:plain

設定は簡単

add-user.sh を実行するだけです。

$WFLY_HOME/bin/add-user.sh 

f:id:koichi0814:20141124101011p:plain

 

再度管理画面にアクセス

http://localhost:8080/consolef:id:koichi0814:20141124100520p:plain

先ほど設定したユーザー名とパスワードを入力してログインします。

f:id:koichi0814:20141124101028p:plain

WildFlyよくある質問 - 管理GUI に設定方法が書かれていましたが、8.1.0では若干違うようです。
https://developer.jboss.org/wiki/JBossAS7WildFlyFAQJapanese?_sscc=t#jive_content_id_GUI

Visual Studio 2013 Express を入れたまま Visual Studio Community 2013 はインストール可能だが、日本語パックを入れると警告が・・・

分かっていましたけどやってみました。
Program Filesを見てみるとExpressがインストールされていた所に上書きされた模様。

f:id:koichi0814:20141115042908p:plain

スタートメニューにもExpressが残りつつ、Community版が出ています。
Visual Studio Community 2013 という名前ではなく、Visual Studio 2013 となるようです。

f:id:koichi0814:20141115043032p:plain

コントロールパネルのプログラムの一覧もこんな風に・・・

f:id:koichi0814:20141115043244p:plain

憶測の域を出ないですが、 Express版が参照している数々のDLLがCommunity版によって置き換わっているような気がするので、この状態でExpressで動かすと色々問題が出てきそうな気がします。(一応、どちらも起動しました。)
Community版の方がExpress版よりもアドインが使えるなど強化されているし、もうExpress版を使う必要もないと思うので、Express版をアンインストールしてからCommunity版をインストールした方が精神衛生上も良いかも知れません。

日本語パックをインストール

やっぱり同じ場所にインストールされるため不都合が事があるようで。。。

f:id:koichi0814:20141115045418p:plain

警告はOKボタンを押すしかないので、押してみるとインストールは続行されて・・・

f:id:koichi0814:20141115051725p:plain

ほんまかい!怪しい。実に怪しい。
内部がぐちゃっとしてる感満載。
 
Community版を起動すると、日本語パックを入れているのにも関わらず英語で起動しますが、TOOLS > Options > Environment > International Settings で日本語を選択して再起動すると日本語が有効になります。
 
一応、Express版を入れたままCommunity版も入れられましたが、やっぱりExpress版をアンインストールしてからの方が良い気がします。
 
後からアンインストールしてもちゃんと消せるようです。

f:id:koichi0814:20141115054827p:plain

MacにJava8u25とNetBeans8.0.1とWildFly8.1.0をインストールして連携してみる

Struts(1系)歴10年という黒歴史からJavaEEへというお題で連載出来ればやりたいと思います。
 
JavaEENetBeansという記事をちらほら見かけるので、10年以上ぶりにNetBeansをインストールしてみる事にしました。 10年以上Eclipseだったので、いまさら別のIDEっていうのもなぁと思っていたんですが、そこで止めちゃうとStruts脳(業務システム開発でJavaEE7を知らず、未だにレガシーなフレームワークを使っている状態を表す例え)のように思考停止になりそうなので。
(仕事ではEclipse使ってますけどね。)  
 
 
結論から言うと、特に連携という程のものでもありませんでした。
 
 

1. JDK8のインストール

NetBeansのインストールに必要だし、WildFlyにも必要なのでインストールします。MacJavaは最初からインストールされていますが、バージョンが6だったりするので一気に最新版にします。

http://www.oracle.com/technetwork/java/javase/downloads/index.htmlf:id:koichi0814:20141109192837p:plain

後から気が付きましたけど、JDK 8u25 & NetBeans 8.0.1の方でも良かったんじゃ。。。

f:id:koichi0814:20141109193223p:plain

jdk-8u25-macosx-x64.dmgをマウントしたら後はインストーラーを実行してインストールします。インストール手順は画面のガイドに従えばOKです。

f:id:koichi0814:20141109193956p:plain

2. NetBeansのインストール

暫く公式サイトも見ていなかったので久しぶりです。

https://netbeans.org/f:id:koichi0814:20141109180030p:plain

 
早速ダウンロードしてみましょう。 選ぶのはJava EEのタイプです。

https://netbeans.org/downloads/index.htmlf:id:koichi0814:20141109181542p:plain

 
ダウンロードしたnetbeans-8.0.1-javaee-macosx.dmgをマウントして出てきたインストーラーを実行します。例によって画面のガイドに従ってインストールします。

f:id:koichi0814:20141109194857p:plain

起動すると以前(遥か昔)のJava Look&Feelのようなダサい感じではなく滑らかな感じがしてます。
好感が持てますね。

f:id:koichi0814:20141109183831p:plain

3. WildFlyのインストール

NetBeansをインストールするとGlassFishも付いて来ますけど、GlassFishは使ったことないし世の中がWildFly8に流れつつあるという話をアチラコチラで聞くので、それに習ってWildFlyをインストールしてみたいと思います。
(GlassFish4.1が2014/09/09にリリースされていますので、そのままGlassFishでも良いような気もしますが。。。)

http://www.wildfly.org/f:id:koichi0814:20141109195712p:plain

ZIPでもTGZでも好きな方を選択します。
解凍先はどこでも構いません。
ここでは、/Users/koichi/Documents/Projects/AP/ に解凍しました。

http://wildfly.org/downloads/f:id:koichi0814:20141109201353p:plain

 

起動させてみましょう。
cd /Users/koichi/Documents/Projects/AP/wildfly-8.1.0.Final/bin
./standalone.sh

f:id:koichi0814:20141109204341p:plain

4. NetBeansWildFlyの連携

NetBeansを起動します。
ツール -> プラグイン -> 使用可能なプラグインWildFlyプラグインがないんですが問題ありません。最初から入っています。
 
新規プロジェクトを作成する手順で設定が可能です。

f:id:koichi0814:20141109221542p:plain

f:id:koichi0814:20141109221609p:plain

f:id:koichi0814:20141109221619p:plain

f:id:koichi0814:20141109221658p:plain

f:id:koichi0814:20141109221715p:plain

f:id:koichi0814:20141109221734p:plain

f:id:koichi0814:20141109221746p:plain

サービスのサーバーにWildFlyアプリケーション・サーバーが追加されているので、ショートカットメニューから起動が可能です。

f:id:koichi0814:20141109222622p:plain

NetBeans8.0.1ではWildFlyプラグインのインストールが必要なく最初から選択可能となっています。プラグインをインストールしようとすると既にインストール済みというメッセージが出たので気付きました。

iOS8.1にアップデートした後でMacをYosemiteにアップグレードするとiPhone側のユーザー辞書が消える【追記あり】

同じような人が居るか分かりませんが備忘録ということで。
 
 
iPhoneをiOS8.1にアップデートした後で、MacYosemiteにアップデートした場合にユーザー辞書が消えてしまうという現象(自分の場合はiPhone側のユーザー辞書が消えて、Mac側は残っていました。)がネット上を騒がしている中、自分もその流行に乗ってしまったので、同じように流行がお好きな方の為に書いておきます。
長々と書いているので、解決策だけ見たい人は一気に下までスクロールして下さいね。
 
 
OSのアップデートが来たら速攻で上げ、
iPhone:4→5→6
Mac:Lion→Mountain Lion→Mavericks→Yosemite
と来て、とうとうです。ありがとうございます。
 
 

解決方法はネットで探せば結構ある

iPhone側のユーザー辞書が消えてしまって、ネットを色々調べてみると、復活したという人が結構居たので何とかなるなと思っていました。

 
結構色々と試す方法が書かれてあって、順番にやって行くのですが、なかなか解決せず困っていると、 最後に

【追記 2014年10月25日】 Mac をお使いで「Yosemite」にアップデートされた場合、今回の方法では改善されないようです。

と書かれてあり、愕然としました。
今まさにYosemiteにしたところ・・・
 
 

こういうときのAppleサポート

以前iPhoneのスリープボタンの不具合のときに、交換プログラムの依頼をチャットでやってみたんですが、面倒だったので今回はiPhoneのイヤフォンをしながら電話することにしました。
両手が使えるので便利ですよね。
 
 
サポート担当に上記サイトに書かれてある事は大体実施済みという事を伝えたら、担当者が技術専門の人に交代して、また同じような説明をしました。
具体的には、

  • 一般→情報を開いて、ユーザー辞書を開く
  • iCloudをサインアウトし、再度サインインを行う
  • キーボードの自動修正などの項目をオフ→オン→再起動
  • キーボードの変換学習をリセット
  • iCloud Driveをオフ→オンにする

などです。
 
 
結局その担当者でも解決出来ないので、MaciPhoneの情報を吸い上げて、エンジニアに投げて解決方法を探るという事になりました。
サポートの人とMacのデスクトップを共有しながら(サポートの人がこちらのデスクトップが見れるアプリをインストールしました)、手順に則ってMacの情報を取得しました。
 
 
続いてiPhoneの情報を吸い上げるアプリをMacにインストールしてiPhoneMacを繋げたんですが、アプリがiPhoneを認識してくれなくて、何でかなーと思いながらiPhoneを触っていたら、ユーザー辞書が復活していました!!
え?何かした?
 

手順を整理

以下、ユーザー辞書が消えてから復活するまで順を追って説明します。

  1. iOS8.1側ではiCloud Driveはオフにした状態で、MacYosemiteにアップグレードします。
  2. Mac側でiCloudからiCloud Driveにアップグレードします。
  3. iPhone側もiCloud Driveにアップグレードします。
    iCloud DriveMacOSYosemiteにアップグレードした上で同一アカウントの全ての端末で有効にしないと意味がないため)
  4. この時点でiPhone側のユーザー辞書が消えます。(実際には同期できていないだけ)
     

問題なのは、iPhoneがどのタイミングでユーザー辞書を同期しているかです。
メモなどの同期は今までのiCloudと同様にiPhoneから登録してもMacから登録しても瞬時に同期されます。
ユーザー辞書に関しては、ネット上にも様々な情報が溢れていますが、それらの情報でも解決しませんでした。
 
 

解決方法はこれ!

どれをやってもダメでしたが、自分の場合は、

  1. iCloudを一旦サインアウトしてサインインし直す
  2. iCloud Driveをオフ→オン  

これでユーザー辞書が同期されました。
重要なのはこの順番でないと同期されなかったということ。
(一旦同期出来たあとは、iCloud Driveのオフ→オンで大丈夫そうです。)  
 

同期のタイミングはいつ?

ついでに同期のタイミングを調べるために、iPhoneMac双方でユーザー辞書の登録をして同期されるか試しました。

  1. iPhoneでユーザー辞書を登録→Macで確認
    問題なく同期が取れていました。
  2. Macでユーザー辞書を登録→iPhoneで確認
    同期されていませんでした。
    ※この場合でも、一旦iCloud Driveをオフ→オンすることで同期されるようになりました。

 
 
ユーザー辞書は復活しましたが、同期のタイミングは問題という認識なので、サポートからエンジニアに情報を上げてもらう事になりました。
 
 
【2014/11/05 追記】
MaciTunesiPhoneの同期を取ったぐらいしかした記憶はないんですが、またしてもiPhoneのユーザー辞書が空っぽになっていました。今回は、上記の手順でも復活しませんでしたが、iPhoneを再起動することで復活(同期)しました。再起動する際、ユーザー辞書を開いた状態だと再起動後に直ぐに同期されませんでしたが、一旦ユーザー辞書からキーボードの設定画面に戻ってもう一度ユーザー辞書の設定画面を開くと同期されたようです。
この方法で絶対に復活するという事が断言出来ない所が歯がゆい所です。