まめログ

Javaプログラマの歩み

Spring Fest 2017に参加しました

だいぶ日が経ってしまいましたがレポ。

2017年11月24日に開催された「Spring Fest2017」に参加しました。

springfest2017.springframework.jp

午前中は健康診断とかぶってしまい、午後からの参加になってしまいましたが、
濃密なセッションを聞くことが出来、大変有意義なイベントでした。

Spring Security 5 解剖速報

業務アプリケーションを開発する際、切っても切れないのがセキュリティですね。
Spring Securityの情報を聞きたかったので参加。

www.slideshare.net


かなり深いところまで説明してくださっていたので、参考になりました。
認証・認可の具体的な実装方法は、手を動かしてみないとなー。

ドメイン駆動設計のためのSpringの上手な使い方

みんな大好きDDD。
DDDの第一人者である増田さんのセッションを聞かずにはおれない。

www.slideshare.net

感想としてはDDDの概要説明より、実際にSpringでどのように実装してくかを説明してほしかったな~と。

日本一やさしく説明する予定のマイクロサービス入門

マイクロサービスアーキテクチャオブジェクト指向と同じ説明が出来るっていうのは面白かったです。
何度も発表前に念を押されたとおり、初心者向けでした。

www.slideshare.net

Spring エンジニアが理解すべきフロントエンド入門 - Angular編

Springでサーバサイド作ったとしても、フロントエンドはどうすればいいんだということで気になっていたAngularのセッションを聴講。
Angularの概要説明で、実際のサーバサイドとの連携方法などは無かったので、
手を動かせってことですね。

Spring BootとSpring Cloudで始めるマイクロサービス

最後はスベり芸人せろさん(@cero_t)のセッションへ。
マイクロサービスアーキテクチャを実際に適用・運用している人の話は参考になります。
ギャグ少なめで真面目なセッションでした。


Springはあまり使えていませんが、会社の標準にしていきたいのでこれからもっと勉強していきたいと思います。
イベント運営の皆さん、登壇者の皆さんありがとうございました。

Docker for Windows でElasticsearch5.5,Kibana 5.5を動かしてみる #elasticsearch

Elastic Stack 5.5が先週リリースされました!

f:id:mamepika:20170710011218p:plain

Elastic Stack 5.5.0リリース | Elastic

今回はDocker上でElasticsearch、Kibanaを動作させてみました。
Dockerがいまいちわかってないので手順に誤りなどあるかもしれませんが、
誤りについてはご指摘頂けると幸いです。

DockerのElasticsearchコンテナを複数立てて、クラスター組みたかったんですが、
Dockerよくわかっておらず、そこまで出来ないまま月曜になってしまいました。

コンテナごとの細かい設定をどこで反映させるかもわからず、ただ動かすだけになってます。

環境は以下の通り。

OS:Windows10 Pro
CPU:Core i7 4790K
Mem:32GB

Docker for Windowsのインストー

WindowsでDockerを動かすために、Docker for Windowsというソフトをインストールします。
以下のURLからダウンロードできます。
docs.docker.com

インストールが完了するとHyper-V上にLinuxマシンが出来ているので確認してみます。
f:id:mamepika:20170710002949p:plain

動作確認

コマンドプロンプトPowershellでdocker versionコマンドを打ってみて、動作確認をします。

f:id:mamepika:20170710003224p:plain

Elasticsearch用Dockerコンテナの実行

まず、Elasticsearchを動作させるため、Powershellで以下のコマンドを入力します

docker run -p 9201:9200 -e "http.host=0.0.0.0" -e "transport.host=127.0.0.1" docker.elastic.co/elasticsearch/elasticsearch:5.5.0

Elasticsearchの動作確認

Webブラウザで「http://localhost:9201」にアクセスします。
X-Packが有効になっているため、認証が必要になりますが、
USER:elastic
PASS:changemeでログイン可能です。

以下のように、JSON形式でElasticsearchの状態が帰ってくれば動作しています。
f:id:mamepika:20170710003823p:plain

Kitematicの導入

GUIでDockerコンテナの設定などが行えるKitematicというツールを導入します。

タスクトレイにあるDocker for Windowsのアイコンを右クリックし表示されるコンテキストメニューから
「Kitematic」をクリックします。
f:id:mamepika:20170710004447p:plain
Zipファイルがダウンロードできるので、中のexeファイルを実行すればOKです。
次回以降、Docker for Windowsコンテキストメニューから実行させるためには、
C:\Program Files\Dockerの配下に、解凍したフォルダを「Kitematic」にリネームして配置すればOKです。

実行すると以下のようにElasticsearchのコンテナが表示されているはずです。
※コンテナ名を分かりやすいようにリネームしています。
f:id:mamepika:20170710004932p:plain

Kibana用Dockerコンテナの実行

Kibanaを動作させるため、Powershellで以下のコマンドを入力します

docker run -it --rm -p 5601:5601 docker.elastic.co/kibana/kibana:5.5.0

Kitematic上でコンテナが確認できます。
f:id:mamepika:20170710005132p:plain

Elasticsearchのコンテナに接続する

Kitematic上でElasticsearchのコンテナに接続するように設定します。

右上の「Setting」⇒「Network」をクリックします。
表示されたLinksでコンテナを選択します。
f:id:mamepika:20170710005335p:plain

選択したら、名前も入力して+ボタンをクリックします。
f:id:mamepika:20170710005448p:plain

Kibanaにアクセスする

以下のように認証画面が表示されれば成功です。
USER:elastic
PASS:changemeでログインできます

f:id:mamepika:20170710005546p:plain

Versionの確認

X-Packが有効なので、左のメニューが多めに表示されていますね。
index name patternを指定しないと画面にエラーが表示されるので、「.kibana」を指定してエラーを消しています。
f:id:mamepika:20170710005746p:plain

Monitoringで確認するとElasticsearchのVersionが5.5.0になってますね!
クラスターのステータスがyellowなのはノードが一つで、冗長構成になってないからかな。
f:id:mamepika:20170710010148p:plain

Managementで確認するとKibanaもきちんと5.5.0です。
f:id:mamepika:20170710010300p:plain

filterのGUIによる設定

filterの設定をクエリを書かずとも、GUIでクリックだけで設定できるようになりました。
f:id:mamepika:20170710010442p:plain

Kibana5.5の新機能は以下にまとめられているので詳しくは以下を参照してください!
acro-engineer.hatenablog.com

およそ2か月に一回のペースでバージョンアップがされて、
ますます便利になるElastic Stackから目が離せません。
特にMachine Learningは注目です。

Elasticsearch,Kibanaを5.2から5.4にアップグレードしてみた #elasticsearch

今年の初めに検証環境として用意して色々と試していたのが、Elastic Stack5.2だったので、
5.5リリースも直前というこの時期に5.4にしてみましたw
調べてもアップグレード方法が分からなかったのですが、簡単すぎるからわざわざ書いてないのかってくらいの簡単さでした。

f:id:mamepika:20170702025040j:plain


特に無停止とかを意識していない環境なので、何の問題もなくさくっと出来ました。

環境は以下の通り。

EC2インスタンスサイズ:t2.medium
OS:Amazon Linux
Java : Oracle JDK 8u121

Elasticsearchを5.4にアップグレードする

yumインストールではなく、rpmパッケージからのアップグレードで実施しました。

rpmパッケージのダウンロード

$ sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.3.rpm

DLしたrpmパッケージを使ってアップグレード

$ sudo rpm -Uvh elasticsearch-5.4.3.rpm

f:id:mamepika:20170702030255p:plain

バージョンの確認

curlコマンドで確認できます。

$ curl http://localhost:9200/

f:id:mamepika:20170702030126p:plain

5.4.3になってますね。

Kiabnaを5.4にアップグレードする

Elasticsearch同様にrpmパッケージよりアップグレード。

$ sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.3-x86_64.rpm

DLしたrpmパッケージを使ってアップグレード

$ sudo rpm -Uvh kibana-5.4.3-x86_64.rpm

以下のようなメッセージが出て完了。
f:id:mamepika:20170702025652p:plain

Kibanaにアクセスして,ManagementメニューからVersionを確認してみると、
5.4.3になってます!

f:id:mamepika:20170702030522p:plain

Visualizeの追加画面も新しくなってますね

f:id:mamepika:20170702030640p:plain

Visual Builderも。
f:id:mamepika:20170702024822p:plain

2周くらい周回遅れになってますが、新機能は来週試してみます!!

『Java本格入門』を読みました #アクロ本 #Java本格入門

f:id:mamepika:20170506203957j:plain

JJUG幹事会でいつもお世話になってる@cero_tさんが書いた本ということで、先行販売でゲットしてきました。

結論から先に言っちゃうと、Java書いてアプリ作ってる人には全員にお勧めできます。
自分はJavaチョットデキルという人でも、PJに関わる人全員がそうとは限りませんし、
入門者からベテランまで「気づき」のある本だと思います。
gihyo.jp


誤記とか修正点は以下のページを。

github.com



裏テーマが「35歳からのJava入門」ということでしたが、31歳の私にもズバリ効きました。

中でも、本になっていって嬉しかったのは。Chapter2の「2-4 名前の付け方に注意する」の部分です。

変数は名詞、メソッドは動詞や「不吉な臭い」をPJメンバーで共有できる足がかりを作ってくれたのには本当にありがたいところです。
こういった些細なんだけど、実際にコードを書く際に影響が大きいところが「本になっている」と
偉い人にも説明がしやすく、書き換えの時間を確保できることにつながりますし、
それがプロダクトの品質につながるので大きいんですよね。

『極める』と『たしなむ』

本書の目次を読むと、極められるものとたしなむだけのものがあることが分かります。

極められるもの

  • 配列とコレクション
  • 例外
  • 文字列操作
  • ファイル操作
  • 日付処理となってます。

Javaの文法や基本的な操作(誰が書いても変わらない部分)はこの本で極められるってことですね。
確かに一度書き方・考え方が分かれば、あまり引っかかるところでもない要素です。
※2冊目の入門書という位置づけのため、ある程度基礎があることが想定されています。

たしなむもの

書き方は分かった、じゃあ、どこに書くか、どういう名前で書くか、どういう構造がいいのかといったところはたしなむで終わっています。
確かにこの1冊で極められるものでもないですし、答えがあるものでもないので親切な書き方です。

最新の書き方が分かる

ストリーム処理、日付処理はラムダ式、Date And Time APIを盛り込んでいますし、
ファイル操作もnio2を想定していますので、Java7,8の書き方を覚えることができます。
また、従来の書き方も書かれているので、既存のプロジェクトのリファクタリングにも役立ちそうです。

汎用ライブラリの紹介もある

業務系のプロダクトで使う機会の多いApache Commonsの紹介があるのは嬉しいですね。
Apache Commonsやライブラリの存在を知らないと車輪の再発明をされてしまったりして、
工数増大、品質劣化につながります。
まず、ライブラリを探すっていう姿勢を取れるようになるのは重要です。

SIの現場で要件定義をし、実際にコードを書いてる著者の皆さんじゃないと書けない本だと思います。
新人教育に、そして自分の勉強に使っていきたいと思います。
いい本をありがとうございます!

第19回Elasticsearch勉強会に参加しました #elasticsearchjp

ちょっとと遅くなりましたが、勉強会の参加レポ。

第19回Elasticsearch勉強会­ #elasticsearchjp - Elasticsearch勉強会(Elastic Tokyo User Group) #elasticsearchjp (東京都) | Meetup

3月にサンフランシスコで行われたElastic{ON} 2017のフィードバックイベントだったので、仕事そっちのけで参加しました。

Elastic{ON} Re-cap

Jun Ohtani @ Elastic

日本からの参加者は50名程度

日本からスポンサーとして日立が参加。

ASK ME ANYTHING

Elasticのエンジニアに直接聞けるブース。常にエンジニアが数人立っている。
質問リスト持ってきてガッツリ質問してる人もいたり。

ご飯

ご飯も売り。
フードトラックが来る。

Filebeat Modules

5.3から。

今まではFilebeat1行1データでパースはLogstashを使う必要があった。

  • Elasticsearchだけでインデックスに入れる前の前処理を書くことができる。

⇒ingest node

  • moduleはそれを使用しているので、Filebeatがログをパースしているわけではない。

Time Series Visual Builder

Kibana 5.4から

メーターのVisualizeなどが追加。
今Timelionでやっている複雑なグラフもKibanaで行える。

機械学習 To train a model

異常値検知。
データの波形をもとに学習して、波形から外れた場合に画面に表示。

5.4からでX-Packの有償版。

Elastic Cloud Enterprise

AWS上でElastic Cloudで自動化しているがオンプレ環境でも出来るようになる。
GCPでも使える。

インフラエンジニアがおらず、プライベートクラウド使ってる弊社では、ECE使うのが一番楽そうなので、早く情報が欲しいところです。

Elasticsearch SQL

Coming soon

トランザクションは元々そういう概念が無いのでサポートするつもりはない。
提供方式は未定だが、今のところX-Packで行う予定。無償・有償は分からない。

GW中に来るかもと言われていたElastic Stack5.4がほんとにきちゃったので、
https://www.elastic.co/blog/elastic-stack-5-4-0-released

Machine Learningとか新しいKibanaの機能とか早く試していかないとですね。

BASEさん主催のPAY Developer Meetup #00 に参加してきた

週末募集開始されて、月曜開催というタイトなスケジュール。
特に用事なんて無いので参加させていただきました!

base.connpass.com

f:id:mamepika:20170328002814j:plain

BASEさんの新イベント用スペースめっちゃ綺麗でした!
椅子も今日出したばかりの新品らしい。

LT2本立ての構成でした。
次は喋ってみたいな~。

PAY ID決済 イントロダクション

speakerdeck.com

PAY事業部の高野さん。
PAY IDの概要から、実装までを見せてくれました。
ダッシュボードでクライアント用ID発行して、HTMLに1行追加するだけでカード入力画面にPAY ID決済ボタンが出現!

詳しくは↓
id.pay.jp

PAY ID

  • 2016年6月27日に提供開始した購入者向け決済サービス
  • PAY IDにクレカ情報や配送情報を紐づけることで都度入力せずに決済が可能
  • BASE加盟店を含む40万加盟店で利用可能

毎回決済のたびに財布からカード取り出して、番号やセキュリティコード入力する手間が省けるのでいいですよね。

導入方法

  1. 1 PAY ID Checkout

決済時の画面遷移なし
画面遷移させたくない

  1. 2 OAuth API

決済時の画面遷移アリ
住所や電話番号も扱えるので物販ECなどで利用

デモ

あっという間に実装されるさまは圧巻。
ダッシュボードのUIも今風でかっこいい。

質疑応答

Q.UIのカスタマイズは
A.Checkoutは既存のもの。OAuthAPI使えばカスタマイズできる。

Q.テスト環境使ってるんだけど任意の値が入れられるけど、表示順がバラバラになる
A.導入を検討する。

Q.PAYIDの住所や電話番号は認証済み?
A.物販で使用された実績はあるが、100%の保証はない。

PAY.JP使ってます

MAMORIOの高野さん
www.mamorio.jp

www.slideshare.net


金曜日にLTの依頼があったらしい。

PAY.JPにした理由

  • ApplePayでの課金実現可能
  • HPが綺麗だったから
  • コミュニケーションが他社よりフランク
  • 開発者ページが充実

懇親会では途中ボッチになってましたが、会話に混ざっていくことで
結果としていろんな人と話が出来て良かったです。

次回もぜひ参加したいです。
ありがとうございました!

Apache Struts2の脆弱性(S2-045,CVE-2017-5638) を突かれ、クレジットカード情報等72万件流出

f:id:mamepika:20170313151525j:plain

週末にびっくりするニュースが飛び込んできましたね。
都税と住宅金融支援機構のサイトからクレジットカード情報などが大量に流出しました。
itpro.nikkeibp.co.jp

3月8日にIPAが公開した、Apache Sturts2の脆弱性を突かれたようです。
www.ipa.go.jp

Sturts2の脆弱性

Struts2は2016年にも重大な脆弱性が報告され、ネットを騒がせました。

www.ipa.go.jp

www.ipa.go.jp

この時に修正版を適用して良しとするのではなく、システム全体を改修すべきだったようです。
Java EEやSpringではこのようなことは起きていませんからね。

Struts2は何度も致命的な脆弱性を出しています。
そのたびにNGワードを追加することで対応してきたのですが、対応がお粗末です。

通常のサイトであれば、Struts2を使い続ける選択肢はあると思いますが、
クレジットカード情報など機微な情報を扱うサイトでは、去年の時点で移行をすべきだったように思います。

無くならないカード情報流出事件

去年起こった大きな事件としては以下の2点を挙げておきます。
www.itmedia.co.jp

[http://www.itmedia.co.jp/enterprise/articles/1612/02/news106.html:title=ニュース - 資生堂子会社で個人情報流出の疑い、最大42万件 脆弱性突かれる:ITpro]

これらの事件を受けて、カード情報を扱う事業者に対してPCI DSSの取得を義務付ける流れになっており、
PCI DSSの取得が難しい事業者については、決済代行業者にカード情報を預けるように施策が進んでいたのですが、
決済代行業者による流出事故ということで、インパクトが大きいです。

Struts1.Xを使い続けるということ

今回、Struts2のみが対象となり、Struts1は無事だったので、Struts1なら大丈夫という間違った認識がありますが、
Sturts1は誰も公式にメンテナンスをしておらず、潜在的リスクはStruts2以上に存在します。

修正版適用までのスピード感

今回、脆弱性発表からわずか数日で大量のデータ流出が起きたことから、
修正版の適用にはスピードが求められます。
Sturts1は誰も公式にはパッチを作りませんので、Struts1を使っている会社がそれぞれパッチを作成、テスト、適用をしなくてはなりません。
クラッカーとの時間勝負の中で、これでは完全に負けてしまいます。

個人情報を扱うようなシステムの場合、Strutsからの早期の移行が必要になると思います。

脆弱性についての情報収集体制

3月8日にIPAから情報が発信されましたが、業者が実際に調査を開始したのは3月9日の18時以降となっています。
そして、その時点で既に攻撃を受けていたということですので、
決済代行業者には情報収集の体制強化が求められることになるでしょう。

PCI DSSについて

www.jcdsc.org

今回、流出した情報の中にセキュリティコードがありました。
PCI DSSではセキュリティコードの保存は禁止されていますので、PCIDSSに準拠していなかったということになります。

PCI DSS審査の信用失墜

PCI DSSはカード情報を扱う会社に取得が義務付けられています。
厳しい実地調査もあるのですが、セキュリティコードの保存をしていても認証を受けられてしまうということで審査に対して疑問符が打たれます。

PCI DSS認定事業者について

PCI DSSの審査の信用が失墜したことにより、PCI DSSに準拠しているというだけではユーザは安心できない状態になります。
業界全体で信用回復への取り組みが必要になるでしょう。

情報処理安全確保支援士の活用

個人情報を扱うシステムの開発・運用に情報処理安全確保支援士を必須とするといいと思います。
まさにこういった自体を防ぐために、資格が整備されたはずです。

対象者4万人と言われる中、初回登録申請者数が4000人強にとどまったのは
飴とムチのムチのみが規定された現状では仕方ないと思います。

www.ipa.go.jp

情報処理安全確保支援士の独占業務を作り、情報共有ネットワークの整備・高度な研修による実務的な技術を身に着けられるようにすれば、
取得希望者も増え、技術者の待遇向上にも寄与し、日本国内の情報システムのセキュリティ向上も図れるかと思います。