Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

Visual Studio CodeでJavaを書いてみる

この記事は「Visual Studio Code Advent Calendar 2017」の7日目の記事です。

昨日は@74thさんの「Visual Studio Codeの各言語、環境のデバッグの仕方を集めたサイトを作ってる」でした。
明日は@Maxfield_Walkerさんです。

私からは「Visual Studio CodeでJavaを書いてみた話」をしたいと思います。

なんでVisual Studio CodeでJava書くの?

Javaのコードを書くとき、通常であればIntelliJ IDEAEclipseNetBeansなどのIDE(統合開発環境)を使います。コード補完やJavaDoc、ビルド、ユニットテストなど、様々な機能と周辺ツールを利用可能で、効率良く開発ができるためです。

私はJava EE開発をやっていたので、ずっとNetBeansをメインに使ってきたのですが、最近Visual Studio CodeでJavaを書く機会が増えてます。そのきっかけは11/24に参加した「Spring Fest 2017」でRed Hatの方がデモにVisual Studio Code使っていたのを見たためです。

そのときは「へー、Visual Studio CodeでJava書けるんだ」ぐらいの印象だったのですが、実際に使ってみたところ「軽い!」と動作のサクサク感に感動しました。

私が普段利用してるノートPCはVAIO Duo13という少し古い機種ではありますが、インテル Core i7-4650U (1.70 GHz)・メモリ8G・SSDでそこまで悪いSpecではありません。それでもNetBeansの起動は少し遅く感じます。

ちょっとしたお試しコードであればサクッとVisual Studio Codeで書いて動かす、というのは1つの選択肢になるのではないかなと思います。

Visual Studio Codeとは?

Visual Studio Code Advent Calendarなので、今さら書く必要がないと思いますが、Java方面だと名前は知ってるけど触ったことない、という方もいらっしゃる可能性があるため少しだけ触れておきます。

Visual Studio Codeは2015年にMicrosoftがリリースしたエディタです。Visual Studioという名前からWindowsでの動作をイメージを浮かべてしまいがちですが、Windows、Linux、macOSのプラットフォームで動くエディタであるのが特徴です。また、拡張機能(Extensions)は種類が豊富で開発も盛んです。
marketplace.visualstudio.com

f:id:kikutaro777:20171126023412p:plain

Visual Studio Code x Java

Visual Studio Codeを使ってJavaを書いてみようと思った方は一度公式サイトのドキュメントを参照ください。
code.visualstudio.com

以下、簡単に紹介します。

Java Extension Pack

Java Extension Packという拡張機能がMicrosoftから提供されています。基本的にはこちらをインストールするだけでOKです。
marketplace.visualstudio.com
f:id:kikutaro777:20171126023905p:plain

依存関係をみると以下の2つがあって、Red HatとMicrosoftが提供元となっています

Dukeかわいい。
f:id:kikutaro777:20171207005226p:plain

なんでテントウムシなんだろう…。J2SE 1.3.1のコードネームがLadybird=テントウムシらしいけど、それなのかな…。
f:id:kikutaro777:20171207005329p:plain

この2つはJava Extension Packをインストールすれば自動的にインストールされます。

Java Test Runner

12月1日にVisual Studio CodeがJUnitに対応したというアナウンスがありました。(ただしJUnit4)
blogs.msdn.microsoft.com

早速Publickeyで日本語記事になっていましたね。
www.publickey1.jp

こんな感じで今後もJavaに関連した拡張が増えていくと嬉しいなぁ。

実行結果

以下の簡単な例を試す手順をまとめます。(Mavenは入ってる前提)

  • Java Extension Pack x Spring Boot
  • Java Test Runner
Java Extension Pack x Spring Boot

Spring InitializrでWebのDependencyだけ入れたプロジェクトを落として解凍します。
f:id:kikutaro777:20171207011057p:plain

Visual Studio Codeの「ファイル」メニューから「フォルダーを開く」を選択し、解凍したフォルダを指定します。
f:id:kikutaro777:20171207011209p:plain

f:id:kikutaro777:20171207011438p:plain

開きました。
f:id:kikutaro777:20171207011548p:plain

「デバッグ」メニューから「デバッグの開始」を選びます。(F5キーを押してもよいです)
f:id:kikutaro777:20171207011754p:plain

すると環境の選択メニューが表示されるので「Java」を選びます。
f:id:kikutaro777:20171207012044p:plain

暫く待つと、launch.jsonが自動生成されるので必要なパラメータを指定します。今回はportの部分を空文字から8080に変更しました。
f:id:kikutaro777:20171207012242p:plain

再度「デバッグの開始」(またはF5)を実行すると、無事にSpring Bootのロゴが表示されてアプリケーションが実行されました。
f:id:kikutaro777:20171207012436p:plain

こんな感じで非常に簡単です。

Java Test Runner

こちらも簡単で、JUnitのテストコードを書くと下図のようにテストメソッドの上に「Run Test」「Debug Test」が表示されます。Debug Testはブレークポイントを置いてテストコードをデバッグできる実行方法です。
f:id:kikutaro777:20171207014436p:plain

右側のチェックマークやバツマークはテストの成功可否を表します。

その他機能

最低限の機能は揃ってます。

コード補完
f:id:kikutaro777:20171207014846p:plain

インポートの補助
f:id:kikutaro777:20171207012755p:plain

JavaDocのツールチップ表示&Help表示
f:id:kikutaro777:20171207013613p:plain

ウォッチ式
f:id:kikutaro777:20171207013929p:plain

定義への移動や
f:id:kikutaro777:20171207014935p:plain

参照の検索
f:id:kikutaro777:20171207015031p:plain

ステップイン・ステップアウト・ステップオーバー
f:id:kikutaro777:20171207015143p:plain

まだまだ機能的に足りない点はあると思いますが、ちょっとしたJavaコードを書く場合などには軽量でサクッと動くVisual Studio Codeを利用するのもありではないかなと思います。Visual Studio CodeはLinuxでもMacでも動くので、Java開発者の方は是非お試しください。

最後にVisual Studio Codeと全然関係ないのですが、来月以下のイベントを開催するので、興味がある方は是非ご参加ください!!
sendgrid.kke.co.jp

エンジニアと法律家の勉強会「StudyCode」に参加したきっかけ

この記事は、エンジニアと法律家の勉強会 #StudyCode Advent Calendar 2017 の 3日目の記事です。

1日目はHidemi Araiさん
hidemi.hatenablog.com

昨日の2日目はshibacowさんでした。
visualized-laws.hatenablog.com

今回のエントリではエンジニアである自分がStudyCodeに参加しようと思ったきっかけについて書きたいと思います。

エンジニアに法律の知識なんているの…?

私は受託開発のシステム経験を10年くらいしてきて、昨年からサービス系の業務(米国サービスの日本代理店でテクニカルサポートなど)を担当してます。今まで仕事では法律を意識する機会は少なく、知識も株のインサイダーとかコンプライアンス関連など入社時に学んだ基本的なこと+αぐらいな気がします。

受託開発だと少し前に改正民法関連で瑕疵担保の話を意識したぐらいでしょうか。ただ、この辺も実際には営業やプロジェクトの上位レベルって感じで末端で開発してる自分は当事者意識が薄めだったり…。
itpro.nikkeibp.co.jp

で、一番意識したのが自分の趣味でWebサービスを作ろうと思っていたときです。今まで作ってきたアプリは個人情報を取得するようなものがなかったのですが、今作ってるものはメールアドレスは登録してもらう形で

ふと、あれ、メアドって個人情報になるんだっけ…?

と思ったのが法律、というか個人情報保護法を意識したきっかけでした。

メアドは個人情報なの…?

総務省のページに同様のQAがあるのですが「メールアドレスには、個人情報に該当するものとしないものがあります」と何か微妙な線引きがある様子。
f:id:kikutaro777:20171203020828p:plain
総務省|行政機関・独立行政法人等における個人情報の保護|<3 個人情報の該当性>
法令・ガイドライン等

登録時にこの線引きの判定入れるのはナンセンスなので、基本的には個人情報と考えたほうが良さそうです。

ちなみに今年5月30日から施行された「改正個人情報保護法」では今まで対象外だった5,000人以下の個人情報を取り扱う小規模事業者も対象となって、気を付けるべき点が増えてるので、この辺も要チェックです。

PDF直リンですが、わりとわかりやすいガイドが経済産業省から出てます。
http://www.meti.go.jp/policy/it_policy/privacy/downloadfiles/01kaiseikojinjohopamphlet.pdf

利用規約とかプライバシーポリシーってどうやって作るの…?

じゃあ利用規約とかプライバシーポリシーを用意するかー、と思ったのですが

あれ、趣味レベルのサービスなんだけど、何をどこまで書く必要があるの…?

と手が止まりました。ググると、利用規約やプライバシーポリシーのテンプレートなんかも結構あるので、そういうのを上手くベースにするのが良いのかなぁと思いつつ、企業向けが多いので中々使いにくかったりも…。

そんなこんな調べてるとき、以下の書籍を買いました。
良いウェブサービスを支える「利用規約」の作り方

利用規約を何のために用意するのか、とかわかりやすく書いてあって勉強になりました。そして、エンジニアもある程度、法律のこと知っておかないといかんのだなぁと改めて。

ちなみに作ろうとしてるサービスは英語ページも用意する予定なんですが、利用規約やプライバシーポリシーを英語でも準備するの大変だなぁ…とか、EUの個人情報保護法(一般データ保護規則(GDPR))って厳しくなったって聞くけど、その辺は気にするべきなのどうなの?とか、他にも知っておかないと…という状態です。

相談相手がいない!

こういう趣味レベルのサービスで定義するものだと、相談できる人がいないし、中々学ぶ場もないなぁ…と思ってSNSに書いたところ、タイミングよく「StudyCode」(=クリエーター・エンジニアからプログラミングを教わり、法律家から法律を学ぶ街角勉強会)を主催されてる方から今度こういうの始めます、と教えていただき参加することにしました。

studycode.connpass.com

勉強会はエンジニアの方以外に、企業で知財関係を担当されてる方、行政書士や弁護士の方など幅広く参加してて面白いです。今後セッションで困ってることを共有するような話もあるといいなぁと。

特許庁&GitHub

エンジニアと法律が交わる面白い話の1つが先日あった以下のニュースです。
it.impressbm.co.jp

タイトルに「官公庁」「DevOps」「GitHub」と並ぶだけでなんともすごいw

ちなみに記事の写真真ん中にいらっしゃる足立さんもStudyCode主催メンバーをされてて、0回目、1回目ともに非常に面白い話をされてました。

今までの様子

StudyCodeのツイートは以下にまとめてます。

togetter.com
togetter.com

次回は来年2月頃を予定?とのことです!

Send With Confidence Tourが東京に!

先日、米国のニューヨーク証券取引所でIPOして盛り上がってるSendGridですが

今年、Send With Confidence Tourというイベントでロンドンアムステルダムニューヨークサンタモニカサンフランシスコと世界を回ってました。

sendgrid.com

コンテンツとしては

  • Email trends and benchmarks
  • Common email marketing mistakes and how to avoid them
  • Deliverability need-to-knows
  • SendGrid’s vision of the future of email

といった辺りで、メール界隈のトレンドやメールマーケティングでよくやる間違い、到達率を上げるノウハウや将来のメールに対するSendGridのビジョンなど幅広いものでした。

で、そのイベントを来月12/13に東京(TECH PLAY SHIBUYA、旧dots.)で開催することになりました!米国メンバーが来日してのセッションと弊社セッション、そして日本のお客様によるユーザ事例セッションもあります!SendGridを既に利用されてる方から、まだ使ってないけどメールマーケティングに興味がある、という方まで幅広くご参加いただければと思います。もちろんAPIとかテクニカル面に興味ある方も大歓迎です。是非ご参加くださいー!
techplay.jp

弊社による紹介ブログはこちらです。
sendgrid.kke.co.jp

今日は完全に宣伝ブログでした(^^;;;

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村