ES(ECMAScript)の基礎を学ぶハンズオンに参加してきました
はじめに
JavaScript Buildersさん主催の「【初心者向け】JavaScriptの次のステップ、ES(ECMAScript)の基礎を学ぶハンズオン」にブログ枠で参加してきました。
今回参加した動機は VueやReactを学ぶ前にESをちゃんと抑えておきたかったから です。
普段の業務としてはPython/DjangoでAPIの実装がメインでたまにインフラ構築といった感じで、JSはもちろんESとはあまり縁がありません。
しかし、将来的にはバックエンド、インフラ、フロントエンドをカバーできるようなエンジニアになりたいので今回の参加に至りました。
今回のイベントでは、JavaScriptをProgateや独学で学んだけど、その先のECMAScriptがわからない。 React.js or Vue.js を触り始めたけど、実はECMAScriptがわからない。 そんな方が基礎を学べる機会になる為のハンズオンを行います。
まさにぴったりの勉強会ですね!
感想
本日のハンズオンのゴール!
— ミミ@ROLO広報担当 (@rolotokyo) 2018年11月26日
・明日からドヤ顔でESの歴史を語れるようになる事
・ESの基礎がわかるようになる事#js_builders
今回の勉強会のゴールが設定されていたのでそれに沿って振り返りたいと思います。
明日からドヤ顔でESの歴史を語れるようになる事
まず、ECMAScriptを一言で説明すると、
JavaScript と JScript の仕様差異を一般化するためにECMA Internationalという機関が JavaScriptを標準仕様化したものが ECMAScriptです。
( -`ω-)どや!
講師の村瀬さんが言語の成り立ちから今までバージョン遷移まで詳しく教えてくださりました。
ESは毎年6月にメジャーアップデートがあるかなり開発がさかんな言語みたいで、バージョンごとの豆知識も教えていただきました。
- ES6:主流なバージョン
- ES7:主要な2機能がリリースされたが、どっちも使わなくていいらしい
- ES2017:Async Awaitを使うためにバージョンアップする場合もあるんだとか
- ES2018:最近リリースされたばかりなので実績が少なく使用者は少ない
とりあえずES6を抑えておくのが基本らしいです。
この記事もわかりやすかったです。
JavaScriptを始めるならまずは読んでおくべきサイトらしいです。
ECMAScriptについてはこちら。
ESの基礎がわかるようになる事
ESの基礎を理解するためにJSのハンズオンでJSの基礎を理解してからESのハンズオンでESを理解するという流れでした。
JSはここが使いづらかったからESではこう改善された のようにストーリー仕立てで覚えることができてかなり理解が捗りました。
普段Pythonを書いている身としては、JSの基本仕様にはかなり驚かされることが多かったです。 class構文がなかったりconstがなかったりモジュールのインポートができなかったり...
ここらへんがESのアップデートでプログラミング言語としての基本仕様を満たしてきたんだなと感じました。 また、ESの構文はかなり書き方に柔軟性があるなと思ったのと、ワイルドカードインポートが認められているのが少し驚きましたね。
為藤さんのハンズオンの説明やサンプルがすごくわかりやすかったので、ESはほとんど触ったことありませんでしたがその場で理解できました。
ハンズオンのソースコードは JavaScript BuildersさんのSlackチャンネルで公開されているので気になる方はコンパスのページからとんで確認してみてください。
あと、ハンズオンはPlayCodeを使ってやったのですがすごい便利でした。
おわりに
2時間半とは思えないほど凝縮された内容で、これが無料で受けられたので運営の方々には感謝しかありません。
会場提供してくださったナンバーナインさんにも感謝です!
次のステップとしてReactかVueを頑張っていきたいです。
ちなみに次回の勉強会にもブログ枠として参加予定なのでお願いしますー!
Developers.IO 2018に参加してきました
Developers.IO 2018とは
Developers.IOは、クラスメソッド株式会社が主催するイベントです。 Developers.IO 2018のテーマは「AWS」でした。
- 立ち見が発生してしまったこと
- カンファレンス用のWifiがなかったこと
- 懇親会の食べ物がすぐになくなってしまったこと
は少し残念でしたが、AWSといえばクラスメソッドさん、クラスメソッドさんといえばAWSということもあり、どのセッションもとても勉強させていただきました。
印象に残ったセッション
セッションの概要と感想をまとめました。
次世代モバイル向けクラウドサービスAWS AppSyncを使って店舗スタッフと顧客の体験を最大化する方法
RESTの次のパラダイムとして注目されているGraphQLをベースとしたAWSマネージドサービスAppSyncの紹介と、AppSyncを自社サービスのチャット機能に採用したという話でした。
AppSyncを利用したスキーマファースト開発でスマホアプリの開発効率が向上したとのこと。
特に印象に残ったのはAppSyncを利用したモバイルエンジニアの感想で、
- GraphQLの前提知識が必要だが、手軽に利用できたのが良かった
- リクエストが1つで済むので、多くの場合で実装がシンプルになる
- クライアントが自動生成されるので、アプリの実装は少なくて済む
- アプリ側で必要なプロパティだけを指定して取得できるので効率的
- 特にクロスプラットフォームでUIが異なる場合などに適している
といったことが列挙されていました。
PyCon JP 2018でもAppSyncを紹介するトークがありましたが、スマホアプリ開発に携わっている身としていち早く試してみたいサービスです。
気になる点としては、サポートされているSDKがiOS、Android、JavaScriptである点と(Pythonない)、
Q . AWS AppSyncではどのようなアプリケーション開発言語がサポートされていますか?
A . AWS AppSync SDK では iOS、Android、JavaScript がサポートされています。JavaScript のサポート範囲には、React や Angular などのウェブフレームワーク、および React Native や Ionic といったテクノロジーが含まれます。また、AppSync GraphQL エンドポイントへの接続にオープンソースクライアントを使用して、一般的な HTTP ライブラリやシンプルな CURL コマンドなど、その他のプラットフォームも利用できます。
https://aws.amazon.com/jp/appsync/product-details/
AuroraなどのRDBMSを利用する場合、Lambdaを利用する必要があり、
- 最大処理時間5分問題
- 複数回起動問題
- コールドスタート問題
などのLambdaの制約が付きまとう点です。
Q . AWS AppSync で複雑なクエリを実行するにはどうすればよいですか?
A . AWS AppSync で利用できるデータソースでは、GraphQL を使用することで、Amazon DynamoDB、Amazon Elasticsearch Service、AWS Lambda によって提供される機能を最大限活用できます。インデックス作成や条件チェックといった機能とマッピングテンプレートによって、DynamoDB から包括的な結果が返されます。あいまい検索、位置情報検索などの Amazon Elasticsearch Service のユースケースもアプリケーションで利用できます。さらに、Lambda を使用した連続的なリクエストやバッチリクエストによって、Amazon Aurora などの他のソースからもデータを返すことができます。
https://aws.amazon.com/jp/appsync/product-details/
クラスメソッドさんがチャット機能で利用したように適切なユースケースで利用すると効果を発揮しそうです。
5つのユースケースから理解するAWSのデータベースサービスの勘所
データベースサービスの使い分け
ユースケース | データベースサービス |
---|---|
一般Webシステム | Aurora, ElastiCache |
サーバーレス | DynamoDB |
データ分析 | Redshift, Athena, Aurora Parallel Query |
IoT | IoT Analytics, Redshift, Athena |
レコメンデーション | Neptune |
Aurora - 複雑なクエリが必要な場合 - 同時多数アクセスがありうる場合(コネクションプールを活用する)
ElastiCache - 高速に読み書きが求められる場合
DynamoDB - 複雑なクエリが必要な場合 - 同時接続数が安定しており初回起動時間が長くても問題がない場合
Redshift データ分析で大容量データ(TB〜PB)を扱う必要があり、明確に分析対象が決まっている場合(PostgreSQL互換インターフェースをもつ)
Athena データ分析で大容量データ(TB〜PB)を扱う必要があり、明確に分析対象が決まっていない場合(Prestoを使用してS3ファイルへ並列にアクセスする)
IoT Analytics 多数のデバイスからの接続があり、デバイスのデータを継続的に登録する必要がある場合
Neptune 既存の行動データを元に推奨するアイテムを抽出したい場合
様々なユースケースでデータベースサービスを適切に使い分けるということを学んだセッションでした。
多くの場合はRDBMSで要件を満たすことができるかもしれないが、使い慣れたデータベースを選択するのはアンチパターンであり、RDBMSでは最適ではないかもしれないことを念頭に置くことが大切ということ学びました。
聞いたセッション
コンテナジャーニー〜AWSにおける段階式コンテナ運用〜
- CI/CDの構築にCodePipline, CodeCommit, CodeBuildを使っている以外はほとんど同じ構成で自信にさせていただきました。
基礎から応用までじっくり学ぶ「AWSでのネットワークの作り方」
- ランチセッションだったのであまりメモれませんでしたが、ネットワークに疎い自分でもわかりやすい内容でした。
クラスメソッドにおけるWebAPIエンジニアリングの基本的な考え方と標準定義
- 会社として標準定義があるのはさすがクラスメソッドさんという印象で、RESTをファイルシステムメタファと捉えるのは新鮮でした。
- RESTは一定の原則こそあれどかなり自由度が高く、定義するのはかなり大変だと思うので、RESTフレームワークにのっかちゃうという選択肢もアリかなと感じました。
AWSのセキュリティ設定がどうなっているか抜け漏れなくちゃんと確認する方法
- insightwatchというクラスメソッド提供の無料セキュリティチェックサービスの紹介でした。
ご利用中のAWSアカウントを無料でチェックし、セキュリティのガイドラインに沿った運用なのか、数分で確認いただけます
ということでどこまで無料でできるかわかりませんが、便利そうです。
DevOps:変化の激しい環境でビジネス競争力を向上させる具体的な方法
- コント調の発表がユニークでとても面白かったです。
- バリューストリームマッピングワークショップ参加してみたいです。
今からでも遅くない 基礎から学ぶサーバーレス開発 -キホンの『キ』-
Tech Trend Tokyo #7に参加してきました
はじめに
Tech Trend Tokyo #7にメディア・ブログ枠で参加してきました。テーマは「【Pythonで機械学習】機械学習と言語処理を活用してみる」でした。
感想
PyConJP 2018で「テキストマイニングによるTwitter個人アカウントの性格推定」というタイトルでLTをしてきましたが、そこでランダムフォレストを使ったので知っている内容が多くあり良い復習になりました!
GridSearchCVは知らなかったので勉強になりました!活用していきたいです。
早速アウトプットとして、今回のボストンデータセットの練習問題をGitHubにあげました。
私はpyenvやanacondaはトラブルが多くて好きじゃないのでPipenvを用いた環境構築をしています。
利用される方はPython3.7とPipenvをインストールしてください。
中島さんのリポジトリはこちらです。
ネットワーキングも素敵な方とお話できましたし、ピザも美味しかったです。ごちそうさまです。ありがとうございました。
今回お話できなかった方もぜひつながりましょう〜!
フォローお待ちしております。
主催の株式会社GIGのスキルシェアサービス Workship、
講師の中島さんがCTOを務めるIGS株式会社のSPI、ESに続く第3の新卒採用ツール Grow360 も面白そうなサービスなので要チェックですね。
以下メモ書きです。(メモしきれなかった部分もあります。すみません。)
メモ書き
自己紹介
中島正成さん(IGS株式会社 執行役員CTO)
2011年、株式会社メタップスの取締役CTOとして立ち上げに参画。機械学習とデータサイエンスのプロダクトインプリメントに取り組む。
その後、エン・ジャパン株式会社経営戦略室、個人事業での技術アドバイザー、経営アドバイザーを経て、IGS株式会社に執行役員CTOとしてジョイン。HR領域、人材評価領域のA.I活用プロダクト開発と、教育領域へのA.I活用プロダクト開発に取り組む。
AIといいたくないけどAIの話 part4
- 第六回ある
- 今回はスコア予測の実践
回帰と判別
- 回帰モデル
- 単回帰モデル
- 重回帰モデル
- 判別(分類)モデル
教師なし学習
- 出力すべきものがあらかじめ決まっていないという点が教師あり学習と異なる。
- データの背後に存在する本質的な構造を抽出するために用いられる。
教師あり学習
- 事前に与えられたデータをいわば例題とみなしてガイドラインにのっとり学習させる。
教師あり学習
- 回帰
- 線形回帰
- ロジスティック回帰
- SVM *
- ツリー
- 決定木
- 回帰木
- ランダムフォレスト *
- 勾配ブースティング
- ニューラルネットワーク
- CNN
- RNN
- パーセプトロン *
教師なし学習
練習問題
ランダムフォレストとは
ボストンデータセットとは
精度を向上するためにはどうすれば良いか
- ハイパーパラメータチューニング
- データクリーニング
ランダムフォレストのハイパーパラメータ
ハイパーパラメータ | 説明 |
---|---|
n_estimators | バギングに用いる決定木の個数 |
max_features | 最適な分割をするために考慮するフィーチャーの数 |
max_depth | 決定木の深さの最大値、過学習対策にこの値の調整が有効 |
min_samples_split | ノードを分割するために必要な最少サンプルサイズ |
min_samples_leaf | 葉を構成するのに必要な最小限のサンプルの数 |
max_leaf_nodes | 生成される決定木における最大の葉の数 |
n_jobs | フィットおよび予測の際に用いるスレッド数 |
random_state | 乱数シード |
warm_start | Trueを設定するとすでにフィットしたモデルに学習を追加 |
自動でいい感じのチューニング
- sklearnのGridSearchCVを使う
from sklearn.model_selection import GridSearchCV params = {'n_estimators': [3, 10, 100, 1000, 10000], 'n_jobs': [-1]} cv = GridSearchCV( RandomForestRegressor(), params, cv=10, scoring='mean_squared_error', n_jobs=-1, verbose=True ) warnings.filterwarnings('ignore') cv.fit(train_data_bs, train_labels_bs)
※ 注意
- GridSearchCVを利用する場合は、scikit-learn以外にnumpy, scipyが必要。
from sklearn.grid_search import GridSearchCV
だとno module named 'sklearn.grid_search'
となってしまうため、from sklearn.model_selection import GridSearchCV
とする。