JJUG CCC 2016 Fall に参加してきた
JJUG CCC 2016 Fallに参加してきました。
以下参加セッションの感想。
なんかツイートしてたの貼り付けておく。酔った勢いで書いているから記憶が…
Be a great engineer!〜 フォローすべきトレンド、スルーすべきトレンドをどう見抜くのか
@cero_tさんによる基調講演。見たことがある講演ではデモや技術的な内容が多い印象だったのですが、今回は大真面目に話していました。
朝一の講演だったので、ギリギリ着席。
せろさんのに間に合ったん
— てんてん (@tenten0213) 2016年12月3日
記憶が曖昧だけど、何段階か状態?があって、一番上の理を理解した人は全てを手に入れるって感じの話しだったと思う。 なんかどこかにお金ってワードがあっても良さそうだなーって思ってツイートしたんだと思う。
金はどこにはまるのかな?
— てんてん (@tenten0213) 2016年12月3日
技術トレンドの話しでガートナーの話しが出てきた。 自分自身がR&D部門にいた際に、組織長が組織の方針を決めるのに参考にしていたし、自分自身も内容を見たりした気がする。 最近はあまりガートナーは見ていなくて、ThoughtWorksのTechnorogy Radar とか良くみている気がする。
ガートナーとかThoughtWorksのレーダーとか見てると面白い
— てんてん (@tenten0213) 2016年12月3日
R&Dにいたときは、どの技術に力を注いでいくんだって方針とかガートナーを結構参考にしていたように思う(ボス)
— てんてん (@tenten0213) 2016年12月3日
話しのなかでMicroserviceの話しとか出てきて、組織の話しもあった。 コンウェイの法則は、ソフトウェアの構造は組織を反映したものになる、だから例えばマイクロサービスのようなアーキテクチャにしたいのであれば、そのアーキテクチャに合わせた組織にしましょうって感じ。
コンウェイの法則かな #jjug_ccc #jjug_ccc_a1
— てんてん (@tenten0213) 2016年12月3日
全体を通して共感できる点が多く、自分も考えているような内容もあれば、違う意見もあって面白かった。
SIerもはじめる、わたしたちのDevOps
同僚のしょぼちむと、R&D部門に所属している阿佐さん の発表だったので最前列で応援してきた。
しょぼちむの資料
阿佐さんの資料
その時間帯のついっと。
@backpaper0 はっ!?
— てんてん (@tenten0213) 2016年12月3日
@backpaper0 プレッシャーゾーンではww
— てんてん (@tenten0213) 2016年12月3日
— てんてん (@tenten0213) 2016年12月3日
なんかやると思っていたけど、PPAPの音楽流してあのサングラスとスカーフ?を付けてやるとは思わなかった。 DevとOpsでDevOpsって…
— てんてん (@tenten0213) 2016年12月3日
オープニングとは打って変わって、内容は割りと真面目でSIerがDevOpsに取り組む意味や、まだ社内向けではあるものの実践している内容の紹介をしていて良い内容だった。
SIerがDevOpsをやる意味とは #jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
これは自分も参画していたプロジェクトなのだけど、実際SIerの金融系のシステムの本番環境でDockerが動いていたりする。
SIer、金融系でもプロダクションでDocker使ってるだと… #jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
お客様がDevOpsしたい=リードタイムを短くしたい #jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
エンタープライズとDevOps by @kawasima on @Qiita https://t.co/ms2nLsPFio#jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
GitHub Flowを採用、マージされたらJenkinsが本番環境にデプロイされる #jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
1サーバ(1プロセスかな?)でもfalchioinコンテナを利用すると無停止縮退なしでデプロイ可能とのこと。 実際デモしていたが、3秒くらいで切り替わっていたので凄かった。
.@kawasima さん作のfalchionコンテナを利用しているので、縮退無しに無停止デプロイが可能#jjug_ccc #ccc_gh2https://t.co/EvzaTj9FbO
— てんてん (@tenten0213) 2016年12月3日
あんまり女子力高くないターミナルだ
— てんてん (@tenten0213) 2016年12月3日
見えないけど、実質3秒くらいで変更されてる? #jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
ふつうの受託開発チームのつくりかたhttps://t.co/IGo29giTEc#jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
@kazuhira_r 実際は社内向けなので、masterへのマージをリーダーなのかkawasimaさんがしたらデプロイされるって感じじゃないですかねー?
— てんてん (@tenten0213) 2016年12月3日
@kazuhira_r 現状だと"顧客"が自社なので、そこはこれからって感じなのかなーと
— てんてん (@tenten0213) 2016年12月3日
まだ社内システムが対象なので、弊社のメインの顧客である金融系や公共の大きなシステムでも事例を作ってみたいなーと思ったりしたりしなかったり。
やっぱり金融系とかどSIでやってみたいなー
— てんてん (@tenten0213) 2016年12月3日
ここから阿佐さんにチェンジ。 安心感と安定感のあまり、ツイートが少ない!
あささん、安心感ある
— てんてん (@tenten0213) 2016年12月3日
最初に資料がここにありますよーってサイトがちょっと見れなくてドキドキしたけど、実はGCP上にKubernetesを使ってDockerコンテナクラスタが動いてたとか。お茶目か。凄い…
名言。
エンジニア自身が変化に強くなければならない #jjug_ccc #ccc_gh2
— てんてん (@tenten0213) 2016年12月3日
阿佐さん、ランチ中にも名言残しまくっていて尊敬の念が止まらなくてヤバい。
日本でも出来る!最先端のDevOpsを導入する方法
社内の勉強会で牛尾さんのブログが取り上げられたり(自身も結構読んだ)、kawasimaさんから面白いよと勧められたこともあり聴講。
のっけから凄いテンションでDev-Opsとコール&レスポンスを求められて入る部屋間違ったかなと思った。
なんか凄いとこに来てしまった感…
— てんてん (@tenten0213) 2016年12月3日
けどそんなのは最初だけで、終始わかりやすく軽快に説明してた。 ちょっとブログの内容にネガティブな印象もあったのだけど、直接話しを聞くと全然そんな印象は受けなかった。 文章と実際に話しを聞くのとでは捉え方が変わるのかも?
MicroserviceはDevOpsが出来ていないと出来ない #jjug_ccc #ccc_c3
— てんてん (@tenten0213) 2016年12月3日
Test in production#jjug_ccc #ccc_c3
— てんてん (@tenten0213) 2016年12月3日
まずDevとQAを同じチームにした。次にOpsとビジネス企画も同じチームにし、サービスチームに。
— てんてん (@tenten0213) 2016年12月3日
チームにはかなりの権限を与えている。#jjug_ccc #ccc_c3
Value Stream Mapping
— てんてん (@tenten0213) 2016年12月3日
プロセスを変える権限を持っている人を連れて来てやる#jjug_ccc #ccc_c3
Value Stream Mappingをつかうと、リードタイムに関するプロセスの可視化、課題の共有ができる#jjug_ccc #ccc_c3
— てんてん (@tenten0213) 2016年12月3日
話しうまいしわかりやすいなー
— てんてん (@tenten0213) 2016年12月3日
定期的にモニタリングして改善する。リードタイムを早くしろ!とかプレッシャーはかけない。#jjug_ccc #ccc_cd3
— てんてん (@tenten0213) 2016年12月3日
#jjug_ccc ccc_cd3 / “「知らないこと」を恐れないマインドセットが技術導入を加速する - メソッド屋のブログ” https://t.co/DuNYcALG8u
— てんてん (@tenten0213) 2016年12月3日
Spring CloudでDDD的なマイクロサービスを作ってみる
現在のプロジェクトでDDDのエッセンスが入っているアーキテクチャを採用しているため、椎葉さんのセッションを聴講。
立ち見だったのと、手書き資料、ソースコードやデモ、話しに集中していてツイートが少なめ。
#ccc_a4 立ち見だ
— てんてん (@tenten0213) 2016年12月3日
英語でメンバーと会話すると、普段の会話がコードに出てくることに気づいて、これがユビキタス言語か、と思った #ccc_ab4
— Yusuke Ikeda (@yukung) 2016年12月3日
これ良いよなー。話せないけど。日本語でやるとZaikoとかになるけど、そこを許容するかどうか、か。
— てんてん (@tenten0213) 2016年12月3日
動詞はつらそう
リポジトリに閉じ込めるのはやってるなー。http固有のエラーとかどう表現するのが良いのかね?みたいな話しはチームで最近したんだけど、どうしてるんだろ?#jjug_ccc #ccc_ab4
— てんてん (@tenten0213) 2016年12月3日
はー、楽しいなー
— てんてん (@tenten0213) 2016年12月3日
ばふぁさんの発表聞いてヒントを貰ったので、自分とこの設計に反映しよ(Swiftだけど)
— てんてん (@tenten0213) 2016年12月3日
考えて試して、トレードオフがあることを理解した上で妥協点を見極めて…といったプロセスが垣間見え、とても参考になりました! 発表後に質問して丁寧に答えてもらったり、懇親会でも話すことができたのでホント嬉しかったし楽しかったです。
GitBucketを支えるJava技術とグローバルで使われるOSSの作り方(聴講はしていない)
椎葉さんのセッションと同時刻に行われていて聴講していないのですが、普段からヘビーユースしており(全社的に)、以前H2が壊れてPostgreSQLに移行した際もお世話になったのでご挨拶させていただきました。
その節は本当にありがとうございました。神対応でした。
弊社、かなりGitBucketを利用しているので、何かしらで恩返ししたいところです…
冗談抜きで弊社は最大規模のユーザだし、なにかしらで貢献したい
— てんてん (@tenten0213) 2016年12月3日
ドメイン駆動設計とScala 〜既存プロジェクトへの適用〜
お次は元同僚の角谷くんのセッションを聴講。
本丸でなんてこと言ってるんだw #jjuc_ccc #ccc_ab5
— てんてん (@tenten0213) December 3, 2016
このタワーから生きて帰れないのではw
— でくのぼうは二度とバスに乗らない (@garbagetown) December 3, 2016
弊社ディスられて、生かして帰すまじって感じだった。
というのは冗談で、正直ディスられるような状況も多いので胸が痛いところだった。
現在の職場でも同様に苦労したようだけど、DDDを採用して改善したのは凄いと思う。 でもその前は結構良くない状態だったようだし、他のシステムも大丈夫なのかな?て気はするので、別にSIerだからとかは関係無いかなと思う。
比較的技術に興味がある人が多いってのと、システム開発を自分事として捉えられる人が多いってところは大きそうだけど。
内容はDDDについての引用が多かったので、もっと現場で苦労した点とか工夫している点が聞きたかったなー。
Spring Cloudアプリケーションの開発にDockerを活用し、Kubernetes上にデプロイするまで
最近Dockerをちょくちょく利用しだしているので、村田さんのセッションを聴講。
Kubernetesやfabric8など、さわったことが無いプロダクトが多かったので、デモを観て「おー、スゲー!」って感じだった。
Kubernetes気になるからghに
— てんてん (@tenten0213) December 3, 2016
Twelve-Factor App, MicroServices, DDD と
— てんてん (@tenten0213) December 3, 2016
5件のコメント https://t.co/eOEkvFBS3t “Spring Cloud Netflixを使おう #jsug” https://t.co/3cU8dRHfnD
— てんてん (@tenten0213) December 3, 2016
— てんてん (@tenten0213) December 3, 2016
fabric8-maven-plugin、凄い便利そうだったけど、mavenでやるのどうなんだろ? いや、でも凄い便利そうだった。
ぽむに書くのが良いのか面倒なのか。。。
— てんてん (@tenten0213) December 3, 2016
Javaエンジニアのキャリアを考えるパネルディスカッション
最後は実物@hishidama さん見たさにパネルディスカッションを聴講。
平素お世話になっております。
実際、 @yusuke さんは大手SIerや外資、Twitterで働いたり、起業しているし、 @johtani さんは あのElastic社だし @yoshiori さんはドワンゴとかクックパッドだし、みなさんのキャリアや考えを聞きたかったってのが大きい。 最近上司との面談やメンターとの1 on 1、メンティーとの1 on 1をしたりもしたし。
内容はとてもおもしろかったのだけど、これしかツイートしていなかった模様。
ずっと技術でいくのか?という問いに対して、「マネージャになると自分で仕事を選べるし、プログラム書きたいなら書ける。どちらかしか出来ないという訳では無い」という感じの回答だった。(もう少し話していたけど)
実際今の部門のマネージャはコードを書いていないし、会議ばかりだし雑務多そうだし、そうなりたいと思えるマネージャがいないのだけど、自分がやりたいようにやれるのならそれも良いなと思ってしまった。よしおりさん凄い。
よしおりさんカッコいいなー
— てんてん (@tenten0213) December 3, 2016
他にも凄い若者に勝てないから別の道で…とか自分が一番の下手くそでいたいから転職した(情熱プログラマに「一番の下手くそでいよう」という章がある)、とか面白い話がたくさん聞けた。
懇親会
いろんな人と話しができた。 あまり話せなかった人もいるので、次回にもっと話したい。
しょぼちむが再度PPAPしたりかわしまさんが真面目なフォローLTしたりして面白かった。
ちょっと個人的に引っかかるLTがあって不快になったのと、眠かったのでちょっとだけ早めに帰ってしまったのが心残り。
さいごに
こんなに大人数が参加するカンファレンスを運営してくださったJJUGスタッフのみなさん、登壇者のみなさん、サイコーのカンファレンスでした。 お疲れ様でした!! & ありがとうございました!
WindowsマシンからMacにVNC接続する
MacからWindowsマシンにRDPする - てんてんのぶろぐ でMacからWindowsに接続する方法を書いたのですが、仕事をしているとWindowsからMacに接続したいシーンも出てきたので調べてみました。(例えばXcodeでエミュレータを起動してデモしたり、コードレビューしたり)
システム環境設定
- 共有
から
画面共有
にチェックを入れます。一応すべてのユーザ
にアクセスを許可しておきます。(しなくても大丈夫だと思いますが)
次にコンピュータの設定…
からポップアップで出てきた選択肢の両方にチェックを入れ、パスワードを入力します。
これでMac側の設定は終わりです。
次はWindowsからVNCで接続します。 VNCのクライアントは会社で良く利用しているUltraVNCを利用しました。
- UltraVNC VNC OFFICIAL SITE, Remote Access, Support Software, Remote Desktop Control Free Opensource
- UltraVNC - 窓の杜ライブラリ
UltraVNCクライアントを起動し、接続先のMacのIPかホスト名を入力して接続します。
パスワードの入力を求められたら入力すると、Macに接続されます。
これで会議室にあるPCから自席PC(WIn)にRDPして、自席PC(Win)からMacにVNCすることでデモとかレビューが出来る!
MacからWindowsマシンにRDPする
最近お仕事でiOSアプリを作ることになり、開発はMac、事務作業などはWindows、と使い分けなきゃいけなくて面倒だなーと思っていたのですが、 調べていたらMicrosoftからアプリが出ていたので利用してみました。
以下からMicrosoft Remote Desktopをダウンロードし、インストールします。
起動したら、New
から新規のRDP接続を作成します。
以下のように、接続先のPC名、User/Passを入力します。
証明書が無く安全でない旨のメッセージが出ますが、 Always Trust
のまま Continue
します。
(ここは自己判断で)
すると、WindowsにRDPされて画面が表示されます。
ファイルを共有する
WindowとMacのRDP中のファイル共有も同アプリケーションで行えます。
対象の接続のRedirection
を選択し、 Enable folder redirection
にチェックを入れ、 +
から共有するフォルダを追加します。
今回はユーザ直下にshare
というフォルダを作成しました。
すると、WindowsにRDPした際に、以下のようにマウントしたフォルダが表示されるようになります。
ただ、Windows側からフォルダ共有してやる方が楽な気がします。
Apple Developer Programの支払から利用開始まで意外と時間がかかった話し
お布施〜 pic.twitter.com/TIqqYpz2aQ
— てんてん (@tenten0213) November 3, 2016
と、Appleにお布施を払ったものの、全然利用できるようにならない。
メンバーセンターに行くと、アカウント名の下にはPending
の文字が。
画面中央下にはYour purchase may take up to 48 hours to process.
ってあるけど、48時間以上経っても使えない。
営業日計算か?でも2営業日以上経ってるよなって思いつつ、サポートに連絡してみる。
で、一旦返答待ち。
返信きた!
ん?もう年間契約が開始していると。
メールを探すとあった!って↑のメールの15分前とかじゃないか。
(2016年11月9日 9:50受信)
確かに使えるようになってる!
11/4(金) の朝8時に登録したので、11/8(火) の朝には使えるかな?と思っていたけど、実際に連絡が来たのは11/9(水) の朝だった。
48時間後は目安?ってとこなのかな。
土日挟んでて感覚的に長く感じたから問い合わせしてみたけど、とりあえず3営業日くらいはのんびり待ったら良い。
こんな記事もあって、支払情報と登録情報にズレがあると保留になったりもあるみたいなので怪しかったら確認したら良いと思う。
iOS / Swift開発環境構築メモ
直近ごりごりJavaでサーバサイドの処理を書いていたんだけど、次はiOSアプリをSwiftで作るってことになったので諸々調査とか準備を進めてる。
iOSは3年くらい前にちょーっとだけObjective-Cで遊んだことがあるくらい。
だいぶ開発環境周りも変わってるだろうからまとめておく。
OSの最新化
Xcode 8, Swift 3 でいくので、macOS Sierraにアップグレードしておく。
ここらへんはわりと緩い判断で、iOS 10のみのサポートで良いって言われたから最新でまとめている感じ。
リリース済のアプリケーションがある場合は結構大変そう。
Homebrewインストール
Mac用のパッケージマネージャ。なにかと便利なので入れておく。
以下を実行してインストールする。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
社内proxyに引っかかる場合は、http_proxy
とhttps_proxy
を設定しておいてやる。
export http_proxy=http://example.com:proxyPort export https_proxy=http://example.com:proxyPort
昔は気が向いた時にbrew update
していたけど、最近は brew upgrade
とか brew install
したときに自動でupdateされるらしい。
Homebrew自体は上で設定した環境変数を見てくれるから、追加のProxy設定とかは必要ない。
Gitのインストール
プロジェクトではGitを利用するので、一応。
$ brew install git
インストールしたGitまでのパスを通しておく。
export PATH="/usr/local/Cellar/git/X.X.X/bin:$PATH"
バージョンを確認し、インストールしたバージョンだったらOK
$ git --version
Rubyのインストール
iOSアプリ開発におけるツール類がわりとRubyに依存しているので、Rubyをインストールしておく。
MacにデフォルトでRubyが入っているけど、global汚染だRubyのバージョンがーとか考えだすと面倒だからrbenv
でRuby入れることにする。
$ brew install ruby-build $ brew install rbenv
以下のコマンドでインストール可能なRubyの一覧を確認。
$ rbenv install -l
最新安定版をインストールして、globalに設定する。
$ rbenv install 2.X.X
$ rbenv global 2.X.X
$ ruby -v
後々使うので、bundlerをインストールしておく。
$ gem install bundler
SwiftLintのインストール
Swiftの静的解析用にSwiftLintを入れておく。
$ brew install swiftlint
.swiftlint.yml
を設定してプロジェクトルートに配置することで、ルールを変更することができる。
ルールは以下を参照。
以下のようにコマンドでルールを確認することが出来る。
$ swiftlint rules
チームで使うGemのインストール
チームでGemのバージョンは合わせたいので、Gemfileに依存関係を書いてbundlerでインストールする。
Gemfileの書き方は以下を参照。
source "https://rubygems.org" gem 'rake' gem 'fastlane', '~> 1.2', '>= 1.2.3' gem 'cocoapods', '~> 1.1.1' gem 'xcode-install', '~> 1.3' gem 'jazzy', :git => 'git@github.com:realm/jazzy.git'
インストール
$ bundle install --path=vendor/bundle
使うときはbudle exec
する。
付けないとシステムにインストールした方が使われる。
$ bundle exec pod install
Xcode 8のインストール
手動
OSが古いとコケたりするみたいだけど、OS最新にしてからなら大丈夫っぽい。
互換性のところに、OS X 10.11.5以降と書かれている。
$ xcode-select --install
か
でインストールする。
xcode-install使う場合
チームでバージョン合わせたいし、後々スクリプト化とか考えたときにもCLIで実行出来たほうが良いので、こっちでいきたいとこ。 まぁ人数少ないし、人の増減もほとんど予定していないので別に良いんだけども。
userIdとかpasswordを求められたら、AppleのIDとpasswordを入れれば良い。
$ bundle exec xcversion update $ bundle exec xcversion list $ bundle exec xcversion install 8.0 $ bundle exec xcversion select 8.0
Xcodeのプラグインインストール
Xcode8でプラグインを使用するためには各プラグインにUUIDを追加する必要があるとかで、それをやってくれるgemをインストールしておく。
$ gem install update_xcode_plugins $ update_xcode_plugins
プラグインマネージャのインストール
プラグインマネージャはAlcatraz一択っぽい感じ。昔も使ってたし。
以下を実行することでインストールできる。
$ curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
なにはともあれVim
XVim入れる。
Xcode8に入れる場合は手順が違うので注意。
あとはお好みで
便利そうなの入れる
まとめ
とりあえずまとめてみた。 次は自動化できるところは自動化するようにするのと、CIあたりをまとめたい。
第3回 マイクロサービスアーキテクチャ読書会を開催 & 発表してきました
2016-07-16(土)に第3回 マイクロサービスアーキテクチャ読書会を開催 & 発表してきました。
今回で3回目ですが、40人近く集まり、ディスカッションも活発に行われていました。
マイクロサービスを実際に運用している人、これから構築していこうとしている人、現在のアーキテクチャに課題を感じている人、ServicerだったりSIerだったりと全然立場が違う人が集まってディスカッションをするので難しい面もあるのですが、実際の体験談であったり、普段とは異なる視点での話しを聞けるので個人的には面白いと思っています。
内容
今回は3回目だけど4章を対象として読書会を行いました。
自分が担当した前半部分のスライドは以下になります。
後半部分、 @syobochimのスライドは以下になります。
200ページ以上ある大作!
感想
マイクロサービスアーキテクチャの肝である「統合」を扱う章だけあって、かなりボリューミーで中味の濃い章でした。
発表を担当することで、理解が曖昧なまま読み進めてしまっていた「コレオグラフィ」や、「HATEOAS」などについてかなり調べてまとめることが出来ました。
説明は極力丁寧にするように心がけましたが、時間の都合と説明力不足でどこまで伝わったか心配なところです。
後半担当の @syobochim は、自分が理解した内容を噛み砕いて相手に伝えるような資料と発表になっていて、かなり分かりやすかったです。
特に、「UI部品合成」について説明するときに、 はてなブログに埋め込んでいるTwitterのブログ・パーツを例にした説明は分かりやすくて秀逸だと思いました。
Survival って単語が読めなくて笑いも取るし、しょぼちむさんさんホント流石です。
今後について
第4回は、「5章 モノリスの分割」を対象に8月末あたり(お盆明けあたり?) に開催予定です。
予定が決まり次第報知しますので、気になる方はコミュニティへの参加お願いします。
… 資料作成が大変だったけど、発表を担当すると勉強になるので埋まらない章があったら立候補するかなー
【7/9(土)】Doma勉強会 in 東京 に参加してきた
【7/9(土)】Doma勉強会 in 東京 - dots. [ドッツ] に参加してきました。
Doma自体はちゃんと利用したことが無いのですが、昔S2JDBCは利用したことがあったので気になっていたこと、Enkan で使われていること、うらがみさんが常々おすすめしていて気になっていたなどの理由から参加してみました。
Domaの紹介 - @backpaper0 さん
トップバッターはうらがみさんで、Domaの紹介。 自身がDomaを利用したことが無かったので、丁寧な説明で分かりやすかったです。
以下良いなーと思ったポイント。
- 2-way SQL
- コピペでそのままSQLを実行できるので便利
- Java8 対応
- DAOメソッドの引数や戻り値をOptionalで包める
- StreamやCollectorを利用できる
- エンティティリスナー
- 思考停止で登録日時とか更新日時を入れさせられることが多いので便利そう
- コンパイル時のチェック
- しょうもないミスは結構防げそう
- JAR1つに依存するだけ
- 他のJARに依存しない
- 導入の敷居がかなり低い
全体的に機能は充実しているのですが、割りきって切り捨てている(※) ところもあり、シンプルになっていると感じました。 ※ 検索系は必ずSQLを書かせる、SQLファイルのincludeなどは提供しない、など
ドメインクラスの話 - @backpaper0 さん
引き続きうらがみさんの「ドメインクラスの話し」。 ドメインクラスと言ってもDDD的なアレではなく、Domaで扱える値オブジェクトのこと。
普通にやるとIntegerやStringなどの基本型だらけになるカラムのマッピングで値オブジェクトを利用できる。
引数の順番誤りを防いだり、値の導出をユーティリティクラスでやらず、値オブジェクト自体に閉じ込めることが出来たりして良い。 他にも可読性(引数や戻り値のシグネチャに現れる)やIDEの補完などでもメリットがあるよ、という話しを聞いて納得。
Webアプリケーションにおけるデータの流れと値クラスと基本型の境界の図はとても分かりやすかったです。 (こうゆうのちゃんと整理できるようになりたい)
うらがみさんは、アプリケーションのレイヤでは基本型を使わず、全てドメインクラスを使うようにしているとのこと。(凄い…)
Domaに限らず参考にできるエッセンスが多く、仕事で活用できそうなヒントをいっぱい貰えました!
とあるDoma2の使い方 - @gakuzzzz さん
自分は何の勉強会に来ていたんだっけ?となるインパクトのある内容でした。
基本的にImmutableにするため、資料の全てのフィールドはfinal…!
そんな@gakuzzzz さんのDomaの使い方のお話。
最初はEntityをImmutableにするという話で、IDをDBの機能で自動生成している場合の対応を紹介していました。
IDクラスや、notAssigned()というIDが未割り当てだという状態を定義する、notAssigned()同士はequals が成り立たないようにする、など様々な工夫が紹介されており、普段あまり考えて設計してないことを痛感。。。
お次はDomaを使ったCollect検索の話し。序盤はおお、便利そう!って感じだったのが徐々に…いや、しょぼちむの頭が邪魔でコードが読めなかったってことにしておこう!…(´・ω・`)
後から資料をじっくり見なおしてみると理解できる部分も多く、1:nや、n:mの検索はかなり便利に思えました。
@gakuzzzz さんのツイートこんな感じで怖い人だ!って思っていましたが、とても優しい型でした!
型を崇めよ!! #doma_tokyo #eventdots
— がくぞ (@gakuzzzz) July 9, 2016
型最高!!!!!!!! #doma_tokyo #eventdots
— がくぞ (@gakuzzzz) July 9, 2016
Domaの開発で大切にしている10のこと - Qiita - @nakamura_to さん
最後はDoma開発者の @nakamura_to さん。 初めてQiita Slide見た!
Domaって7年も前からあるんですね。自分がIT業界に入って8年目なので、新人の時からあったのか。
7年間も開発を継続して、新機能の追加やJava8対応など利用者の要望や、新しい言語機能を積極的に取り入れているのホント凄い。
内容としてはDomaを開発するうえのフィロソフィのようなもので、シンプルさを重視しつつ、プロダクトの核となる部分は曲げない。
でもトレンドや利用者の要望は取り入れていくし、逃げ道(JDBCを自由に使える)を用意してあるので別のライブラリへの切り替えも容易(そもそも1JARだし)である、といった話でした。(絶対スライドを見たほうが良い!)
捨てるところは捨てる、プロダクトのコア・バリューとなる部分は曲げない、というバランスが素晴らしくて感心を通り越して感動してしまいました。(何様だって感じだけど良い言葉が思いつかない)
LT
Doma2とMVC1.0でJava EE Webアプリを作ろう! // Speaker Deck - @suke_masa さん
Java EE 成分濃い目でした。とはいえDoma2はもちろん、MVC1.0、Payara Micro、Thymeleafなどてんこ盛りな構成で面白かったです。
Doma2 with Kotlin - @yy_yank さん
大トリはやんくさん。 さすがの巨匠の風格でLTなのにnakamura_toさんより長く話していましたw
NASAのロゴは、うん、似ている気も…?
Togetter
おわり
懇親会ではnakamura_toさんやうらがみさん、がくぞさん、とーますさんの話しに付いて行くのでいっぱいいっぱいだったけど、かなり楽しかった! うらがみさん、発表でも懇親会でもかなり緊張していて、本当にDomaが好きで、憧れているのがわかった。 こういった、ユーザが好きだから開く勉強会は熱量が多くて刺激になる。
発表者の方々、運営をされていたとーますさん、dotsの方々、ありがとうございました!
会場、めっちゃお洒落で良かったです。