PyCon JP 2018カンファレンスレポート

[2日目]プログラミングの愉しみ,“トイル”との戦い~Python 2→3移行の実際,先端事例紹介のLTからクロージングへ

この記事を読むのに必要な時間:およそ 5 分

REST APIに疲れたあなたへ贈るGraphQL入門

(花井宏行)

昨今「GraphQL vs REST」という形で紹介され,Rest APIの次のパラダイムとして注目されている GraphQL 。その特徴と用途,GraphQL やそれを簡単に使うための AWS AppSync の使い方をTsukagoshi Keisuke氏にご紹介いただきました。

詳細はレポートの末尾に資料と動画へのリンクを載せているのでそちらをご確認ください。

満席のセッション

満席のセッション

セッションはGraphQL自体のおさらいから始まりました。GraphQLとは,APIのためのクエリ言語であり,型システムを使って実行するためのサーバー側のランタイムの総称で,⁠取得(クエリ⁠⁠,⁠変更(ミューテーション⁠⁠,⁠購読(サブスクリプション⁠⁠」ができるデータ言語です。

REST APIで課題となる,API仕様の管理や,オーバーフェッチ(余計なデータが取得される⁠⁠,アンダーフェッチ(1回の問い合わせで十分なデータが揃わず,複数回問い合わせる必要がある)と言われる,1回のオペレーションに複数のAPIのレスポンスが必要になってしまう問題を解決できます。

特徴としては以下の3点が挙げられました。

「型指定されたスキーマ」により,APIの定義をするだけでドキュメントの自動生成やクエリの実行環境がGraphQLサーバーによって提供されます。

「クライアントからのレスポンス形式の指定」ができるので,オーバーフェッチ,アンダーフェッチを回避できます。クライアントは必要なデータを指定することができるので,REST APIよりもクリーンなインターフェースを提供できます。

「購読を利用したリアルタイム処理」を実現できます。チャットアプリのようなリアルタイム性が必要な場合,購読するエンドポイントを指定することで,ポーリングせず簡単にデータをやり取りできます。

Tsukagoshi Keisuke氏が好きなサービスでもあるという,簡単にGraphQLを使い始めることができる「AWS AppSync」について解説とデモがありました。GraphQLサーバーを0から構築することも,用途に合わせて雛形を使って簡単に使い始めることもできるそうです。またGithubでクライアントアプリも提供されているので,クライアントとの動作確認も簡単にできます。クエリの実行環境も提供されており,コードの補完も効くのおで,ストレスなく開発を進めることができるとのことでした。

データ保存先にはDynamoDB,Erasticsearch,AWS Lambdaが選択でき,AWS Lambdaを指定すれば,業務要件に合わせて柔軟にカスタマイズも可能とのことです。

AWS IAMまたはOpenID Connectに準拠した認証機能も提供していおり,認証が必要ない場合にも対応可能だそうです。

いかがでしたでしょうか。GraphQL使ったことがない,難しそうと思っている方にとっては,AWS AppSyncで動かしてみるのがよさそうですね。

ここでは紹介しきれなかった内容がたくさんありますので,以下からぜひご確認ください。

Pythonによる異常検知入門

(花井宏行)

統計的手法から,機械学習やDeep Learningを用いた様々な異常検知アルゴリズムの概要と,Pythonでの利用方法,実際のアプリケーションに組み込む場合の注意点などをご紹介いただきました。

詳細はレポートの末尾に動画へのリンクを載せているのでそちらをご確認ください。

大山匠氏

大山匠氏

異常を検知する前提として,⁠異常」である状態を定義する必要があります。外れ値やベースラインの変化などは,外的要因(隣の機械の振動,担当者の変更による動かす癖の変化,機械の仕様など)による場合もあります。データだけ見ていても,本当に異常なのか判断できない場合があるというのが,難しいところだそうです。

異常検知のアルゴリズムについての紹介がありました。異常は頻繁に起こるものではないので,今回は「教師なし学習」で異常を検知していきます。⁠教師なし学習」で正常な状態を学習させることで,新たに来たデータの外れ具合から異常であることを検知するという手法を用いるそうです。以下の手法のメリット,デメリットを,Pythonでの実装方法ともに紹介いただきました。

  • 外れ値検知:ホテリング法,近傍法,LOF(Local Outlier Factor⁠⁠,One-Class SVM
  • 変化点検知:複数予測モデルのあてはめ(予測モデルからの誤差を計算⁠⁠,累積和法,Change Finder(外れ値検知を多層的に利用)
  • 異常部位検知:近傍法(ウィンドウ処理によって外れ値検知の問題として解く)
  • ニューラルネットワークを使った異常検知:Autoencoder

最後に,実際の現場で活用するにあたっての注意点をご紹介いただきました。以下3点がポイントになるそうです。

  • 「データの状態」による値の傾向の変化に注意する。電源Offやアイドリング状態が異常として検知されないようにしないといけない。状態の定義は現場の人にヒアリングしながら決める必要があるとのことです。
  • 季節性,トレンドなどを除外する,検知アルゴリズムに合わせて分布を変換する(例:Box-Cox変換)など「データのクレンジング」が必要。
  • 異常と判定したが,実際はどうだったのかという「判定結果へのフィードバック」を受けて,モデルに反映する仕組みが必要。

いかがでしたでしょうか。工場機械での異常検知のお話でしたが,Webシステム等でも応用できる考え方だと思います。

ここでは紹介しきれなかった詳細は,以下からぜひご確認ください。

著者プロフィール

陶山嶺(すやまれい)

事務局チームで主にメディアスポンサーを担当。PyCon JPにはPyCon JP 2015で初めて一般参加。Python自体に貢献しようとPyCon JP 2016からはスタッフとして参加している。

渋谷のSENSY株式会社に勤務し,広島の尾道でリモートワークを実践中。前職ではiOS/Androidアプリ開発,現職ではPythonとGCPでのサーバーサイド開発をメインとしている。

学生時代から一番好きな言語はずっとPythonで,GCPUG岡山の運営にも携わっている。

『WEB+DB PRESS Vol.104』で特集「イマドキPython入門」を執筆(共著)。

Twitter: @rhoboro


大堀優(おおほりゆう)

事務局チームでメディアスポンサーを担当。

現在は,新日鉄住金ソリューションズ株式会社で異常検知をはじめとした機械学習及びデータマイニングの研究開発に従事している。

Twitter: @Y_oHr_N


二宮健(にのみやたけし)

PyCon JP 2018で,メディアスポンサーやジョブフェアを担当。

株式会社LIFULLのAI・データ分析チームで,PythonやRubyを使って開発しているソフトウェアエンジニア。最近読んで面白かった本は『エンジニアの知的生産術 ──効率的に学び,整理し,アウトプットする』


花井宏行(はないひろゆき)

事務局チームで主にメディアスポンサーを担当。スタディプラス株式会社所属。PyCon JPにはPython未経験のままスタッフに参加。スタッフ参加がきっかけでPythonに興味を持ち,日々勉強中。

現職ではRuby on Railsでサーバーサイド開発をメインとしている。学生時代の縁で舞台監督や舞台運営のスタッフとしても活動している。

Twitter: @hanahiro_aze

バックナンバー

PyCon JP 2018カンファレンスレポート