ヤサイブログ

徒然と

JJUG CCC Fall 2017に行ってきたよ!

今年の冬も来たぜ!JJUG CCC Fall!!

レポート

10:00 ~ 10:45 Backlog:JavaからScalaへの移行の歩み

  • なぜ移行するのか?特に利点はないのに?
  • なぜScala + Play Framework?
    • 型推論、パターンマッチ
    • 静的型付け言語
    • JVM言語なのか既存知識から大きく離れない
  • 移行方法
    • ボツ案1:全てのアクションの移植が完了してから入れ替える
      • Tomcat版、Play版の両方に機能追加とバグ修正が必要。ドッグフィーディング。
    • ボツ案2:Javaから呼び出されるメソッドを少しずつScalaに移植
      • JavaScala間でEntitiyの相互変換するコードが必要になった
      • 他にも設計の差異を埋めるコードも必要
      • 移行完了後に捨てるコードに工数かけるのは辛い
    • 採用案:機能単位に作り切って、NginxでアクセスをPlay版に振り分ける
      • セッションを共有する仕組みをRedisで行う
      • 採用理由
        • ユーザーへの影響は抑えやすい
        • 完了後に捨てるコードはほぼない
        • Tomcat版の設計に引きづられることもない
      • JS/CSSの移行のために作ったツール
        • 旧ViewテンプレートからTwirlへの変換ツール
          • 正規表現を用いた補助的なもの
          • Tomcat版とPlay版の両方にアクセスしてDOMを比較するツール
      • 利点
        • 移植が正しくできていなくてもNginxの設定を戻せばいい
          • 簡単に戻せるのは精神的によい
      • 課題
        • 機能追加が並行して動いている場合に差分が出やすい
          • 最近はPlay版にのみ機能追加している
          • 性能評価とかあるといいかも
  • Scala初心者がJava -> Scalaへ移行した話
    • 勉強方法
      • 社内勉強会、研修、実業務
      • ドワンゴScala研修テキスト
      • 社内向けツールをScala, Play, Akka, WSで作った
    • はまりどころ
      • implicit class
      • for文(for comprehension)
      • 文法の違いとか

11:00 ~ 11:45 10年前のレガシーシステムをサーバーサイドKotlinでフルリニューアルしている話

speakerdeck.com

  • 背景・概要
    • 医師のキャリア支援事業の10年に一度のリニューアル
      • 600人日!
      • 複雑なアーキテクチャになっている。データ重複・ロジック重複・・
      • Javaの独自FW, viewの部分はXSLT・・。
      • KotlinのRest API, WebアプリはRails, Vue.js
        • 生産性上がるよね
      • プロトタイプ作成して経営会議
  • 承認までの道
    • 複雑かしたアーキテクチャによる悩み
    • 悩んだけど経営会議で承認された
      • 最優先の問題を粘り強く見極めた
      • 経営陣を説得する際、数値化は大事
  • 技術選定の理由
    • APIサーバ - 重複ロジック・DBを一元化したい
    • 型を用いてカッチリとやりたい
    • なぜKotlin?
      • 型あり
      • Spring Boot使える
      • Java製の社内ライブラリが使える
      • 学習コスト:RubyENGには親しみやすい構文
    • OR MapperはDoma2
    • Vue.js -> リッチなUIニーズに対応しやすい
  • Kotlin APIサーバの作り方
  • どこでもKotlinの紹介
    • Androidだけでなく、どこでも使えるという熱い思い

12:00 ~ 12:45 JJUG初心者のためのJava/JJUG講座

ランチセッションとても面白い話で引き込まれました。さすがですよね!

www.slideshare.net

13:30 ~ 14:15 サーバサイドKotlin

  • 一番にネックになったところは、日本語の響きが可愛いのでおっさんがことりんと呼ぶと(笑
  • Kotlinはそれほどとんがった言語ではない
  • 結論 - サーバサイドでも問題なくKotlinは使えます
    • lambdaでも使える
  • 利用箇所
    • Webアプリ
    • Lambdaの処理
  • なぜ、Kotlinにしたのか
    • Class定義いらない便利
    • 検査例外いらない便利
    • lombokよりスッキリで完結に書けるgetterとsetter
    • 不満はあってもJVM自体は悪くない
    • Scalaは悪くない、でも、難しい...
      • 言語が複雑、学習が容易ではない、型合わせゲームが好きになれない → 言語をちゃんと理解した気分にならない
    • JavaScalaの中間の存在として、使いやすいのではないか
  • サーバサイドでのミドルウェアとか
    • フレームワーク
      • Kotlin製
        • Ktor → チームでの開発は未知数
        • wasabi → Ktorに取り込まれた
        • Kara → JetBrainの人が開発
      • Java
    • OR Mapper
        • Exposed
          • kotlinっぽく書けるんだけどバグが多い。ドキュメントが不十分。割といばらの道なので、JavaのORMがいい
    • ビルド環境
      • gradle + Kotlin plugin + ALlOpen plugin
  • フレームワークやライブラリはサーバサイドで利用するには未成熟か開発体制が不十分
  • 無理をせずにJavaのエコシステムに乗ればいい
  • Streamの使い分けやannotationの違いなど

14:30 ~ 15:15 DockerではじめるJava EEアプリケーション開発 & Eclipse Collectionsの話

  • ビルド環境&デプロイ環境&データベースをDockerで使う
  • Eclipse CollectionsはStream APIより高機能・高パフォーマンスを維持している。
    • Eclipse Collections Kataをやれば、触ってみたい人はOK

15:45 ~ 16:30 「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~

www.slideshare.net

16:45 ~ 17:30 ついにきたリアルタイムSpark ビッグデータ処理の新定番「SnappyData」とは

www.slideshare.net

IntelliJ IDEAからGitHubやBitbucketのリモートリポジトリに初期コミットする

よく使うので備忘録として残しておきます。
本エントリーは下記バージョンで動作確認しています。

IntelliJ IDEA Ultimate 2017.2.5

1. 前提としてリモートにリポジトリを作成しておくこと

各Gitホスティングサイトでよしなに

2. ローカルプロジェクトのGitを初期化する

  • VCS」→「Enable Version Control Integration...」を選択

f:id:yasay:20171024200807p:plain

  • Gitを選択してOKを押下

f:id:yasay:20171024200912p:plain

3. リモートリポジトリに接続する

  • プロジェクトを右クリック→「Git」→「Repository」→「Remotes...」を選択

f:id:yasay:20171024201046p:plain

  • プラスボタンを押下
  • 「Name」と「URL」に適切な値を設定してOKボタンを押下

f:id:yasay:20171024201216p:plain

4. pull & fetchをしてリモートからReadme.mdなどのファイルを取得する

よしなに

5. ユーザ名とEmailアドレスを設定する

よしなに下記のコマンドを
※名前とメールの値は適宜変更

git config --local user.name "user-name"
git config --local user.email "user-email"
git config --local --list

6. Unversioned Filesが大量に出てくるので"Add"する。

よしなに
f:id:yasay:20171024192550p:plain

7. Commitする

よしなに
f:id:yasay:20171024192859p:plain

8. Pushする

ここまで手順通りにやっていればpushに成功するはず・・
f:id:yasay:20171024201742p:plain

成功!お疲れ様でした!
f:id:yasay:20171024201840p:plain

以上です♪

「JAWS-UG CLI専門支部 #95 Lex入門」に参加しました

Lexってまだ日本に来てなかったんですね。
今回はバージニアリージョンでお試しです!
jawsug-cli.doorkeeper.jp

CLI専門支部への参加は今回で2回目でまだまだ不慣れなのですが、
ハンズオンの操作には慣れて来たような気がします。
(まぁ、基本コピペなんですがw)

つまづいたところ

jsonlintインストールしてなかった

インストールしようとしたら、ハンズオンから
どんどん置いてかれそうだったので、手順はスキップしました。

後ほど、下記手順を見てjsonlintをインストールしました。
qiita.com
次回は大丈夫!

めんどくさいからdefaultのProfileは設定したおいたほうがよさそう

個人的なaws cliの使い方として必ず"--profile"オプションをつけて実行しているんですが、
ハンズオンだとちょっと面倒なのでdefaultのProfileは設定しておいたほうがよさそう。
というか、ハンズオンの時だけ環境変数でprofileを指定しておいてもOK。

参考資料↓
qiita.com
(QiitaがSEOに力を入れてることもあって検索によく引っかかるなぁ)

iterm2はコピペに失敗した

特にjson形式の文字列をiterm2にペーストした時に
書式が崩れました。残念ですがハンズオンでは今後iterm2を使うことはないと思います。

所感

30分位でチャットボットの基本機能を構築できるって、
AWSやっぱ面白いなーと思いました。さすがマネージドサービス!
今回を通して、Lexの詳細な機能を深掘りするきっかけとなりそうでよかった。

(LexのWebコンソールからのService-linked role削除はとても分かりにくいですね・・
AWSさん改善よろしく・・
しかしながら、Service-linked roleをCLIから削除できないことも、問題な気がしますが・・)

CLI支部は参加すると何かしら有益な情報を持ち帰ることが多く、
結構ガチな感じの勉強会で楽しみにして参加してます。

懇親会にも参加したいとは思っているのですが、
体調が悪いことが多く、なかなか機会に恵まれません・・。
引き続きどうぞよろしくお願いしますー。

以上です!

OS別のウインドウリサイズ(スナップ)機能

Windows10の「スナップ」に代表されるウインドウのリサイズ機能は、
一度使い始めると手放せなくなり、作業効率も上がると思っています。

OSによって導入方法やショートカットが違うので、
各OS別のウインドウリサイズ機能を備忘を兼ねてまとめていきたいと思います。
随時更新予定です!

Windows

スナップ(標準機能)

Windows 7以降に標準で搭載されている機能。

意味 コマンド
左半分 Winキー + ←
右半分 Winキー + →
左上 (左半分にスナップしている状態で)Winキー + ↑
左下 (左半分にスナップしている状態で)Winキー + ↓
右上 (右半分にスナップしている状態で)Winキー + ↑
右下 (右半分にスナップしている状態で)Winキー + ↓

Mac

記号の意味

記号 意味
コマンドキー
オプションキー
コントロールキー
シフトキー

Spectacle

無料で使うならこれかなーと。

意味 コマンド
左半分 ⌥ + ⌘ + ←
右半分 ⌥ + ⌘ + →
左上 ⌃ + ⌘ + ←
左下 ⌃ + ⇧ + ⌘ + ←
右上 ⌃ + ⌘ + →
右下 ⌃ + ⇧ + ⌘ + →
フルスクリーン ⌥ + ⌘ + F
参考サイト

www.softantenna.com

Xubuntu

ウィンドウマネージャー

デフォルトではショートカットが設定されていないので、
設定してあげる必要があります。

私は下記のように設定しました。SuperはWinキーです。
f:id:yasay:20171024095920p:plain


以上、備忘録的なエントリーでした!

「Android Bazaar and Conference 2017 in KAWASAKI」に出展側として参加してきました

行ってきました、「Android Bazaar and Conference 2017 in KAWASAKI」!
japan-android-group.connpass.com

私は初参加でした!当日はあいにくの天候でしたが、一生懸命、自社製品をアピールしました(笑)

基調講演やカンファレンスも見れた

f:id:yasay:20171023173418j:plain

  • ↑Kotlin入門のセッション。

NULL安全とか最高じゃん。
Java言語使いならNullPointerExceptionには相当苦しんでいるはず・・っ!
f:id:yasay:20171023173739p:plain

所感

出展側として参加することで
いつもとは違う経験を積むことができたので貴重な体験でした!
ありがとうございます!

短文ですが、以上です!

「Vuls祭り#3」に参加してContributeした話

Vuls祭り#3行ってきました!
vuls-jp.connpass.com

六本木グランドタワーのDMM様オフィスで開催されました。
初回はFuture様オフィスだったような。
実は初回は参加してまして、その時の記事はこちら↓
xblood.hatenablog.com

10月後半からは勉強会ラッシュです。
11月にはJJUC CCCとSpring Day、
合間にJAWS UG CLI支部にも参加する予定です。
来年はScala Matsuriにも参加したいのでScalaの腕を上げておかないと・・!
Java9のキャッチアップも行わないといけないし、
MVプロジェクトも進めなきゃいけないしで時間足りない(T_T)

レポート①

Vulsの最新アップデートと今後の機能拡張について

f:id:yasay:20171023170745j:plain

0.4.0 解説

root権限使いたくないと偉い人が言ったのでモードが増えた。

  • First Scan Mode
    • rootなしのモード
  • Deep Scan Mode
    • rootが必要なモード
  • ovalのデータベースを0.4から使えるようになった
    • -> パッケージのバージョンとマッチングしてレポートする的な。
  • ネットに繋がっていなくても使えるようになった
  • パッチを提供していない脆弱性も検知できるようになった。
    • -> 0.3まではパッチを提供している脆弱性のみしか検知できなかった。
  • スキャン情報使ってレポーティング
  • バグが見つかったので修正したバージョンの0.4.1を使ってくれ。
    • -> 全パターン網羅とかでテストが大変だった。-> コミュニティの人がテストに参加した -> Thanks!
  • 取り組んでいること
    • suseのenterpriseへの取り組み
    • checkRestart -> 最新なんだけど動いているパッケージが古い場合の検知
    • docker image alpineへの対応(北米はdockerのalpine人気?)の取り組み

ここでなんと、コントリビュート作業開始w

基調講演で「単語のスペルミスとかあえて残してるので今がコントリビュートするチャンスです」と言ってたので、
残りのセッションを聞きながらスペルミスを探す作業を開始www

Atomでスペルチェックするも、なかなか見つからない。
あれぇ・・スペルミスないじゃん?と思っていた矢先、見つけましたw
その場でFork -> 修正 -> プルリクという流れw

実際のプルリクはこちら↓
github.com

レポート②

vulsrepoの最新アップデートについて

qiita.com
登壇者の方、Future社員になった様子。Vuls転職w
NVD, JVNタブを廃止して一画面に集約したのでスコアの差が分かりやすくなったらしい。

vulsの運用tips紹介と機能要望

www.slideshare.net
400台あるサーバをVulsでスキャンとか、つまりVulsいけてるってことですね!

大規模環境でのVuls運用(仮)

www.slideshare.net
3000台・・つまりVulsいけてr(略

Vulsで検知した脆弱性への対処について

Vuls経由ではなくて、CVEディクショナリー自体を活用することに主眼を置けば見方が変わる的な。

LT

サーバレスVulsアーキテクチャ再び

サーバレスVulsアーキテクチャ再び / serverless-vuls-again // Speaker Deck
CloudFormationテンプレートが公開!素晴らしい!

弊社の既存システムをVulsで診断してみた ~診断しかできないVuls環境の作り方~

すません、あまり覚えていないので割愛

Vulsだけで完結しない、WEBサイト脆弱性対策について

www.slideshare.net
Vulsに適用できる・できない範囲を再確認してVuls使うといいよ的な話。

脆弱性検知後のパッチ適用運用が捗るサービスを作ってみた話

Vuls Cloudの紹介だったと思います。UIがクール!

所感

今回は前日になって急ぎで参加を決めたわけですが、
理由はもちろん社内でVuls使えないかなー?と思ったので
最近のVuls動向を掴むためです。

シースーとザーピー食べて、ルービー飲みながら
Vulsバリバリ活用している人たちの話を聞く至福の一時だった。

f:id:yasay:20171023170829j:plain
※1,000円の参加料を払ってます。
スポンサー企業様に感謝!

f:id:yasay:20171023134148p:plain
↑Contributeもしたよ!

OSSにContributeするきっかけって大事だと思う

Readme.mdを読むことでOSSプロダクトの知識を増やすことになるわけだし、
ドキュメントの整備はソースコードへのContributeを目指すための第1歩だと思っている。

ドキュメント周りで人が足りないって話はOSSではよく聞く話だし、
これからも何らかのContributeをしていきたいと思っています。

以上です!

RPG Maker MVの「MADO」を早速使ってみた!

2017年9月7日、RPG Maker MVの拡張ツール「MADO」がリリースされました。
tkool.jp

早速使ってみたのでエントリーに残しておきます。

起動するとこんな感じ

f:id:yasay:20170907224021p:plain 「会話」,「ステータス」,「戦闘」,「その他」それぞれのウインドウを
カスタマイズできます。エクスポートするとそれぞれ画像ファイルとして出力されます。
機能としてはシンプルで、ただそれだけです!(現状は)

早速、適用してみた。

効果が分かりやすそうなウインドウで試してみました。

  • タイトル f:id:yasay:20170907224307p:plain

  • ロード画面(AltSaveScreenプラグインを使用中) f:id:yasay:20170907224336p:plain

  • メニュー画面 f:id:yasay:20170907224408p:plain

悪くない。いいですね!(興奮)

本質はプラグインと画像ファイルにあり

MADOのツール自体は、プリセットで用意されている素材を
組み合わせて画像を生成するので、プリセットだけの表現では限界があります。
これは、バージョンアップでの素材追加や個別素材の追加機能などに期待です。

どちらかというと、本質はプラグインと画像ファイルにあると思います。
プラグインは公式で提供されており、画像ファイルだけをカスタマイズすれば
プリセット以外の表現も可能です。

  • MADOでエクスポートした画像は下記のようなフォーマットになっている。 f:id:yasay:20170907225832p:plain

カスタマイズで独自ウインドウを表示している場合などに注意

プラグインによって戦闘中とメニューで違う画像を使用することが
可能になりますが、本プラグインとは別のプラグインで独自に定義したウインドウ枠に
メニュー用画像が適用されてしまって、
ちぐはくになってしまう場合があります。

この場合、自分でプラグインを改変するか、
プラグイン作者様に改善をお願いする必要があると思います。

  • ちぐはぐな例 f:id:yasay:20170907224953p:plain

以上です!