radioc@?

レディオキャットハテナ

大晦日だよWeb系エンジニア〜2017年技術トピックスふりかえりスペシャル

2017年もいよいよ大詰めとなりました。今年触れた技術について各分野ごとに来年に向けてまとめておきたいと思います。

注意点としては各技術の動向を考察するというよりは、Web系エンジニアの視点で各技術をどう扱うかに視点を置いてみた。その観点はあくまで以下のような私個人の2017年の活動がネタ元であることはご容赦ください。


AI

まずはここから書き始めるしかないというくらい、猫も杓子もAIの状況が続いているが、今年1年でずいぶんライブラリやAPIが整備されてきた印象がある。これまでは専門家がデータを分析し試行錯誤してゼロベースでAIの仕組みを構築することが多かったが、今後は専門家以外でもこれらのライブラリやAPIを駆使してAI系機能を実現するケースが増えてくると思われる。エンタープライズ系に強いJavaDeep LearningライブラリであるDL4Jも2018年中にv1.0がリリースされると思われる。Deep Learingの専門ではない従来のエンジニアがこのようなライブラリを手軽に扱えるようになれば、技術は今以上に浸透していくと思われる

radiocat.hatenablog.com

もちろん肝となるのはデータの収集・整備であったり、ゼロベースではないにしてもライブラリやAPIから適切なアルゴリズムを選定して仕組みを構築する部分にもあるため知識ゼロでAIが扱えるということは無いだろう。しかし、これまでも我々は例えばソートアルゴリズムをゼロベースで実装しなくてもソートを扱ってサービスを構築してきた。ときには内部アルゴリズムに目を向けることもあるが多くの場合は深く意識せずソートアルゴリズムを扱えるように、そろそろDeep Learningを深く学習せずとも扱うようになるステージを迎えるのではないかと感じている。もちろん、専門領域では引き続き様々な研究が続くと思われるため、ある程度の知識を持って専門分野を追いかけつつ、構築済みのライブラリやAPIの仕組みの中でアルゴリズムを活用してサービスに応用するようになるのではないだろうか。

モバイルアプリ

AndroidではKotloinが正式にサポートされることになり、Swiftも4にバージョンアップするなど着実に進歩を続けている分野ではあるが今後に向けての一番大きな動向はPWAではないかと感じている。Google I/OChrome Dev Summitでもその力の入れようが感じられる。

qiita.com

年末にはSafariとEdgeの開発版にもServiceWorkerがサポートされ、いよいよ2018年はPWAの導入が本格化するかもしれない。

www.publickey1.jp

フロントエンドの各ライブラリもPWAに追従するためのサンプルコードを公開しており、モバイルアプリエンジニアだけでなくフロントエンドエンジニアからの注目度も高い。

qiita.com

フロントエンド

PWA以外にもWeb Compornents、AMP、WASMなど話題には事欠かないのがこの領域だ。

radiocat.hatenablog.com

カウボーイ状態はまだしばらく続きそうで、乗りこなすのは大変だと感じる。

AMPについてはGoogleの検索アルゴリズムが関係してくるため技術云々ではなく追従せざるを得ない面はある。

GoogleがAMPの規格をアップデートしてSEOねらいの‘釣りページ’を退治する | TechCrunch Japan

スマートスピーカー

2017年は間違いなく日本におけるスマートスピーカー元年と言えるだろう。個人的には運良くAmazon Echoの招待メールがもらえて、Google Homeと両方を比較して試すことができた。

qiita.com

qiita.com

肝となる音声認識の部分は各プラットフォームで提供されるため、これを扱うエンジニアとしてはそれほど新しい技術を使うわけではない。ただ、Web系エンジニア的にはプラットフォームとしてはスマホに次ぐ新たなサービスの入り口として無視できない状況になる可能性はある。音声を受けた後のバックエンドは既存のWebサービスに繋げて扱うこともできるため、音声応答を意識したサービスの構築やアプリ設計の観点が必要になってくるかもしれない。

一方でAmazon AlexaにしろGoogle Assisntantにしろ、まだまだこれらのプラットフォームは発展途上で技術情報も整備されておらず扱いにくい面もあった。

qiita.com

qiita.com

Dialogflowに至ってはGoogle Homeが日本で発売開始された直後にAPI.AIから名称変更するほどの途上っぷりだった。

ただ、前述の通り技術的には新しく習得する要素がそれほど多くないため手軽さはあり、未成熟なプラットフォームにおいてアイデア次第で色々試せる面白さはモバイルアプリの黎明期に似ている状況でもある。そういう意味では2018年はまだまだ盛り上がっていく期待がある。

セキュリティ

Web系エンジニアにとっての最大の話題といえばStruts脆弱性と言って良いだろう。ニュースでも取り上げられて大きな話題となった。Web系に限らずソフトウェアエンジニアがここ十年ほどで当たり前のように使うようになったOSSとの関わり方について、今一度考え直す良い機会になったのではないだろうか。

www.ipa.go.jp

個人的にも時々セキュリティ系の勉強会に参加しているが、参加者多数で定員オーバーになっていることも多く、この1年でその関心が非常に高くなってきていると感じている。

radiocat.hatenablog.com

近年ではIoT関連のセキュリティリスクが高まってきており、前述のスマートスピーカーの普及もあって今後もスマートホームなどでIoT関連の製品の普及が加速するとも考えられるため、引き続きこの傾向は続くと思われる。

www.ipa.go.jp

スマートスピーカーのプラットフォームのようにWeb系エンジニアがそこに関わるケースも増えそうなので対岸の火事では済まされない可能性もある。

インフラ

KubernetesやRancherなどが今年最も強い印象を残してオーケストレーションという言葉がバズワード的に浸透し始めた。

radiocat.hatenablog.com

この界隈は2018年も引き続き注目の技術となるのではないだろうか。個人的にはこれらの技術にあまり触れられていないため2018年はもう少し注目して追いかけたいと感じている。

jp.techcrunch.com

また、少し論点がずれるがインフラを管理しないという点で、サーバレスアーキテクチャも盛り上がりを感じた1年だった。元々その定義が分かりにくい領域ではあるが、Webサービスだけではなくモバイルアプリやスマートスピーカー、IoTもカバーする分野なので今後も注目されていくと思われる。ただ、個人的にはサーバレスというのはプログラマコンパイラアセンブリを意識しなくても開発できるのと同じようにインフラを意識しなくても開発できる手段の1つでしかないとも感じており、最終的にはサーバレスという枠組み自体が次第に無くなっていくのではないかとも思っている。

radiocat.hatenablog.com

アジャイル

キーワード自体は2016年からあったものだが、Agile Japan 2017の基調講演で発信されたModern Agileが注目を集めた。

qiita.com

言葉自体はややバズワード的ではあるが、この1年のアジャイル界隈から発信された、Manegement 3.0、心理的安全性、モブプロなどの要素を見る限りその概念は本質を捉えているようにも思える。個人的にはモチベーションの可視化手段としてムービングモチベーターズがチーム内に定着できた点でも収穫があった。

qiita.com

おわりに

以上、独断と偏見で2017年をまとめてみた。最後に2018年に向けて何か書こうかと考えていたけど長くなったので来年のことは来年書くことにして今年は終わりたいと思います。それではみなさま良いお年を。

【読書メモ】自分の小さな「箱」から脱出する方法

自分の小さな「箱」から脱出する方法

自分の小さな「箱」から脱出する方法

  • 作者: アービンジャーインスティチュート,金森重樹,冨永星
  • 出版社/メーカー: 大和書房
  • 発売日: 2006/10/19
  • メディア: 単行本(ソフトカバー)
  • 購入: 156人 クリック: 3,495回
  • この商品を含むブログ (418件) を見る

この本の実践編については以前まとめているが、今回は改めて本編をおさらいしてまとめてみた。大筋は前回まとめているので今回はいくつかの重要なキーワードとビジネス面への影響についての解説箇所をピックアップしたい。

自己欺瞞

本書で表現している「箱」に入るとは、自己欺瞞のことである。自己欺瞞の意味は以下の通り。

自分で自分の心をあざむくこと。 自分の良心や本心に反しているのを知りながら、それを自分に対して無理に正当化すること。 自欺(じき)。

自己欺瞞(ジコギマン)とは - コトバンク

自己欺瞞に陥るとそれ以前に持っていた目的に集中できなくなり、やがて自己正当化のために他人を攻撃したり当初の目的とは違う行動を起こしてしまう。

自己正当化

  1. 他人の欠点を大ゲサにあげつらう。
  2. 自分の長所を過大に評価する。
  3. 自己欺瞞を正当化する。ものの価値を過大に評価する
  4. 相手に非があると考える。

自己欺瞞に陥ると相手に非があると考え始める。相手を非難するためには相手に非がなければならないため、相手の欠点ばかりに目を向けるようになる。また、自分を正当化するためには自分には非がないことを示さなければならないため、自分の長所を過大評価してしまう。

自分への裏切り

  1. 自分が他の人のためにすべきだと感じたことに背く行動を自分への裏切りと呼ぶ。
  2. いったん自分の感情に背くと、周りの世界を、自分への裏切りを正当化する視点から見るようになる。
  3. 周りの世界を自分を正当化する視点から見るようになると、現実を見る目がゆがめられる。
  4. したがって、人は自分の感情に背いたときに、箱に入る。
  5. ときが経つにつれ、いくつかの箱を自分の性格と見なすようになり、それを持ち歩くようになる。
  6. 自分が箱の中にいることによって、他の人たちをも箱の中に入れてしまう。
  7. 箱の中にいると、互いに相手を手ひどく扱い、互いに自分を正当化する。共謀して、互いに箱の中にいる口実を与えあう。

本心に反して自己正当化する時、自分への裏切りが起こり、自己欺瞞に陥る。自分への裏切りが起きた時から人は箱に入るのである。他人のためにすべきと考えながら、自分への裏切りによってそれをしなくなる。

ビジネスリーダーが箱に入るとどうなるか

  • 業績に集中できなくなる
  • 周りの人を箱に入れてしまう
  • 業績を上げるために最善を尽くそうと考えながらその反対の行動をしてしまう

f:id:radiocat:20171223125927p:plain:w500

p. 244 より引用

多くの人は最初に仕事に取り組もうとしていた時には会社の業績を上げるために最善を尽くそうと考えている。しかし、例えば仕事で自分は一生懸命やったのに上司や周りに認められなかったと思って自己欺瞞に陥ってしまうと、自己正当化のために同僚に対して攻撃的になったり怠け者だと卑下してしまう。一方で自分に対しては充分よくやっている勤勉な人間なので間違っている事など無いと考えてさらに深い箱に閉じこもってしまう。このような本来の目的に反する結果は全て自分への裏切りによって自己欺瞞に陥った時に始まるのである。

会社において影響力のあるリーダーが箱に入ってしまうと、その影響は周囲の社員にも及び、会社の業績に致命的な原因になりかねないのである。では箱に入らないためにはどうしたら良いのか?それについての明確な答えはない。いくつかのヒントは実践編のほうに書いてあるので参考にすると良さそう。

radiocat.hatenablog.com

【勉強会メモ】CA.kt #5 @大阪

cyberagent.connpass.com

CA.ktはCyberAgentさんが主催するKotlinの勉強会で、今回が初の大阪開催でした。テーマは11月にサンフランシスコで開催された Kotlin Conf の内容を実際に現地で参加してきた方々にフィードバックしていただくという内容でした。当日の様子は動画やブログに公開されていて把握することができますが、実際に参加してきた方々から直接話を聞くことで現地の盛り上がりを感じることができました。個人的にはSpring BootでのサーバサイドKotlinはそろそろ手を出してみても良いかもと(何の根拠もないですが)思い始めました。

Kotlin ConfではJetBrainの人が最後に "Have a Nice Kotlin!" と言ってプレゼンを終えていたそうだ。今回の登壇者の方々もこれを合言葉のように使ってたところにKotlin愛を感じた。その雰囲気を感じていただければと思います。

Have a Nice Kotlin!

Kotlin Conf Overview + Keynote + and more

藤原 聖さん

speakerdeck.com

Kotlin Conf

  • 主催:JetBrains
  • 場所:サンフランシスコ沿岸部

www.kotlinconf.com

Kotlin Conf Session

Keynote

詳細はブログ参照

blog.jetbrains.com

Sessions

  • 44 sessions
  • 3 tracks
  • TBA sessions:kotlin/Nativeの話
  • セッション用アプリあり

主なセッションの内容

Kotlin Conf Apps

www.kotlinconf.com

Top 5 Rated Talks

  • Kotlin Puzzlers by Anton Keks
    • Kotlin 言語仕様を使ったクイズ⇒詳細は3番目のプレゼンで紹介
  • The Road to Kotlintown by Huyen Tue Dao and Christina Lee
    • コードでプレゼン資料が作られている
    • 前半はジェネリクスの話
    • 後半は拡張関数、ラムダ、DSL
  • Tow Stones, One Bird: Implementation Tradeoffs by Christina Lee
  • Party Keynote by Michael Carducci
    • マジック…

youtu.be

  • How to Kontribute by Yoshinori Isogai
    • @shiraj_i ※日本から
    • KotlinのContributerになるまでの手順
    • Podcastのdex.fmでも当日の事を紹介

http://dex.fm/post/168154381478/037-how-to-kontribute
dex.fm

Pickup Sessions

  • Kotlin Types
  • Bootiful Kotlin
  • React app in Kotlin
  • Testing Kotlin at Scale

Kotlin Types

  • Kotlin In Action の6章の内容からの抜粋 ※詳細は2番めのプレゼン
  • 著者の1人 @sveta_isakova

Kotlinイン・アクション

Kotlinイン・アクション

Kotlin Conf 報告会 - Kotlin Types

荒谷 光さん

speakerdeck.com

@sveta_isakova のセッションの紹介

Kotlin types, Java types

  • Kotlinの IntJavaint
  • Kotlinの Int?JavaInteger
  • doubleなど他のプリミティブ型も同じ

kotlin.Stringjava.lang.String

  • Javaの場合
    • "one.tow.".replaceAll(".", "*") ⇒ "*******"
  • Kotlinの場合
    • "one.tow.".replace(".", "") ⇒ "onetow*"

Any, Unit, Nothing, void

Collections

  • kotlin.MutableListkotlin.List
  • Read-only ≠ immutable
  • JavaArrayListの親クラスが kotlin.MutableList,kotlin.List`

Kotlin Puzzlers

仙波 拓さん

  • Programing Puzzlers
    • 小さいコードで奇妙な動きをするプログラム集

github.com

紹介されたコードを見たほうが分かりやすいと思うので転載。実行結果がa)〜d)のどれになるか考えて見て下さい。答えはリンク先。

Q1: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/bugs/inclusiveRange

package bugs.inclusiveRange
// inspired by AndroidPub

val i = 10.5

when (i) {
  in 1..10 -> println("in")
  !in 1..10 -> println("!in")
  else -> println("else")
}

// What will it print?
// a) in
// b) !in
// c) else
// d) will not compile

when の中がIntのためIntで比較される

Q2: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/properties/override

package properties.override

open class Named {
  open var name: String? = null
    get() = field ?: "<unnamed>"
}

class Person: Named() {
  override var name: String? = null
    get() = super.name
    set(value) { field = "Mr $value" }
}

val person = Person()
person.name = "Anton"
println(person.name)

// What will it print?
// a) Anton
// b) Mr Anton
// c) <unnamed>
// d) null

field は別モノ

Q3: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/syntax/weirdChaining

package syntax.weirdChaining
// by Kevin Most @kevinmost

fun printNumberSign(num: Int) {
  if (num < 0) {
    "negative"
  } else if (num > 0) {
    "positive"
  } else {
    "zero"
  }.let { println(it) }
}

printNumberSign(-2)
printNumberSign(0)
printNumberSign(2)

// What will it print?
// a) negative; zero; positive
// b) negative; zero
// c) negative; positive
// d) zero; positive

⇒ ifは式であり else ifelse と if式

Q4: https://github.com/angryziber/kotlin-puzzlers/tree/master/src/nullability/theOrder

package nullability.theOrder
// inspired by Adam Arold @addamsson

class Order {
  private val c: String
  init {
    the()
    c = ""
  }
  private fun the() {
    println(c.length)
  }
}

Order()

// What will it print?
// a) 0
// b) null
// c) will not compile
// d) none of the above

c はイニシャライズ前に呼ばれるためNPE

LT

懇親会中のLTでメモを取っていなかったのでうろ覚えです。

Koreferenceの話

AndroidのSharedPreference用のライブラリの話

github.com

Reified の話

たぶんこのへんの話だったように思うけどうろ覚え。

Inline Functions and Reified Type Parameters - Kotlin Programming Language

KtorでサーバサイドKotlinの話

speakerdeck.com

RancherとOpenFaaSでサーバレスKotlinの話

【勉強会メモ】第7回 関西DB勉強会

kansaidbstudy.connpass.com

  • 日時:2017/12/16(土) 13:00 〜 19:00
  • 場所:Insight Technology 大阪支店

f:id:radiocat:20171217004000p:plain

今回もDBにまつわる様々なテーマが偏り無く扱われて密度の濃い勉強会だった。SSDの話は正直なところ専門的すぎて難しかったがDBの勉強会でもこのようなテーマが扱われるのは面白いと感じた。トレンドとしては各社とも分散データベースと列指向型データベースの技術の浸透が進んできている印象。GraphデータベースはNeo4jのような専用のソフトウェアがある中で既存のDBMSがどう扱うかはまだ試行錯誤中と感じた。いずれにしてもデータベースと言いつつカバーする範囲はどんどん広くなるなぁという印象。

新規ユーザ獲得のためのPostgreSQLエンジニアが知るべきMySQLのこと

Ionic Japan User Group 代表 榊原 昌彦さん

遅れて参加したため途中からのメモになります。

NoSQLの弱点

  • JSON型はアプリとDBが密結合になる
  • アプリレーヤーのPDCAを素早く回すかわりにデータベース構造のPDCAが回しにくい

Webデザイン

  • ペルソナ・UX⇒仮説⇒UIデザイン⇒検証⇒戻る
  • 検証を繰り返すUIデザインが重要

seleck.cc

PostreSQLを広げる

アプリレイヤーからフロントエンドまでデータベースエンジニアもアプリレイヤーに興味を持とう

  • TwitterやLINEですらアプリレイヤーはどんどん変化している
  • DB側からもアプリレイヤーを知っていて提案できる方がよい

SQL Server2017 ワンポイント紹介

SQLWorld おださん(@shinsukeoda)

www.slideshare.net

Graph DB

  • ノード
  • エッジ
    • 2つのノードをつなぐ
  • プロパティ
    • ノードとエッジの属性

Node Table

  • create tableas Node を付ける

Edge Tabe

  • create tableas Edge を付ける

データの追加

  • Node Tableのデータの追加は普通に insert
  • Edge Tableのデータの追加はNodeとNodeをつなぐ特殊な方法で insert

データの検索は match

  • where 文に match を書く
  • 例)where match (誰が - (好き) -> 誰を)

参考

Graph Database in SQL Server – Microsoft Japan Data Platform Tech Sales Team Blog

  • 通常のSQLで書くと複雑でバグる
  • Graphで書くほうがシンプルになる

制限事項

  • テンポラリテーブルで使えない
  • テーブル変数でも使えない
  • メモリ最適化テーブルにできない
  • EdgeテーブルのUPDATEで $from_id , $to_id を更新できない
  • クロスデータベースクエリは未サポート

まとめ

  • 複雑なつながりをシンプルなクエリで表現できる
  • Neo4jの代わりになるレベルではない
  • Graphでできることは通常のクエリでもできる

参考

channel9.msdn.com

DB2->Db2、バージョンも11と黙々と進化するDb2のテクノロジーアップデートと事例

野間愛一郎さん

DB2の3K

  • 聞いたことが無い
  • 聞きたくても人がいない
  • きつい(中のひと)

2017年:IBM DB2からIBM Db2(小文字)へ

Db2ファミリー

www.nicpartners.co.jp

Hybrid Data Management

  • 共通のSQLアクセス提供
  • 全ての環境で提供(クラウドからオンプレまで)

Db2の特徴

  • Graph2011年ぐらいに実装済
  • JSONも普通に使える
  • XMLもガチのXMLDB並みのパフォーマンス
  • 列思考型のカラムナーを持っていて通常のSQLと一緒に使える

シェアードナッシングアーキテクチャ

  • データが増えてくるとパーティションの考え方がまた必要になってくるのではないか

BLUアクセラレーション

1TB未満でどっちもやりたい人向け

  • コストがかからずリソースが限られた中で使い勝手が良いかも

圧縮機能

  • デフォルトは辞書ベース
    • 辞書ベースに加えてページ単位で圧縮するなどのダブルで圧縮する方法もある
  • 圧縮すると遅くなる?⇒I/Oが減って早くなることもある

Db2 pureScale

it.impressbm.co.jp

BM DB2 pureScale Feature の概要

フェデレーション

  • DBLink
  • いろんなデータソースに繋がる

Common SQL Engine

enterprisezine.jp

Db2 11.1

DB2 バージョン 11.1 の特長

Db2を試す

www.ibm.com

Docker Storeにもある

Docker Store

MariaDBカラムナーベンチマークしちゃいましょ

japan mariadb user group代表 カワノさん

www.slideshare.net

CloumnStoreとは

  • チューニングレスで高い検索パフォーマンスを実現するDWH特化型データベース
  • 分析/集計処理に最適なカラムストアエンジン
  • MySQLとの互換性
  • 専用HW不要
  • リニアにスケールアウト

対称型マルチプロセッシング(SMP)

  • 分散処理…マルチコア対応

Extent Map

mariadb.com

Transaction

InnoDB vs ColumnStore検証

www.slideshare.net

HammerDB

Scale Factor 10ぐらいで作る(1だとExtent Mapが作られない)

データサイズ

  • InnoDBと比較して51%減
  • 大幅なDisk I/O削減が期待できる

github.com

ベンチマーク結果

  • 最大レスポンス
    • InnoDB⇒234.23sec
    • ColummnStore⇒12.48sec

ColumnStoreのようが遅くなっているものもそれなりにある

実行計画の調査

  • PBE=0
    • エクステントマップのパフォーマンスが発揮できていない

まとめ

  • ColumnStoreはInnnoDBと比較して7倍高速
  • 並列処理の恩恵のみ
  • TPC-Hだとエクステントマップの恩恵は受けられない

SF100~大きなデータサイズでの検証

  • 設定書き換えが必要

Flight Data Analysis : MariaDB InnoDB vs ColumnStore

www.youtube.com

今すぐ、触れて理解するSAP HANA

SAPジャパン 新久保 浩二さん

SAP HANA express edition

www.sapjp.com

SAP HANA インメモリープラットフォーム

www.sap.com

Translytical Data Platforms

特徴

デフォルトはカラム型

  • create cloumn_table …column Store
  • create table …row store

www.publickey1.jp

参考情報

www.atmarkit.co.jp

[図解]インメモリーコンピューティングSAP HANAのテクノロジー解説

  • トランザクションの最小単位は行レベルロック
  • データ圧縮…ディクショナリー圧縮(デフォルト)
  • トランザクション分離レベル… READ COMMITED , REPEATABLE READ , SERIALIZABLE
  • スマートデータアクセス…DBリンク、ODBCでアクセス

SSDの虚実

インサイトテクノロジー 浅野さん

SSD vs HDD

  • SSDが絶対的有利でもない
  • 処理速度と故障率がSSD優位

Flash Memory Summit

flashmemorysummit.com

今年の話題

  • 3D-Xpoint
  • NVMe/PCIe Storage
  • NVMe Over Fabrics
  • 3D NAND

SSDに関する素朴な質問

◎Enterprise向けSSDのほうが良いか?

2013年ごろコンシューマ用のベンチマークエンタープライズ向けを評価していた

  • 2017年やめようと訴える

◎バックアップに使うのはどうか

  • バックアップウィンドウの縮小
  • 災害時のRPO
  • A2S2T(All-Flash Array to 廉価SSD to Tape)
  • コンシューマ用で充分

TLCはどうか

  • TLC or QLCで充分

製品寿命

エンタープライズSSDの場合、最小データ保持期間(40℃, 電源Off, 3ヶ月)は同じ

◎製品寿命を気にしたほうがいいか

  • SSD=限定製品保証なので保証期間中に使い切る
  • 余剰領域はWrite速度を設定するために利用
  • クリッピングツールはメーカーに問い合わせ

◎NVMe試用のSSDはどうか

  • SATA/SAS SSDまでは導入効果を簡単に体感
  • NVMe SSDはソフト側も対応が必要
  • 低いQueue Depthだと10%ほどしか性能差が出ない
  • NVMeの優れているところはプッシュ型から

SASSSDなくなる?

◎NVDIMM

  • 理想の記憶領域との乖離はまだある
  • メモリ形状型SSD
  • モリーモードとストレージモード
    • Log File Syncは4倍差があったTPMになると1.1倍差
    • モリーモードにしないとだめ

容量の問題

  • 2018年にはDAXモード対応
  • NVDIMMはBig dealを生むか?

  • NVDIMM-NはNo⇒128GDRAM⇒32G?

  • NVDIMM-FもNo⇒
  • NVDIMM-P⇒本命?
  • 本命はIntel persistant Memorry?

両者ともDRAMとの共存が前提

DRAMSSDの間を誰が埋めるか?

SSDの問題

  • 発熱量…高速になるほど発熱量が増える
  • 容量…2.5インチが小さいDRAMも増やす必要があってコンデンサが必要

Intel Ruler⇒2.5インチのまま長くする

MySQLの公式GUIツール MySQL Workbench

日本オラクル株式会社 MySQL GBU 山﨑 由章さん/ @yyamasaki1

www.slideshare.net

MySQL Workbenchでできること

  • MySQL Serverの管理
  • 開発支援
  • DB設計支援
  • データ移行

商用版とOSS版がある

MySQLサーバ管理

  • MySQLサーバーのリソース状態がリアルタイムで見れる
  • コネクション一覧
  • 実行中のSQLの確認
  • ユーザーと権限の管理
  • システム変数の管理
  • データエクスポート(mysqldump)
  • サーバログの管理
  • 設定ファイルの管理(SSHでサーバへの接続必須)
  • パフォーマンス状況の確認(Dashboard、レポート)
  • Performance Schemaの設定(5.5以前はスキーマを作る必要あり)
  • 監査ログの管理(商用版のみ)
  • Firewallルール設定と状態確認(商用版のみ)
  • バックアップ・リストア(商用版のみ)
  • スキーマ内の各オブジェクトの確認
  • SQL実行と結果の確認
  • クエリのStatistics, Explain確認
  • スニペットの管理・実行
  • ER図モデリング
    • DBDoc…ドキュメント化(商用版のみ)
  • マイグレーションOracleは非サポート)

MySQLSSD考慮

  • 5.5時代からSSDを意識した設定が可能

MySQL8.0

  • オプティマイザ・コストモデル
    • データがディスクにあるのかメモリにあるのかに応じて判断する機能

【勉強会メモ】フロントエンジニア♡最前線Night

kansai-venture.connpass.com

f:id:radiocat:20171216115638p:plain:w600

フロントエンドに関する、UI設計、AMPとPWA、自社プロダクトの改善の話の3本立てだった。

せっかく遅刻せず参加したのに1本目のメモの途中でVimが異常終了してしまったので1本目は思い出してまとめた内容になります。あと、RoRはあまり詳しくないので若干省略気味。詳細は資料をご参照ください。

オブジェクト指向UIで立ち向かう

株式会社Goodpatch DesignDiv フロントエンドエンジニア 大角 将輝氏

2種類のUI

  • タスクベース:CUI
    • 動詞⇒名詞
    • アクション中心
  • オブジェクトベース:GUI
    • 名詞⇒動詞
    • オブジェクト中心

オブジェクトベースのUI設計

  • オブジェクト⇒ユーザーの関心事
    • オブジェクトは変わりにくい(アクションは変わりやすい)
    • オブジェクトが持つ属性を定義する
    • 属性に対する共通のアクションを定義する
  • データと表示要素が自然に対応する⇒フロントエンドとバックエンドの関係がシンプルになる
  • オブジェクトベースで設計すると機能の重複が少ない

あとで色々ググってみると以下の情報が参考になりそう。プレゼン資料の中でもこのサイトの内容が一部紹介されていた。

www.sociomedia.co.jp

AMPとPWAについて

クックビズ株式会社 フロントエンドエンジニア 高田 洋祐氏

AMPの特徴

※会場アンケート:APMを自社で導入⇒1/4ぐらい

AMPの導入状況

3つのコアとなる早くなる要素

  • AMP HTML…独自記法
  • AMP Component…豊富なコンポーネント
    • AMPはJSが使えない
    • AMP Example
    • <amp-list> <amp-bind> <amp-google-vrview-image> など
  • カスタマイズ機能と柔軟性

AMPを使えばGoogleが持っているサーバにキャッシュしてくれる

クックビズのAMPへの取り組み

  • LPのAMP版を作成してコンテストで優勝
    • 通常のサイトと全く同じ
    • ページ表示:60%
    • CVR:40%

釣り目的のAMPページを駆逐

  • ページの冒頭だけAMPで 続きを見る で通常サイト
    • 2018年2月からはAMPページとして扱われない

ascii.jp

フロントエンドエンジニアは忙しい

  • 1999年⇒HTMLとCSSで完成
  • 2017年⇒Babelでトランスパイル、Webpack、ジェネレータなどなど
  • 2017年のAPM⇒HTML,CSSで完成

PWA

  • PWAはマーケティング用語
  • ネットワークの遅い新興国で期待

  • フルスクリーンで起動

  • PWAはアプリとして起動
  • Webプッシュも実装

初回アクセスはAMP、2回目以降のアクセスはPWAという設計⇒PWAMP

このあたりは個人的に以前Qiitaにまとめた内容と同じ。

qiita.com

音声検索

※会場アンケート

  • 音声検索を使っている…少ない
  • スマートスピーカー…たくさん

音声検索

  • 2020年までに50%
  • 音声検索により検索のクエリ数は増える

強調スニペット

digitalidentity.co.jp

コンテンツの中身・意味を明確にする

  • 適切なタグを使用
  • きれいなアウトライン
  • 構造化

成長中のプロダクトでフロントエンド環境改善を進める話

スピーカー:freee株式会社 アプリケーションエンジニア 加藤 慧氏

speakerdeck.com

2015年ごろからのSprocketsまわりの改善について

qiita.com

Sprockets

課題

  • concat≠依存性の定義
    • requireディレクティブをつかったconcat⇒読み込む順番を人間の努力でカバーしないといけない
  • Gemライブラリのロード⇒Gem化されたものしか読み込めない

⇒Sprocektsディレクティブの排除

成果

  • Sprocketsディレクトリを部分的にCommonJSに書き換えてBabelでトランスパイル
  • Gemではなくnpmを利用
  • ESLint利用
  • flowによる型チェック導入

残る課題

  • Sprocketsディレクトリの糖衣構文としてのCommonJS導入にとどまり
  • gulpによるビルドタスクの複雑性

総括

  • 課題は解決できたが新たに課題が生じた
  • ツールは刷新できたが依存管理アーキテクチャのリファクタが伴わなかった

革命の火ふたたび

  • Sprocketsやめてwebpackに⇒変更が膨大すぎて失敗
  • 暴力革命から平和革命へ
    • レビュー可能な変更
    • 小さなコンテキストで大きな横断的変更を作る
    • 物量が多いのは避けられない

正しそうな変更

  • 静的解析を仕掛ける
  • 機械的・法則的に変更
  • 人為ミスが入らないようにする

再現可能な変更

  • そうこうしている間にもプロダクトは成長を続ける
  • conflictする前提でもう一度すぐに変更を再現できるようにする

残る課題

  • Sprocketsのディレクティブだけ残る

GemのCommonJS化

  • 枯れているライブラリなら自プロダクトに取り込んで改変する割り切りが可能

残る課題

  • gulpの複雑さ

ビルドタスク分解

  • CLIで充分
  • ESLint
  • Webpack
  • Sassも node-sassCLI

Webpacker

  • Sprocketsディレクティブのようなロックインリスクが少ない
  • フロントエンドとサーバの歩み寄りのラインが重要

次なる課題

  • 継続的な防御
    • 未使用モジュールの検知…webpack-unused
    • 未到達コード検知…EsLint no-unreachableルール
    • 静的解析をCI連携
  • 参照アプリケーション・アーキテクチャ定義
    • 解釈の自由度が高いFluxアーキテクチャ
    • ベストプラクティスに寄り添う
    • Redux
      • Flux Standard Action
    • 窮屈感?
      • 10日に1回のHack dayで技術課題に打ち込む