LINE Fukuoka & ヤフー福岡 Developer Meetup #1 参加録
イベント情報
- LINE Fukuoka & ヤフー福岡 Developer Meetup #1 - connpass https://yahoo-fukuoka.connpass.com/event/205931/
他の人が書いたブログ
- 「LINE Fukuoka & ヤフー福岡 Developer Meetup #1」に参加してきた - 天の月 https://aki-m.hatenadiary.com/entry/2021/03/30/202855
品質と向き合うための第一歩 Yahoo
資料: https://www.slideshare.net/techblogyahoo/line-245366331
3行まとめ
- 「ドキュメント不足」「業務知識不足」「コードが難しい」の3点仕様のキャッチアップがしづらい
- SonarQubeを使って可視化をしている。SonarQubeでは次の4項目がある
- 循環的複雑度
- 認知複雑度 → ここを改善している
- コードの匂い
- その他
- 「学びの機会を作る」「点検をする」「(最小限の)改善をする」ことから意識改革をして、品質を考える文化醸成を目指す。
PR-Driven E2E Testを用いた開発者体験向上の取り組み事例 LINE
4行まとめ
- LINEでは「QAチームのQA」と「開発チームの中でのQA(SET)」という役割がある。
- シナリオテストなど必要最低限守りたい部分はE2Eテストをしている。
- 今までは、stg/prodに対してE2Eテストをしていたため、リリース後にバグが見つかり開発者が次の作業に入っている場合に、前の作業に戻りバグ対応が必要になった。(手戻りの発生)
- バグに早く気づけるようにPRを出したタイミングで、DB/serverを作成し、E2Eテストを走らせるようにし、より早くバグに気づけるようにした。
品質向上に対する二社のアプローチの違いを深掘り!
リリース判定会議
- Yahoo
- 参加者
- 事業の責任者
- 事業の責任者(PD)
- 確かめるもの
- テストケース
- 緊急事態が起きたときの対応
- 参加者
QAの定義について
- Yahoo
- 外部だったりテストしてくれる人
- LINE
- 一緒に設計したり、実装したり、いろんな方向性の人がいる
リリースについて
- 両者共通して大きなリリースは金曜日の夜は避ける
kaggleがちょっとみたくなる。 #Netflix Movies and TV Shows 編
これなに
kaggle 不慣れなWebエンジニアが Karnels を読んで、先人たちの知恵を読み取っていくシリーズ。 「こんなデータがあったよ!」っていうのをまとめていく。
興味を持って、「自分もデータ解析したい。」「こんなことも解析できるんだ」っていう気づきがえられれば良いかなと思っています。
呼んでいく方針
今回は Netflix Movies and TV Shows に挙げられている Kernelsを読んでいきます。
voteが10以上積まれているKernelsをみていきます。
Simple Matplotlib & Visualization Tips
グラフとか、データの表示方法を書いている。 色の使い方とか詳しく書いている。 多分どこかのkaggle tutorialみたいなサイトから飛んできているのが多いんだと思う。
Netflix Shows and Movies - Exploratory Analysis
ちゃんとデータ解析している。良いお手本。 - 国別の表示 - 地図へのoutput - シーズンもののシーズン表示とかすごい
参考になる。
Storytelling with Data - Netflix ver.
年号のグラフとか出している。 どこの国のビデオが多いかのグラフを出している。 USの作品が多いみたい。日本は6番目みたい。 同じデータをいろんなグラフで表示していて、面白い。
該当年ごとに世界地図でheatmapが変わっていくグラフがある。 すごいこういうの作ってみたい。
ジャンルごとの相関図出している!SFとアクションの相関が高い
NETFLIX Analysis
各年ごとの映画・テレビ番組の遷移グラフがある。 各国のNetflixの過去5年の人気割合を出している。 トルコはあまり、人気ではなさそう。 2016前後で年にすごい伸びている。何かイベントあったのかな。すごい気になる。 日本はちょっと前倒しで2015の10月くらいから人気が出ている様子
各国のコンテントの量と映画/テレビ番組の表が出ている オーストラリア2018年から2019年にかけて映画の割合が減っている...どうしたんだろ 台湾は圧倒的にテレビ番組の方が「人気なんだな」っていうのがわかるグラフ
最後は各国どのディレクターが多くの作品を出しているかを表示している。 そういう分析方法もあるのかと思うと非常に面白い。
Netflix Movies and Shows: Plotly & Recommender SYS
NLPを使って頻出ワードを表示させている。 カテゴリーとかワーディングによる解析が多い NETWORKXの相関図がすごい興味深い。 他の解析系よりも、言語・役者に寄り添った解析が多く他のKernelsとは違うものを感じた。
Cinema in the ERA of NetFlix
映画の情報にフォーカスを当てて解析をしている。 毎年どれくらいの映画がリリースされているかとか いくらくらいの売り上げが出ているとかがみれる
LINE Dev Day2018に参加してきました
はじめに
はじめましての方もいると思うので、LINE API Expertのしげるです。 LINE Dev Dayに参加してきました。 LINE API Expertが集まるセッションがあったので、他のセッションとも合わせて軽くお話ししたいと思います。
やって来た #LINEDevDay pic.twitter.com/MmTq8ndD0J
— しげる(とみん)@LINE API Expert (@a4geru) 2018年11月21日
参加したセッション
- 10:40-11:40 Key Note: "Next LINE" LINEが創る新たな世界
- 11:50-12:25 実演:LINE API新機能の総まとめ&新機能全部入りのchat botデモンストレーション
- 12:25-13:05 [Expert Only]CTO Round Table:API Expertの皆さんから直接質問を頂戴し、弊社CTOが答える
- CafeにてLTを見ていました。
- 15:00-15:35 フロントエンド開発によって進化するLINEの未来
- 15:50-16:25 Efficient And Invincible Big Data Platform In LINE
- 16:40-17:15 [Expert Only]Speakers(Nakajima,Jirawat,Takaku)を招いてSessionに関連する議論
- 18:40- 懇親会
参加した中で興味を持ったLT/セッションについてまとめます。 また、Expert Onlyのセッションについてもまとめます。
実演:LINE API新機能の総まとめ&新機能全部入りのchat botデモンストレーション
このセッションでは主に福岡市さんと協力で進めている粗大ゴミ回収botを例に挙げ、今までリリースしてきた。Messaging API, LINE Pay, Beacon, LIFFなどの話を振り返りました。
roomCでLine Pay APIの話が出ているので夏にLINEの勉強会で利用した資料をあげておきます。https://t.co/Jd9F6uWvND#linedevday
— しげる(とみん)@LINE API Expert (@a4geru) 2018年11月21日
自分の中でこのセッションの中で一番興味深かったのはLINEの人が考えるFlex MessageとTemplate Messageのボタンの考え方で、これからはPC/Mobileに対応しているFlex Messageを利用して行くべきだと言う話が面白かったです。
template message : mobileのみ
— しげる(とみん)@LINE API Expert (@a4geru) 2018年11月21日
flex message : PC/mpbile
flex messageはきれいだし、いろんな端末で開ける!!#LINEDevDay
フロントエンド開発によって進化するLINEの未来
自分がもう一つ衝撃を受けたのはLINEはハイブリットアプリで、一部はフロントサイドの開発チームが開発してるという話でした。 具体的にはスタンプを販売しているLINE Shop。LINE マンガなど普段利用している部分で、驚きを隠せませんでした。 ひょこっと見たLT(LINEサービスの管理画面でUIを標準化するには?)で管理画面のフロントサイドの内製の話を聞いていたのですが、実際私たちの使うUIの部分もフロントの技術が利用されているのは驚きでした。
しかも、利用している技術は bootstrap と Vue すごいみじかな物を使っている!!親近感!!という感じでした。
LINEってハイブリットアプリなのか!(初耳
— しげる(とみん)@LINE API Expert (@a4geru) 2018年11月21日
#linedevday
Expert Onlyのセッション
平日に開催されていることもあり、Expertセッションへの参加者は海外からの招待メンバーが多かったです。特に台湾・タイ・インドネシアからのメンバーが多く全体では20名弱のメンバーが揃いました。ExpertセッションはCTOのイビンさんへ質問するセッションと登壇者へ質問するセッションの2つでした。短い時間の中でしたが、それぞれのメンバーが考えてきた質問で色々なお話しが聞けたので得るものが多かったです。
イビンさんとのセッションでは、主に各国のAPIの公開状況・法的な縛り・開発状況などがわかりました。LINE先進国としての日本はCEK、ドキュメントの量、コミュニティの大きさなど非常に恵まれており、他の国のメンバーを応援したくなりました。
Speakersセッションでは、Beaconについての話。LIFFのデバッグについての話。2019年にリリースされるAndroid/iOSのSDKの話が挙がっていました。 LIFFのデバッグ方法については、スマホからでないとデバッグできないという問題が上がっていたのですが、「vConsoleというツールを使うとデバッグできるよ!」という話が上がっていたので、近日中に調べて、blogかqiitaにまとめます。 Android/iOSのSDKの話は、2Fのポスターセッションで2019年にさらに色々な情報がSDKで扱えるから便利!!という話を聞いたけどBot/LIFFは置いていかれないのか?ということが議論されていました。プライバシー的な問題があるけど、考えておくね!という結論になったので、またBOT/LIFFの幅が広がるのではないかと楽しみにしています。
行ってみて感想
初めてLINEの大きなカンファレンスに参加しました。行ってみた感想は率直にすごい!ということです。 平日で来れる人は少ないはずなのに、どの会場も満員で、プラットフォームとしてのLINEが成功しているんだなーと感じました。 Dev Dayでは、LINEの開発者もLINEを利用している開発者も揃い学ぶ姿勢というのがこれからもLINEをさらに加速させて行く期待感を感じました。 また、各国のExpert達のこれからLINEを普及させて行くぞ!という熱意はぜひお手伝いしたいし、できることは協力したいと思いました。
自分もまだまだPushし足りない部分があると思うので、いろんなことを学んで発信していきたいと思いました。
2日間でLINEの主要4つのAPIを使ってみた。[実装編]
はじめに
今回の記事は、2daysハッカソンでLINEの主要APIの機能(Messaging API, CEK, LINE Beacon, LINE Pay)を実装したので、その話をします。 多分自分一人ではこの昨日全て実装することはできませんでした。チームのみんなで一致団結して、することで2daysのハッカソン期間中に十分な睡眠戻りながら、4つの機能を実装することができました。
アイディア部門を書いたので、今回はエンジニア視点から意識した部分を書いてみたいです。
メンバー構成
メンバー的には、自分・会社の同期・現地で意気投合したエンジニアさんの3人チームで参加しました。役割的には次のような感じです。
自分 : Messaging API, PM, CEK, Pay 同期 : Messaging API, CEK エンジニアさん : Messaging API, Beacon
制作物
「鎌倉観光を荷物なしでシュシュっといけるbot」を作成しました。 大きく分けると次の3つの機能です。
- 名所に近づくとBeaconに反応してClovaが観光案内をしてくれる機能
- 駅に近づくと帰りの時間をアナウンスしてくれる機能
- お土産屋さんに近づくとお土産の一覧を教えてくれて、LINE Payで決済でき、お届けしてくれる機能
実際にしたこと
実際に実施したことは以下の2つが大きいです。 - ファイル分割によるタスク分割 - ペアプロによる結合テスト 実際に作業したリポジトリはこちらです(4geru/line-boot-award-tokyo)。
ファイル分割によるタスク分割
具体的には以下のようにファイルを分割しました。
- それぞれのAPI
- clova.js
- beacon.js
- server.js(サーバー・botを司る)
- line-pay.js
- それぞれのメッセージに合わせたjsファイルの作成
- intro.js(観光地紹介のカルーセル)
- items.js(お土産紹介のカルーセル)
- message_object.js(その他のメッセージのテンプレート)
ペアプロによる結合テスト
結合部分は二人で、ペアプロを行い修正していきました。 修正した箇所では、ファイル分割・リファクタリングも同時に行い、可読性・汎用性の高いコードに修正しました。
詰まったポイント
アイディア編にも書いた通り「Beacon → リッチメニュー → LINE Pay → 購入・決済 」までのフローの部分が苦労しました。 この部分では、beacon, bot, flex message, line payあたりの技術を詰め込んでいます。
次にしたいこと
ハッカソンで作ったコードなので、予選を通った場合さらにリファクタリングをし、本戦までに、実際に鎌倉旅行をしてみます。 また、様々なAPIを利用したので、テンプレートエンジン化してみたいと思います。
2日間でLINEの主要4つのAPIを使ってみた。[アイディア編]
はじめに
今回の記事は、2daysハッカソンでLINEの主要APIの機能(Messaging API, CEK, LINE Beacon, LINE Pay)を実装したので、その話をします。 多分自分一人ではこの昨日全て実装することはできませんでした。チームのみんなで一致団結して、することで2daysのハッカソン期間中に十分な睡眠戻りながら、4つの機能を実装することができました。
メンバー構成
メンバー的には、自分・会社の同期・現地で意気投合したエンジニアさんの3人チームで参加しました。役割的には次のような感じです。
自分 : Messaging API, PM, CEK, Pay 同期 : Messaging API, CEK エンジニアさん : Messaging API, Beacon
制作物
「鎌倉観光を荷物なしでシュシュっといけるbot」を作成しました。 大きく分けると次の3つの機能です。
- 名所に近づくとBeaconに反応してClovaが観光案内をしてくれる機能
- 駅に近づくと帰りの時間をアナウンスしてくれる機能
- お土産屋さんに近づくとお土産の一覧を教えてくれて、LINE Payで決済でき、お届けしてくれる機能
今回のアイディアのキモ
今回のアイディアで一番大事だった部分は、3. お土産屋さんに近づくとお土産の一覧を教えてくれて、LINE Payで決済でき、お届けしてくれる機能
かなと思っています。ここの部分でいうと、どれだけUXをあげるか!という部分を重きに置いて考えました。
Beacon → リッチメニュー → LINE Pay → 購入・決済 の流れをいかに自然に、ユーザーにとってストレスを与えないような形で決済まで持っていくかアイディアを詰めこみました。
制作するためにしたこと
最終的なプロダクトとして完成させるためには一つのサーバー・一つのbotとして動かす必要があります。
そのために自分たちのチームで行ったことは2つあります。
- なるべく大きなファイルではなく小さなファイルに分割し、問題をわかりやすくする。
- ディスプレイを運営の方からお借りし、PMとペアプロを行い統合作業を行う。
感想
初めて、自分のアイディアでハッカソンをしてみるという経験でした。自分のアイディアはうーむという感じで、毎回なんだかなーという思いが強かったのですが、今回は会場の方々からも「いいね!」と言われたアイディアなので非常に嬉しかったです。 以前にMessaging API x Beaconで街を探検するbotをハッカソンで作ったのですが、SONY Ear Duoの 我ながらお土産をLINE Payで決済してお届けする機能というアイディアはなかなかよかったと思いました。
鎌倉市のことをこんなに考えてみたことは初めてでした。 自分はまだ鎌倉に行ったことがないので、ぜひ観光してみたいなーと思いました。 他の自治体さんでも導入ができそうなので、実際に連携して導入テストとかしてみたら面白そうだなーと軽く思ったりしました。
CEK縛りでハッカソンにでてみて感じたこと
はじめに
こんにちは 4geru です。09/01にサポーターズさんで開催されたLINE Bot&Clovaハッカソンに参加してきたのでまとめてみました。
はじめにCEKとは「Clova Extensions Kit」の略で2018年の7月にリリースされたClovaのAPIです。自分もちゃっかりリリースの4日後にRubyで軽くCEKの記事を書います。(参考 : 海の日なのでClovaでどうぶつスキルを作ってみた)
記事を書いてみたのですが、あまり理解できていかなったのですが、今回本格的にやるぞという思いで、CEK API縛りでハッカソンにでてみました。感想をKPT的にサクッと書きたいと思います。
CEKについて
でできること
文(intent)と類義語(slot)を登録できる
CEKでは文と類義語を登録することができます。intentとslotについては @imajoさんの記事に詳しく書かれています。(参考 : [入門]Clovaスキル(CEK)は作りながら覚えて行く(前提知識編))
mp3を返すことができる
音声データ以外にもmp3を返すことができます。mp3を利用することにより、効果音を流すことが可能になり、プロダクトとしての質が格段に上がります。 LINE Botで言う所のスタンプ(sticky) を返してくれるbotのような感じです。
また、setSimpleSpeech
ではなくsetSpeechList
を利用することにより、複数のボイスを返すことができます。サンプルのように、クイズbotの例だと正解の音を流して正解のアナウンスを流すことも可能です。
responseHelper.setSpeechList([ { "type": "URL", "lang": "" , "value": "https://e71ea8e2.ngrok.io/correct.mp3" }, { lang: 'ja', type: 'PlainText', value: '正解です。おめでとうございます!!', } ]);
できないこと
元の音声入力情報が取れない
プライバシーの観点から音声の生データ及びテキストデータを入力として受け取ることができません。
発音が悪いと受け取ってくれない
自分はあまり発音がいい方ではないので、トリガーアクションを取るのが難しかったです。チームメイトの声はスムーズに受け取ってくれていた。しかし、これから学習データが集まるに連れてスムーズな応答ができるようになっていくと思います。
参考にした資料たち
参考にした資料
- @imajoさん [入門]Clovaスキル(CEK)は作りながら覚えて行く(前提知識編) 実際に作りながら覚えていくので非常に読みやすかったです。超オススメ。
- @stachibanaさん CEKハンズオン
- @n0bisukeさん Clova CEKでのスキル開発の始め方〜Node.jsで開発スタート編〜
ハッカソンに参加してみて感想
やってみてよかったこと[Keep]
スマートスピーカーの開発をすることができた。
もともと作りたかったClovaスキルのMVP(Most Value Product)を完成させることができた。ことが非常に良かった。
ハッカソンに参加していたこともあり、LINEの方にすぐに質問をすることができたので、疑問が疑問のままではなく、発散でき、解決できたことも今回のハッカソンに参加して良かったことだと思います。
mp3をシュシュっと流せた
ngrokを繋いで、/public
いかに音声ファイルを置くことで、mp3で手元にあればどのような音楽でも流すことが可能です。
悪かったところ[Problem]
全くの知識不足で参加したところが一番大きかったです。知識不足については、次の通りです。
ビルドとコードの違いがわからなかった
@stachibanaさんのスライドでは、ビルドのスライドの次に完成したコードが記述されています。その点ビルドで何をビルドして、コードで何を記述するべきなのかがわからず困惑しました。
まとめてみると「ビルド=intent/slotの言葉の定義」「コード=intent/slotを受け取ってから返すまでの処理」のような感じです。
skillのコードに慣れていなかった
冒頭でもあったのですが、setSimpleSpeech
とsetSpeechList
の違い。
userIdの取得の方法/intent,slotの取り方/slotが取れなかった場合どうなるのか などなどハッカソン中に色々と戸惑う部分が多かったです。
あらかじめにコードを読む or 勉強会に参加すると格段に理解が上がってハッカソンでもスムーズにコーディングできると思います。
レスポンスが遅かった
会場にも寄ると思うのですが、通信のスピードが少しあるのかもしれません。LINEの時はスピードが早かったです。そのため、@stachibanaさんのハンズオンでは、herokuを使って動作させています。
次直すところ[Try]
動画を事前に録画する
動画を撮影するポイントは、2ポイントあります。
1つ目は、会場でデモするときに正常に動作しているかが重要になってきています。 発表中に100%動くのであれば問題はありませんが、100%動く自信がない&時間に余裕があれば、動画の撮影をオススメします。
もう一つは今回のLINE BOOT Awardでは、写真or動画の撮影が必須になっています。 ハッカソンでは動いていたけど後日動かすと動かない。メンバーが忙しくて集まれない等の事案が発生してしまいます。そのため、会場でなるべく動画に残して置くと良いと思います。
まとめ/感想
ハッカソンに参加して賞は取れない...悔しいという思いはあります。 しかし、自分が面白い!作ってみたい!!と思ったアイディアを一人ではなくチームとして短時間に形にすることは非常に楽しいです。また、ハッカソンで使った記述から学ぶことは非常にたくさんあります。
また、他のハッカソンにも参加するので、是非その際はお声がけください。 この記事を読んで見て面白いと思った方は周りのメンバーを誘って or 一人でも参加してみて下さい。