nesheep5's blog

プログラミング・子育て・家づくり・音楽 etc...

【勉強会メモ】Java Day Tokyo 2017

Java Day Tokyo 2017に参加してきたのでその時のメモ。
今回はJavaSE9について重点的に聞いてきました。

自分用に書いていたので歯抜けが多く申し訳ないです。
間違いや補足事項あればご指摘いただけると幸いです。

Java Day Tokyo 2017 とは

日本オラクルが開催する、国内最大規模のJava年次イベント。
公式ページ:http://www.oracle.co.jp/events/javaday/2017/ ハッシュタグ: #JavaDayTokyo

参加したセッション

※敬称略

  1. 基調講演 (日本オラクル代表執行役社長 杉原博茂、Oracle Vice President Bernard Traversat、Oracle Senior Director Will Lions)
  2. Java 9 and Beyond: Java Renaissance in the Cloud(Oracle Vice President Bernard Traversat)
  3. Modular Development with JDK日本オラクル株式会社 デイビッド・バック)
  4. Servlet 4.0 で始めるHTTP/2(日本オラクル株式会社 柳原 伸弥)
  5. Java SE 9のすすめ (Java in the Box 櫻庭 祐一)
  6. Spring Framework 5.0によるReactive Web Application (Pivotalジャパン株式会社 槙 俊明) 発表資料:https://www.slideshare.net/makingx/spring-framework-50-reactive-web-application-javadaytokyo

トピック&まとめ

Javaの現状、今後の動向について

  • Java SE 9, Java EE 8がリリースされる
  • Claud上で最適化するための機能強化

◆今年7月にリリース予定のJava SE 9, Java EE 8について

  • Java SE 9については後述。Java EE 8についてはあまり聞けなかったため言及しない。

Java SE 9 で導入される、module(Project jigsaw)とその他の新機能について

  • Module System(Project jigsaw):最も注目されている機能。依存性をモジュール単位で設定可能とする。
  • JShell:PythonRubyのREPLのように、インタラクティブにコードを実行する機能。
  • JLink:JDKのクラスモジュールのうち必要なものだけ指定して読み込むことができる機能。
  • Ahead of Time Compilation(AOT):仮想マシンの起動前にJavaクラスをネイティブコードにコンパイルする機能。起動時の時間短縮。
  • G1GC:デフォルトのGCが、パラレルGCからG1GCに変更された。

Java SE 9 で発生した仕様変更について

Servlet 4.0 で対応するHTTP/2について

  • HTTP/2を利用することで、クライアントとのHTTP通信が高速化可能に。Servlet 4.0 を素で使うのはあまり実現的でないので、フレームワーク側に対応動向をチェックしておく。

Spring Framework 5.0のReactiveプログラミング対応

  • Spring Framework 5.0より、Reactiveプログラミング対応としてSpring WebFluxという新しいWebフレームワークが追加された。
  • Reactiveプログラミングを行うと、Non-Blockingなデータ通信により高速化、柔軟なスケーラリビティが期待できる。
  • RxJava, Reactor, Akka などのライブラリが有名どころ。JavaSE9ではFlowインターフェースによるReactiveプログラミング対応が行われている。

以下、各セッションのメモ

Java Day Tokyo 2017 基調講演 (日本オラクル代表執行役社長 杉原博茂、Oracle Vice President Bernard Traversat、Oracle Senior Director Will Lions)

概要(公式ページより)

いよいよJava SE 9とJava EE 8のリリースが近づいてきました!今回のJava Day Tokyoの基調講演は、Java SE、Java EEそれぞれの開発部門のVice Presidentが、直接みなさまへ新バージョンの価値をご紹介します。新バージョンの注目すべきポイント、さらにその先に何があるのかを、ぜひみなさまご自身でお確かめください。ご参加をお待ちしています。

日本オラクル代表取締役 杉原博茂 氏

  • 「日本を幸せにするカンパニーへ」
  • ITの人材不足が課題、2030年には60万人の不足に
  • オンプレ(12兆) > IaaS(2100億)
  • Cloud上で最適化するための機能強化

Oracle Vice President Bernard Traversat 氏

  • Cloudの基盤となる
    • AWS,MS AzuleなどのコアにJavaが使われている
  • Java is deadはOracleに買収されて払拭された
  • 先日、Dockerとのパートナーシップを発表した

Java9

  • 122のフィーチャーが入った
    • module system
    • modular JDK
    • JShell
    • Encapsulate Internal APIs
    • JLink: Java Linker
    • Ahead of time compilation(AOT)
      • Java9ではスタティックのコンパイレーションを利用可能
      • コンパイラがリアリタイム情報を取得可能に

Java9以降の動向(OpenJDK)

project Valhalla
  • ValueTypes
  • Specialized Generics
  • Var Handles
Project Panama

ビッグデータへの適用 GPUでの実行

  • Foreign Function Inteerface
  • Date Layout Control
  • Arrays 2.0

MazdaでのJavaの利用について

従来型

  • ビジネスプロセスをサポート
  • 機能要件・非機能要件をサポートするのは必須
  • 全ての開発者は共通の開発環境、アーキテクチャ、開発ルール、FWを使っている
  • 自動生成ツールを作成
  • 言語が長生きしてくれるのも重要
  • 下位互換性(バージョンアップしやすい)

最近の流れ

  • 組み合わせ
    • Strategy Pattern →関数型に
  • 期待
    • 開発環境やFWの共通化→肥大化→Jigsawに期待
    • 大量データ→GCの問題→BigData/AI時代のJavaに期待

JShell

  • REPLのようにインタラクティブに実行可能となる
  • mvn jshell compile
  • 補完機能もついている
  • プロトタイプをJShellで作成し、形ができてきたらコードに落とし込む

Oracle Senior Director Will Lions 氏

  • JavaEE8は早ければ今年の夏に発表予定
  • HTTP/2は速度が速くセキュア、アプリケーションに変更必要なし

JJUG

  • 現在6300人以上、コアは20-30代
  • なぜコミュニティに参加するのか
    • 一緒に考えてくれる仲間に出会える
    • すごいエンジニアを知ることが出来る
    • 発信して勉強できる

Java 9 and Beyond: Java Renaissance in the Cloud

概要(公式ページより)

本セッションはJava 9リリースのアップデート情報をお届けします。Java 9は、エンジニアがjavaサービスをクラウド上にjavaサービスを開発し展開する方法を根本的に変えます。新たなツールであるAOTやJLinkはJava 9の新モジュールシステムを活用して新しいタイプのパフォーマンスと密度の最適化を可能にします。Java 9でデフォルトGCに位置づけられたG1はビッグデータクラウドサービス向けの新たなレベルのスケーラビリティを提供します。さらに、value typeやJNIの移行、言語の改良など、Java 9以降の新機能についても触れたいと思います。またこのセッションでは、これら新機能のデモを通してクラウドベースの開発者にとってのJava 9の重要性を理解頂きます。

Java9

  • Javaの問題
    • 冗長性
    • メモリを食う
  • Javaの優先度
    • セキュリティ

新機能

  • jigsaw
  • JLink
  • Ahead of Time(AOT) Java Compiler
  • JShell
  • G1 GC as the Default

Java SE Advanced

  • Flight Recorder Performance
    • 条件に基づいた情報をトレーシングすることが可能
  • Java Mission Control Console
    • 問題箇所を調査することが出来る
  • Advanced Management Console
    • 特定のアプリだけ古いJavaを利用、などを設定できる(セキュリティの向上)

Java9以降の動向

  • Uniform
    • Array, Values, types
  • memory
    • なるべくコンパクトに、もっとライトウェイトなスレッド
  • Compatible
    • 互換性
  • Performance

Modular Development with JDK 9 (日本オラクル株式会社 デイビッド・バック)

概要(公式ページより)

モジュラー開発スタイルは全てのJava開発者(あなたのアプリケーションがたった1つのJARであっても100個のJARであっても)にメリットがあります。本セッションでは内部APIを強力に保護しながら数十の再利用可能なモジュールとしてJDKを構造化したJava 9のモジュールシステムを紹介します。 そして、セッションではモジュールをどのようにして作成するか、一般的に利用されているライブラリ潜むJDKの内部APIへの依存の回避をどのように行うかについて解説します。最後に、モジュールのために用意されたツール群について説明します。

Programs are Classes Package Mogules

  • “public” no longer mean “accessile ti everyone”. 新規ドキュメント 2017-05-17 14.13.09_1.jpg

新規ドキュメント 2017-05-17 14.14.37_1.jpg

exports はパッケージ単位。requires はモジュール単位 新規ドキュメント 2017-05-17 14.20.12_1.jpg

JLinkを利用すると、JDKのクラスモジュールのうち必要なものだけ指定して読み込むことが出来る →メリットは? cloudなどで多数のJDKを起動する場合などに、リソースの節約になる

jdepsでjarの依存関係を検査することができる(Java8から提供されている) 新規ドキュメント 2017-05-17 14.32.35_1.jpg

Automatic Modules 既存のJarを自動的にmodule化する機能 モジュールベースで開発されてないものは、Automatic modules機能を使う。Jarの変更なし

Servlet 4.0 で始めるHTTP/2 (日本オラクル株式会社 柳原 伸弥)

概要(公式ページより)

HTTPの仕様が16年ぶりにHTTP/1.1 からHTTP/2に更新され、通信効率を向上するさまざまな仕組みが取り込まれました。Servlet 4.0では、HTTP/2の活用するアップデートが行われています。本セッションでは、Servlet 4.0を用いたHTTP/2 の活用例についてご紹介します。

Servlet振り返り

  • サーバサイドで動作するJava
  • Controllerとしての役割

Servlet4.0概要

  • Servlet4.0 2017/7リリース予定
  • HTTP2対応

HTTP/2概要

  • 1系
    • TCPコネクションについて、リクエスト・レスポンスが1:1
    • 原則として1つのリクエストの完了を待ってから、次のリクエストを送信→待ちが発生
    • 高速化の取り組み
      • CSSスプライト
      • インラインイメージ
      • ドメインシャーディング
  • 2系
    • TCPコネクションについて、ストリームの多重化
    • ストリーム優先度
    • Server Push
    • ヘッダー圧縮(オーバーヘッドを少なくする)
    • バイナリー・フレーム(今まではテキストベースだった)

Server Push

  • 一つのリクエストに複数のレスポンスを返す
  • PushBuilderオブジェクトを作成 (request.newPushBuilder();)
  • PushBuilderオブジェクトは再利用可能
  • GETまたはHEADを利用する(「キャッシュ可能」かつ「安全」であること(RFC 7540の仕様に準拠))
  • JSファイルの結合や、CSSスプライトを行う必要がなくなる

新規ドキュメント 2017-05-17 14.32.35_2.jpg

Java SE 9のすすめ (Java in the Box 櫻庭 祐一)

概要(公式ページより)

Java SE 9というと、Project JigsawやJShellを思い浮かべるかもしれません。しかし、Java SE 9はそれだけではありません。Java SEの機能追加を定めるJEPの数は89もあります。 本セッションでは、Java SE 9の多くの新機能の中から言語仕様の変更や、コアライブラリの変更点、また互換性に問題がある点などについて実例と共に解説します。

Jigsaw, JShellの話はしない

アジェンダ

  • Compatibility
  • Brand new
  • Update

Compatibility

  • Language & Library
    • アンダースコアのみの変数名は使用できなくなった
    • 消えたメソッド
      • OSに直結するようなメソッドは隠蔽された(Jigsaw絡み)
    • deprecated
      • threadのStop
      • Reflection系のメソッド
  • VM&Tools
  • Operation & Management
    • No More Visual VM
    • No More hprof(heapのプロファイラ), jhat
    • JRE Structure
    • No More rt.jar, tools,jar, lib/ext
    • No More -Xbootclasspath
    • Default GC: G1GC (今まではパラレルGC)
    • Deprecated: CMS(GCの一種)

Brand New

  • Jigsaw
  • Project Kulla/JShell
  • Reactive Streams
    • 非同期プロセス
    • Publisher-Subscriver Model (w / Back Pressure)
    • Flowインターフェース
      • Publisher
      • Subscriber
      • Subscription
  • JEP11 Incubator Modules
    • ベータ版のような機能をJDKに含める
      • Java SE 9 : HTTP/2 Client

Update

  • Language: Milling Project Coin
    • @SafeVarargs
    • try-with-resources
      • finalのついた変数ならばtry句に使用可能に(実質的finalでもOK(Java8より))
    • ダイヤモンド演算子(<>)
      • 匿名クラスでも利用可能に
    • Interfaceでprivateメソッド
    • アンダースコア
  • Library
  • Stream
    • Factory Methods
      • ofNullable(t)
      • iterate(seed, hasNext, next)
        • 条件とつけられるようになった(今までは無限イテレート)
    • New Methods
      • take/dropWhile
      • Collectors.flatMapping
      • Collectors.filtering
  • Optional
    • stream()
    • ifPresentOrElse(action, elseAction)
    • or(supplier)
      • Optional opt = opt1.or(() -> opt2)
  • Collection
    • Factory Method
      • of()
        • List l = List.of(0,1,2);
        • Map<Integer, String> m = Map.of(0,”a”,1,”b”);
    • Making Immutable Collection
    • Enumeration.asIterator();
  • String
    • char → byte
      • heapの使用量がかなり減る
    • concatenation
      • StringBuilder → InvokeDynamic
        • 最適化が可能に
  • Deprecated
    • @Deprecatedのついたものは本当に消される
      • Deprecatedの警告が出た場合はすぐに対応すべき
  • Javadoc

Spring Framework 5.0によるReactive Web Application (Pivotalジャパン株式会社 槙 俊明)

概要(公式ページより)

Spring Framework 5.0の目玉機能としてReactiveプログラミング対応が加わり、Spring WebFluxという新しいWebフレームワーク及びランタイムが追加されます。 本セッションでは、Reactive対応の背景とReactive Streams/Project Reactorの説明から入り、Spring Boot 2.0を交えたSpring WebFluxの使い方をコード例を中心にご紹介します。

発表資料

https://www.slideshare.net/makingx/spring-framework-50-reactive-web-application-javadaytokyo

Reactiveとは?

  • Non-Blocking
  • event-driven
  • backpressure

種類

  • Sync/Bloking
  • Async & Blocking
    • マルチスレッド
      • スレッドを立ち上げる処理が重い
  • Async & Non-Blocking

    • Event-Loop
    • I/Oの待ち時間を有効に利用できる
  • Servletを使うと必然的にBlockingになる

  • Nettyを利用するとNon-Blocking & Event-Loop (Apple, Twitterなどで利用されている)

SpringがReactive対応する理由

  • マイクロサービス→無駄なくスケール可能に
  • スロークライアントからのアクセス
  • スケーラビリティ・安定性など

Reactive Streams

  • non-blocking
  • back prassure
    • データの流量を調節する機構

対応ライブラリ

  • RxJava
  • Reactor
  • Acca Stream

Reactorの場合

Flux/Mono

  • Flux
    • Publisherの実装0~N件のデータを表現する場合に使用
  • Mono
    • Publisherの実装 0または1のデータを表現する場合に使用

SpringFW5.0でのReactive Stream 新規ドキュメント 2017-05-17 17.52.39_1.jpg

ロジカルシンキング入門

先日、ロジカルシンキングについて講習を受ける機会がありました。
エンジニアも打合せや仕様検討など、論理的に思考することや伝える技術が必要ですが、私を含め苦手な方が多いのではないかと思います。
ロジカルシンキングを勉強して考えのまとめ方、伝え方がスムーズになった気がするので、教わったことをまとめておきます。

ロジカルシンキングとはなにか

一貫していて筋が通っている考え方、説明の仕方のこと。

  • きちんと深掘りし、良い案をだすこと
  • なるほど、とおもってもらう
  • 分かりやすく伝える

人間の頭はそもそもロジカルシンキングにむいていない
→すぐに結論を出したがる
→訓練が必要

本質:頭の中でどう考えているかよりも、それが相手に伝わる「メッセージ」として具現化できているかが重要。

ロジカルシンキングの考え方

  • 考えるべきことを3つ出す

    • 具体的な要素ではなく、1つ上の概念を出すこと
      →「開発要員が足りない」、ではなく「社外」「社内」「採用」 という”観点”を考える

    • ひたすら訓練する

      • 「ゼロ秒思考」
        テーマについて、1分で5つ以上答えをだす(例:自分の強みは何なのか)
        単語ではなく文章としてアウトプットする(日本語力の強化)
  • マトリックスで整理する

    • 3×Nのマトリックスをつかう
      →軸を決めて整理することで、相手に納得感をもってもらう

思考のテクニック

ボトムアップ

答えから考えていく方法。これをやってしまいがち。
理解しているテーマには強いが、まったく新しいことには対応しづらい。

例:要件定義は必要か?
→結論:Yes
→なぜ?
・システムに必要な機能要件をについて共通認識をすり合わせる
・要件を分類整理することで、必要工数など算出できる

トップダウン

答えを出すにあたって、必要な要素、観点を洗い出し、組み合わせて深掘りしていく方法。
新しいことを考えるにはこれが大事。
観点をふくらませるには、一つの観点に対し、対極・中間・上位・下位など相対的に考えていく。

例:要件定義は必要か?
→要素・観点:
・人(設計者、ユーザ、システム管理、経営層)
・モノ(サーバ、他システム、データ)
・時間(開発期間、大量データの処理時間)

フレームワーク

ロジカルシンキングの伝え方

テンプレートを意識

  • 〜の件についてですが  (テーマを最初に確認する)
  • 〜は〜だと考えます。  (結論を最初に言う)
  • その理由は3つあります。  (理由を列挙)
  • 1つめに〜であること、
  • 2つめに〜であること、
  • 3つめに〜であること
  • よって〜は〜だと考えます。

SCQAの型を意識する

  • 状況提示(Situation) :御存知の通り〜ですよね
  • 複雑化(Complication):そんな中、〜ですよね
  • 問い(Question):だから〜について、〜するべきですよね
  • 主張・提案(Answer):この点、〜と考えます

  • SCが難しい、答えを急ぎがちなので注意

  • 話し手はずっと考えている、聞き手は初めて聞く(SCを省きがち)

ロジカルシンキングのトレーニング

以下を徹底する

  • 結論から話す
  • 理由を説明する(なぜなぜ、、、)
  • 紙に書いて整理する

補足

  • ロジカルシンキングだけではだめ、感情力も大事
    • データ・数字より、より感情的に訴える内容のほうが心に残る(免許更新センターの動画)

おすすめ書籍

HHKBで小文字英字が入力できなくなったら(CapsLock)

普段、HHKB(Happy Hacking Keyboard)というキーボードを使用しています。
ある日、突然大文字英字しか入力できなくなってしまい戻すのに少し手間取ったのでメモ。

挙動的にCapsLockがかかったのだろうと推測したのですが、HHKBにはCapsLockキーがありません。
じゃあショートカットキーかな、、と思い色々調べたところ、公式サイトのFAQに記載がありました。

Happy Hacking Keyboard サポートFAQ

以下、引用です。

Q1:“Caps Lock” を有効にするにはどうしたらいいですか?
A1:キーボード後部のDIPスイッチで、設定したモードにより動作が異なります。
HHKモード】
“CapsLock"の機能はありません。
【Lite拡張モード、Macモード】
【Fn】+【Tab】キーで"CapsLock"の働きをします。

私はMacモードで使用していたので、Fn + Tabキーで無事CapsLockを解除できました。
FAQの一番上に書かれていたので、意外と皆さん引っかかるのかもしれませんね。

リフレクションで引数名を取得するときはjavacに-parametersオプションをつける

Javaでリフレクションを利用してメソッドの引数名を取得したかったのですが、ちょっと詰まったのでメモ。
結論としてはコンパイル時、javacに-parametersオプションをつける必要がありました。
以下検証までの手順です。

問題:リフレクションで取得した引数名がargNになる

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

public class GetArgsName {
    public static void main(String... args) throws NoSuchMethodException, SecurityException {

        Method m = Calc.class.getDeclaredMethod("add", int.class, int.class);
        Arrays.stream(m.getParameters())
            .map(Parameter::getName).forEach(System.out::println);
    }

    public static class Calc {
        public int add(int x, int y) {
            return x + y;
        }
    }
}

上記のプログラムで引数名を取得できると思い、実行してみたところ以下のような結果が。

arg0
arg1

引数名であるx,yを取得したかったのですが、なぜかargNで取得されました。

解決法:javacに-parametersオプションをつける

いろいろ調べた結果、以下のサイトにドンピシャの答えが書いてありました。
ひしだまさんにはいつもお世話になっています。笑

Javaリフレクションメモ(Hishidama's Java Reflection Memo)Javaリフレクションメモ(Hishidama's Java Reflection Memo) 

リフレクションで引数名を取得したい場合、javacに-parametersオプションをつける必要があるとのこと。
またEclipseで実行するときは、プロジェクトのProperties > Java Compiler より以下にチェックを入れればOK。
f:id:nesheep5:20170202140221p:plain

再度実行した結果、以下のように思惑どおり引数名を取得できました。

x
y

エンジニアのヘルスケアで本当に買ってよかったもの5選

エンジニアになってから十余年、日々のデスクワークのによる肩こり・腰痛・腱鞘炎が辛いです。職業病ですね。
30歳過ぎると健康管理の重要性が身にしみます。放っておくとどんどん悪化していくため、なんとか改善しようと試行錯誤の毎日です。
色々試した中で、これは本当に買ってよかった!と思えるものを紹介します。

LPN ストレッチポール®EX

LPN ストレッチポール(R)EX ネイビー 0001
LPN
売り上げランキング: 73
  • プロアスリート御用達
  • 猫背の矯正、肩甲骨まわりのストレッチに効果
  • 体幹トレーニングにも利用可能

ラグビーをやっているエンジニアの方に薦めてもらいました。
プロのアスリートも多く使われているそうです。
ポールの上に寝そべり、エクササイズをすることで正しい姿勢に矯正することができます。
寝起きに使うと、いかに体が凝り固まっているか実感できると思います。特に猫背の矯正、肩甲骨まわりのストレッチに効果があり、ググーっと伸ばすことでデスクワークで凝り固まった体をほぐすことができます。
また体幹トレーニングにも利用できるため、体を鍛えて凝りや痛みを未然に防ぐ使い方も可能です。
類似品が色々ありますが、正規品は作りがしっかりしていてヘタりもなく硬さも絶妙だったのでおすすめです。

参考サイト
ストレッチポールとは|ストレッチポール公式サイトストレッチポールとは|ストレッチポール公式サイト 
ストレッチポール®がベスト体幹ツールの理由と効果的使用法ストレッチポール®がベスト体幹ツールの理由と効果的使用法 

ドクターエア 3Dマッサージロール

  • 充電式でとにかく手軽に使える
  • 継続することで体質改善に

とあることからモニターをやることになりこの商品を知りました。
3段階のバイブレーションで凝っている箇所をほぐします。充電式でとにかく手軽につかえるので、テレビをみながらソファーで使用したりと、「買ったけど面倒になって使わない」がなく毎日使用しています。
バイブレーションだけでコリが取れるのか?と半信半疑だったのですが、筋肉を振動させることで筋膜剥がしのような効果があるそうです。足などに使うとむくみがとれ、柔軟性も高まります。
モミ玉でゴリゴリやったときのようなもみ返しがないのもメリットです。

参考サイト
3D MASSAGEROLL(マッサージロール) | DOCTOR AIR (ドクターエア)3D MASSAGEROLL(マッサージロール) | DOCTOR AIR (ドクターエア) 

PFU Happy Hacking Keyboard Professional2 墨

  • 知る人ぞ知る高級キーボード
  • キー入力のしやすさで指・手首の負担軽減

MacBookを使うようになってから薄いキーボードのせいで指が痛むようになったため、購入しました。
静電容量無接点方式のためキーがとても軽く底打ちせずに入力できるので、指や手首への負担が格段に減りました。
また矢印キーもないほどコンパクトなので、マウスへ手を伸ばす距離が最小限になり、腕への負担も少なくなります。
知る人ぞ知る高級キーボードで購入までかなり悩みましたが、本当に買ってよかったと思える一品です。

参考サイト
Happy Hacking Keyboard | PFUHappy Hacking Keyboard | PFU 
僕がHHKB(Happy Hacking Keyboard)を愛用する理由 - give IT a try僕がHHKB(Happy Hacking Keyboard)を愛用する理由 - give IT a try 

無印良品 ネッククッション

  • 昼休みの仮眠に最適
  • 寝る姿勢に合わせて形を変えられる

昼休みに15分ほど仮眠を取っているのですが、良い枕がないか探したところこれにたどり着きました。
中身がサラサラのビーズクッションになっているため、寝る姿勢に合わせて形を変えることができます。
使う前は起きた時に首が痛かったのですが、使ってからは短時間でしっかり体を休めることが出来るようになりました。

MOLDEX 耳栓お試し8種類セット

MOLDEX 耳栓お試し8種類セット
Moldex
売り上げランキング: 4,026
  • 抜群の遮音性
  • 8種セットで自分に合うものが見つかる

集中したい時、仮眠を取るときに使用するため、いろんな耳栓を試してこれにたどり着きました。
遮音性が抜群で、人の声もきちんとカットできます。(逆に声をかけられても反応できないくらいです)
大きさや柔らかさ、遮音特性などが異なる8種がセットになっているので、自分に合うものが見つけられると思います。
個人的にはカモフラージュ柄のカモプラグがおすすめです。

参考サイト
Moldex JapanMoldex Japan 
うるせぇ、MOLDEXの耳栓比較記事ぶつけんぞ!うるせぇ、MOLDEXの耳栓比較記事ぶつけんぞ!