【勉強会メモ】関西Node学園 3時限目
- 日時:2018/08/03 (金) 19:00 〜 21:30
- 場所:LINE KYOTOオフィス
今回も多種多様なテーマでどの発表もためになる内容でした。個人的にはpuppeteer、Serverless Frameworkあたりは気になってはいたものの手が出せていない領域だったので、具体的な活用方法が聞けたのはとても良かったです。
LINEの京都オフィスに初めて行ってきましたが、地下組織のアジトみたいなかっこいい雰囲気でした。
node-canvasでアニメーションGifをつくって遊ぶぞ!
kawasako3 さん
www.slideshare.net
- ガチャ演出みたいのがあるといい
- トークに時間軸のあるコンテンツをカジュアルに送りたい
ライブラリ
アニメーションを作る基本
- 最初に目標値を決める
- どのくらいの長さにするか決める
- フレーム毎に描画する
- 変化に緩急をつける
LINE Messaging API で動かす
⇒GifアニメーションがBOTから送れない
⇒mp4で作る
学び
- Photo movie 的なこともできそう
- ただし事前生成じゃないと厳しいかも
- Messaging APIではGifアニメは使えない
サンプル
N-APIとPromise
C++ Addons
C++連携
- 速度がほしい
- jsではできないOSの機能を呼び出したい
- 全てをjsで書きたい
実際に書いてみると全然わからん
- V8理解していないとよくわからない概念が多い
- V8に依存している
- v8バージョンアップのたびにビルドが必要
N-APIの登場
- わかりやすい
- 型がシンプル
- V8に依存しない
- 他のjsエンジンでも動く
- V8バージョンアップの旅にビルドしなくてもいい
- 10.0.0からstableになった
サンプル
N-API と Promise
何がしたいか
- 諸事情でLZW圧縮の亜種をnodeで扱う
- jsで組んでみるも遅い
- child_processも遅い
⇒N-APIで組んでみたが問題発生
基本的に同期的
- イベントループの中で実行
- 重い処理はイベントループを止める
async_work
を使って非同期にする
- ExecuteCallback
- 非同期で実行
- イベントループの外で実行
- ここで重い処理
- イベントループの外なので
napi_hoge()
関数を呼ぶと落ちる
- CompleteCallback
- Excuteが終わるとイベントループのキューで実行
- イベントループの中で実行
- jsにcallbackしたり戻り値を作る
非同期にするうえでの注意点
- C++上で変数のポインタを持っていてもjsの参照カウンタは増えません
- 自分で参照カウンタを増やしておく
N-APIのPromiseはそんなに難しくないので割愛
参考
LINEで馬券を購入する
@sbntaminif さん
馬券ネット購入サービス
※参考
LINEで馬券を買ってみたい
- 馬券を購入するアプリを作りたい
※日本語はところどころ間違いがあるので英語のほうがおすすめ
Headless Chromeとは
puppeteer
Chromeを自動で動かして馬券購入まで
しかしこのMacでしか使えない⇒このAPIをサーバで動かせるようにしたい
Lambdaで実行
AWS管理コンソールからしか使えない⇒API Gatewayから呼び出す
- タイムアウトが2分⇒メモリの制限?うまく動かない
- LambdaからLambdaをコール
どこからでもAPIを呼び出せる⇒ネットワーク経由ならAPIで馬券を購入可能
LINEでAPIを呼び出す⇒LINE Messaging APIを使う
⇒買えるようになったが送信のみ
応答メッセージ機能
- メッセージを送ったら1回だけ返却
- パラメータの中のユーザーIDを使う
- 自由にユーザーに送信するPush APIは有料
実践編
puppeteerでつまづいたこと
- 範囲外の要素クリック
- 画面外の要素のクリックが発火しない
- 画面を大きくする
waitの使い分け
- waitFor
- 指定した時間まで待つ
- waitForNavigation
- 引数なし
- waifForSelector
- セレクタで指定した要素の表示を待つ
アピール編
Hedless Chromeの魅力
Warning
- 常識的にやりすぎない範囲で
動画で強く話されていること
- この話はテスト自動化の話ではありません
- 自動化することができる
- 普段の作業を自動化する
これこそエンジニアリング⇒自動化やっていこう
AWS Serverless Express 入門
AWS Lambdaを使ってExpressを一瞬で公開する方法
@nkgrnkgr さん
テーマ:AWS Serverless Express
そもそもServerlessとは?
Serverless Platform
AWS Lambda
- pros
- cons
- 初回起動にやや時間がかかる
- デプロイできるファイルサイズが50MB
- 1リクエストあたりの最大実行時間が300秒
AWS Serverless Express
- LambdaとAPI Gatewayの上にExpressを使用してサーバレスアプリケーションとREST APIを実行できるAWS公式ライブラリ
- Express のMiddlewareに追加するだけでLambdaで実行可能になる
How to Use
npm install
するだけawsServerlessExpress.proxy
をかます
LambdaへのデプロイはServerless Frameworkを利用
npm install
でインストール- serverless.ymlで設定
参考
ライブコーディング(省略)