2018年2月2日 LT 大会まとめ

こんにちは。お久しぶりの和田です。

Steam の旧正月セールのおかげで積みゲーが増えています。Valve にも困ったものです。

さて今回ですが、弊社は毎月月初に月例ミーティングを行っており、その際に行っているLT大会の内容を簡単にまとめたものとなります。月例の日にある程度確保される自由時間を使い、それぞれが業務で使用した話をまとめたり、気になっている技術の概要を調べたりして発表する場になっています。

LT大会はすべての人が発表するわけではなく任意参加になっており、今回もすべての人が発表したわけではありませんが、毎回多くの方が発表を行っています。

それでは早速見ていきましょう。

Ethereumについて

トップバッターの増島さんは仮想通貨で有名な ETH で使われている、Ethereum についてのLTでした。仮想通貨としての Ethereum から話を始め、技術としての Ethereum へと話が発展していきました。

その中で、 Dapps と呼ばれる「非中央集権・分散」のアプリケーションや、 Dapps の実装としての AugurCryptoKitties の紹介もありました。また、 Ethereum を使ったICOの話や独自通貨を作る話は興味深いものがありました。

興味がある技術2点

簡さんは「自分の興味のある技術」として、3Dレーザーと3Dカメラを紹介するLTを行いました。

3Dレーザーは、実はすでに日常で使われているという話で、具体例として、掃除機、ドローン、3Dマッピングといったところで使用されているとのことでした。

3Dカメラは現在研究中の技術ということですが、実用化されているものとして iPhone X で使用されている FaceID や 米アマゾンが先日オープンした Amazon GO などがあるということでした。

これらの技術が一般化されたらサイエンス・フィクションの世界が現実のものとなるかも知れないという話をされており、とてもワクワクしました。

ウェブページスピードアップ施策

池内さんは、実業務内で行ったレガシーコードの高速化について紹介されました。具体的には大きく分けて以下の3点を行ったとのことです。

  1. SQL の最適化
  2. JavaScript 改善
  3. 画像の最適化

SQL 最適化

SQL の最適化は、サブクエリや select での * を多用したSQLクエリだったためクエリキャッシュが効かない、インデックスが動かないなどの問題があったとのことでした。それらを解消するため、サブクエリを無くし単純な Join ができる箇所は変更し、極力 * を使用しないように変更したところ高速化されたとのことです。

また、 for のループを回している箇所でSQLを発行するというソースが存在していたため、for ループから切り出し、 in を使用した select 文に変更するということも行った結果、かなりSQLの高速化ができたそうです。

JavaScript 改善

JavaScriptの改善は、HTML5から script タグに追加された async 属性や、 defer 属性を使い、スクリプトの読み込みを最適化しレンダリング速度を改善した他、インラインスクリプトの外部ファイル化を行い高速化を行ったとのことでした。

画像の最適化

画像の最適化は、 jpegoptim を使用して画像ファイルサイズの削減を行ったとのことです。画像最適化ツールは jpegoptim の他、 jpegtranmozjpeg などのツールを検討したとのことですが、今回は jpegoptim の圧縮率、画像劣化が少なかったとのことでした。

プログラマの数学

高柳さんは、書籍「Java言語で学ぶデザインパターン入門」で有名な結城浩氏の著書の1つ「プログラマの数学」を紹介されていました。これは、初版が絶版になってしまっていた書籍で、薦めようにもものがない、という状況が続いていたとのことです。ですが今年に入ってから復刊したとのことで、あゆたの推薦図書に指定してほしいといった話もされていました。書中に数式はほぼ出てこないため、数学が苦手な方にも読みやすいとのことです。

また同著者で、数学好きにおすすめとして紹介されていたのが、「数学ガール」でした。これは萌の皮をかぶった骨太な数学本とのことで、私にはとても読めなさそうです(笑)

そんな方におすすめというのが「数学ガールの秘密ノート」という本だそうです。こちらは中学・高校レベルの数学の知識をわかりやすく解説してくれている本とのことでした。これなら私でも読めそう……?

OAuth 2.0

これは私、和田のLTです。

OAuth はTwitter や Facebook などいろいろなところで使用しているのですが、「そう言えばちゃんと承認の流れを意識したことがないな」と思ったので調べました。

発表した内容としては OAuth 1.0 が使われていない理由と OAuth 2.0 の認可の流れです。

ウェブサービスとアプリとで認可の流れが微妙に異なるのですが、雑に言えば以下の流れのようです。

  1. クライアントが認可をアプリに求める
  2. アプリがクライアントに認可サーバーにログインするよう促す
  3. ログイン後、認可情報をアプリに渡す
  4. アプリがクライアントに認可情報を渡す
  5. 色々できる

参考サイト:How is OAuth 2 different from OAuth 1? / 今更聞けないOAuth2.0

Android で使えるアルファマスク

ミハイルさんは Android のアルファマスクの紹介をされていました。

これは Android SDK の機能で行える画像処理で、画像1と画像2をブレンドして、画像1のテクスチャを画像2の上に描画する処理の紹介と実際にそれを行った画像の紹介を行いました。

Android の画像処理の一歩として、面白い題材だと思いました。

Salesforceとforce.com

新屋さんは、あゆたが力を入れている Salesforce についての技術紹介をされました。簡単な Salesforce の紹介後、試用環境で行える force.com を使ったアプリの開発の流れを紹介されていました。

具体的には「テーブル定義」、「独自画面の定義」、「ビジネスロジックの作成」と言った大きな流れを、デモを交えつつの紹介でした。

Salesforce に詳しくない社員にもわかりやすい紹介だったと思います。

SendGridを使ってみた

毛利さんは、実業務で使用された「SendGrid」について紹介されました。SendGrid の紹介後、使用目的と簡単な使い方、詰まったところが発表内容でした。

まず、大まかな使用目的は以下の通りです。

  • セキュリティ強化
  • 誤送信防止
  • 自前サーバーから一斉送信を行うとスパム判定されてしまう
  • Google App Engine でのメール一斉配信について、Googleの人に相談したところ SendGrid の使用をオススメされた

最後の項目は、今回の使用環境が Google App Engine (GAE) ということでの使用目的となります。ただそれ以外の3点はおそらくいろいろな環境に合致することだと思います。

SendGrid の使い方としてはウェブドキュメントが用意されており、大きく困ったことはなかったとのことです。ただ、GAE で使用する際に提示されているサンプルコードが古いため、そこで少し詰まってしまったとのことでした。

VR・AR・AI的なコンテンツ

久田さんが発表したLTは、2018年にトレンドとなるであろうVR/AR/AIを使ったコンテンツや、製品の紹介でした。

VRは、メジャーなヘッドマウントディスプレイである「Oculus Rift」や、「HTC Vive」、PlayStation 4で話題になった「PlayStation VR」などの紹介を行われました。

ARは、現在実際に使われているアプリやサービスの紹介でした。

ミク☆さんぽ」というKDDIが開発、実施したイベントは、ARアプリを通して見るとボーカロイドの初音ミクとデートしているように見えるというものでした。また、NTT Docomoが開発している「料理メニュー翻訳AR」というアプリは、外国語で書かれたメニューが翻訳され、イメージ写真や関連情報を表示するというものです。

AIに目を移すと、現在盛んに販売が行われている「スマートスピーカー」が身近なところで活躍しているAIです。

各社が発売しているスマートスピーカーは、声をトリガーにアクションを起こす、という今までにないUI/UXなため、今後のさらなる改良に期待したいです。

anyenv

最後の発表となった櫻井さんは *env 、いわゆる Anyenv というものの発表でした。これは、使用している人も多いであろう rbenv や、 pyenvphpenv などの *env 系を一元管理できるものです。

ただ、一元管理とは言ってもこれをインストールすれば万事OKということではなく、各envをインストールする必要があるということです。ただ各envのパスの設定などをそれぞれで行わなくてもいい、というメリットがあるそうです。

私、和田もよく仮想環境で rbenvphpenv を使用しているため、今後は Anyenv を使用してみようかなと思いました。


以上、10名の発表でした。

もし何かの参考になったのであれば幸いです。