2017年6月11日 Java女子部
【東京】【女性/女性同伴男性限定】Java本格入門!!!著者をお招きしちゃうよ(´∀`) #javajo
1. 13:30~13:45 会場説明 & Java女子部について
2. 13:45~14:40 自己紹介
-
Java女子部って何? くわしくはこちら
-
次回は7/9 ★Java女子部から世界へ★(JCP事務局から話が聞けるらしい)
-
Java本格入門の著者から面白い話が聞ける! この本
-
参加者はまちまち
- Java7くらいまでは、という人が多いのかな?
- フロントエンドエンジニアもいる
- 男性が2名。(意外と来るもんだな。)
3.[番外編]ログと例外(Java本格入門)
-
AcroquestTechnorogy 村田さん
-
Javaは知っていても、開発現場に来ると以外とできない・・・ことから本を執筆したとのこと。
-
ログに出力すべきものは?
-
さまざまな関係者がいると,人にとっては分かりにくいこともある
-
ログ出力において決めるべきことは?
-
ログレベルの定義
-
ログの運用レベル
-
ログフォーマット
-
ログ出力形式(ローテーション)
-
ログ実装
-
isDebugEnabled警察(笑)
-
今はわざわざ文字列連結しなくとも、プレースホルダで置換してくれるらしい。
-
ログの運用
-
パッケージごとにログレベルが設定できる
-
動的な設定が可能(一時的に変えることができるとのこと)
-
例外の種類
-
Exception
-
RuntimeException
-
Error
-
例外処理の基本
-
try ~ catch ~ finally
-
try ~ with ~ resources(便利だよね)
-
multi catch
-
例外をもみ消さない(ログに例外を含めるようにしましょう)
-
アプリケーション方式設計と例外処理
- アプリケーション方式設計で例外処理方式を決定する。
- どんな例外を
- どこでどう処理するのか
- 例外を共通的に処理する仕組みを検討する
4. 14:00~15:30 Java本格入門 -from old Java to modern Java
- AcroquestTechnorogy 谷本さん
- ハンズオン形式で古いバージョンで書かれたものを新しいものに書き換える
- for-each/列挙
- 文字列連結
- LocalDate
5. 15:40~16:25 StreamAPI入門 いまさら聞けないStreamのキホン
-
なぜ使うのか?
- 今後、物事の考え方で使うことになるから?
-
Stream
- 簡潔に記載できる
- コレクションの集計等ができる
- 必ずしも使わないといけないというものではない(無理して複雑なものを書いても意味ない/新しいものが常に偉いというわけではない!)
-
Lambda式
- 実装すべきメソッドが1つしかないインターフェースを簡潔に表すためのもの。
- 無名クラスの中身を置き換える
- 実装すべきメソッドが1つしかないインターフェースを簡潔に表すためのもの。
-
関数型フェース
- 実装すべきメソッドが1つしかないインターフェース(Runnnableとか)
-
lambdaのキホン文法
(引数) -> {処理}
- 引数の型は省略できる - 処理が1行ならreturn と {} は省略できる - メソッド参照(引数が1つで明確であれば、省略できる) System::out::println
-
Stream API
- 作る、操作する、まとめる
- 作る(Collection#stream / Arrays#stream / entrySet#stream/ Files#lines / BufferedReader#lines)
- 操作する(中間操作:変換や絞り込み) map / filter
- limit/distinct/sortedなんかもある。
- 要素をいくつかまとめて処理するみたいなことは難しい(複数行のログファイル処理等)
- filterで分岐することはできない(あくまえでもStreamは1本) flatMapを使えばできる?
- まとめる(終端操作:LstにしたりMapにしたり集約する。結果として取り出すための操作) (collect / Collectors)
- forEach /max. min / findFirst 等もある
- もちろん一回しかできません。 -
なぜStreamAPIを学ぶべきか
- 学ぶのはめんどくさいとは思うが…(学ぶだけの価値を感じない…)
- Streamを扱うことが重要。(ゆく河のながれは…)
- Webのリクエストやキューイング処理等の上限が分からないもの(HotStream)を扱う
- Java8のStream APIはColdStreamを扱うもの。(上限が見えているもの)
-
ノンブロッキングな非同期API(RxJava/Reactor)
- こういうものはすべてStreamAPIのような形で記載されるようになる。
-
これからの時代は大量データ・リクエストをさばくような時代になるから、そのために準備をしておいたほうがよいとのこと。
6. 16:35~17:05 執筆秘話 - Java本書く入門
- もともとは
- 日経ソフトウェアで連載していた(Javaのイケてるコード、イケてないコード)
- 執筆にあたって、Javaのすごい人にRVしてもらったものの、ボコボコにされた…
- 夜、ファミレスに行って書いていた(valueSetの下りはマックで書いていたときのこと。)
- GitHubにサポートサイトがある(正誤表はここにある)
7. 17:05~17:20 AMA
- 特になし
8.所感
結構なBBAなので、行くのにも躊躇しましたが、楽しめました。
あと、上記に出てくる本も買いましたが、良書だと思います。
★こんな人に読んでほしい★
- Javaの歴史が1.4, 5くらいで止まってるオジサン、オバサン(私はここに分類される)
- 基本的なAPIの使い方は分かるけど、そこから一歩踏み出したいビギナーさん