行ってきた: [ハンズオン] LINE Clova×IBM WatsonでAIを学ぶ
参加したイベント
概要
占いスキルのハンズオン ClovaスキルとIBM Cloud/Watsonを使ってスマートスピーカーから音声認識で占いをするアプリを作ります。
提供された資料
CEK(CIova Extensions Kit)の概要や設定方法など
- Clova Developer Center β の画面上の操作
- コマンドをコピペしやすくするためにチートシート的なものを用意していただいている
- 今回はIBM Clowdを使うので、
『Herokuの準備』から『環境変数の設定』までは使わない
IBM Clowd と サーバーサイドについて
学んだこと、思ったことメモ
スキルの動作フローが大体わかった
- LINE Clovaのハンズオンに参加するのは2回目。
- 1回目は基本的な動作フローのレクチャーとかは一切になく、『とにかく動かすこと』メインだった。
- (基本的な動作フローくらい自分で学んでこいよって話?)
- 1回目は基本的な動作フローのレクチャーとかは一切になく、『とにかく動かすこと』メインだった。
- 今回はちゃんと説明があったのでありがたかった
対話モデルが何なのかフワッと分かった
- VUI(Voice User Interface)の一種
- BotにUserと対話させることで、Userの意図を汲み取れるようにする、的な。
debugしやすい仕組みづくりが大事
- 今回は星座占いのスキルを作ったが、全参加者に
object.values is not a function
的なエラーが発生したため完成者ゼロで終わった- 存在しない星座名を話しかける場合:
- 期待通りの挙動『星座に誤りがあります。他の星座でお試し下さい。』
- つまりアプリケーション自体は生きている
- 存在する星座名を話しかける場合:
- 動作停止(500エラー) <- アプリケーションロジックの問題ぽい...?
- 存在しない星座名を話しかける場合:
- 問題発生から30分程度経過しても原因が掴めなかった
- 効率的なdebugの仕組みがなかった
- ログを吐くロジックを書き加える->デプロイする->ログ見る という愚直なdebug
- Heroku版で、同じアプリケーションロジックで正常に動作していた(らしい)
- 『あっちでは動いてるのに何でIBM Cloudでは動かないんや...』ってなる <- 環境依存なの...?
- 効率的なdebugの仕組みがなかった
試しにやってみた
Heroku版で、同じアプリケーションロジックで正常に動作していた(らしい)
を検証するために、herokuでつくってみた。
手順は前述の↓に書いてある通り。 www.dropbox.com
...動きました
んー、IBM Cloudの設定に不足があるとか、Node.jsのバージョンとか、使ってるライブラリとか、その辺の問題なのかな...?
Heroku版は比較的スムーズにできると思うので、ご興味ある方はぜひ。
Django Girls Tutorial をやってみて詰まったところ
諸事情によりPython/Djangoをやることになり、Django Girls Tutorialをやってみました。 やってみたところ、いくつか詰まった箇所があったのでメモしておこうと思います。
Django Girls Tutorial って何?
比較的多くの人がオススメしているDjangoのチュートリアルです。自分は知人にオススメされてやってみた勢です。
チュートリアルの目次(+雑メモ)
詰まったところや詰まりやすそうなところに★つけてます
- workshop_tutorialJP
legacy.gitbook.com
のDjangoGirlsJapan > workshop_tutorialJPのページに飛びますlegacy.gitbook.com
のアカウントがないとログインできなくて切ないし、そもそも"legacy"なので新しいアカウントを作ることができなくて切ないです
- イントロダクション
- やっていこうぜ?という気持ちになります
- 『こんなブログサイトを作ってインターネットに公開するよ!』と言われて初学者の皆さんはハイな気持ちになります
- インターネットはどうやって動いているの?
- わかりやすいです。非エンジニアさんに読まれたいです。
- IPアドレスとかの雰囲気が分かるようになります
- コマンドラインを使ってみよう
- コマンドラインが使えるようになります
- Pythonをインストールしよう
- 必ずPython3.6系をインストールしましょう
- 『諸事情で2.7系で進めます〜』とか『今の最新の3.7系でやるっす!!!』とかやると、後々詰まります。★
- コードエディタ
- エディタはまあなんでもいいです(JetBrainsのAllProductパックを持っている自分はPyCharm一択でした)
- Pythonをはじめよう
- Pythonコーディングの基礎が分かって嬉しい気持ちになります
- Djangoってなぁに?
- そうだね
- Djangoをインストールしよう
- virtual environment (virtualenvとも呼ばれています)を作成し、その中でDjangoをインストールします
- プロジェクトを作成しよう
- 言われた通りにコマンドを叩いていくと動いたよありがとうという気持ちになります
- Djangoモデル
- オブジェクト、モデル、(Djangoにおける)application、データベース、テーブル、などの単語の出現により、初学者の脳内メモリのキャパを越えると思います
- でも言われて通りに書き換えていくとうまくいきます。きっと不思議な気持ちになります。
- ログインページを作ろう(Django admin)
- ブラウザ上で記事を作成することができてハイになります
- デプロイ!
- HerokuとかGitが出てきて初学者は迷宮入りする可能性が高いです。
- あと普通に手順の更新が追いついていないところがあります★
- 手順通りに正しくやるとさっき(ログインページを作ろう)まで動いていたローカル環境もエラーになります
- 当然Herokuにデプロイしてもエラーになります
- Django urlsってなに? ★
- Djangoビューってなに?
- "
model
から情報を取得しtemplate
に渡します" とか言われてもmodelもviewもワカンねぇよ〜ってなると思います - それはそう、仕方ないです
- "
- HTMLをやってみよう
- ここは分かるのでホッとするんじゃないでしょうか(HTMLが全くわからずにDjangoやるぜ!って人はまあいないだろうという想定)
- クエリセット1
- データベースへの接続方法ね、OK、言われた通りにやるよ ってなると思います
- クエリセット2
- OK分かった、言われた通りにやるよ ってなると思います
- テンプレートに表示しよう
- 変数埋め込めるの便利だねってなります
- CSSでカワイくしよう
- bootstrap便利だね、CSS楽しいねってなります
- テンプレートを拡張しよう
- 共通部分を切り出すことができて嬉しいねってなります
- アプリケーションを拡張しよう
- ブログごとの詳細ページが見れて嬉しいねってなります
- フォームを作ろう
- ブログの新規投稿と編集ができるようになって嬉しいねってなります
- ドメインを設定しよう
- 急に英語やん!!ってなります
- ドメインが気になる人だけやればいいんじゃないかなって思います
- 次のステップは?
- "このチュートリアルの拡張版である、Django Girls Tutorial: Extensionsを試してみてください" って言われます
- また英語やん!!ってなります(英語に強くなりましょうって思います(思います))
詰まりポイントと解決策
手順通りにやると確実に詰まる箇所が2つありました。両方ともデプロイ!のところです。1つずつ見ていきます。
①Psycopg
発生する事象
『Herokuにデプロイできないよ〜〜〜』
問題詳細
- チュートリアルに以下のような手順があります
ファイルを開いて、最終行に次の1行を追加しましょう:
psycopg2==2.5.4
これは、あなたのアプリケーションをHerokuで動かすために必要な1行です。 - Psycopgは公式ドキュメントによると
Psycopg is the most popular PostgreSQL database adapter for the Python programming language.(Psycopgは、Pythonプログラミング言語のための最も一般的なPostgreSQLデータベースアダプタです。)
- 手順の通りに進めると、Herokuにデプロイする際に以下のようなエラーになります
Command "python setup.py egg_info" failed
解決策
- まずpsycopg2をアップグレードしてください
pip install --upgrade psycopg2
- 次にアップグレード後のpsycopg2のバージョンを確認してください
pip freeze
- 最後に
requirement.txt
にそのバージョンを記載したら完了ですpsycopg2==O.O.O
②WhiteNoise
発生する事象
『なんかローカルがエラーになってる!?さっきまで動いてたのに...!!』
問題詳細
- このチュートリアルでは、Herokuにデプロイするにあたって、WhiteNoiseを使っています
- 手順通り
pip install dj-database-url gunicorn whitenoise
すると、WhiteNoise v4.0 がインストールされます - このv4.0にはブレーキングチェンジがあります...!
- 公式ドキュメントによると↓とのこと
The WSGI integration option for Django (which involved editing wsgi.py) has been removed. Instead, you should add WhiteNoise to your middleware list in settings.py and remove any reference to WhiteNoise from wsgi.py. (DjangoのWSGI統合オプション(wsgi.pyの編集を含む)は削除されました。 代わりに、settings.pyのミドルウェアリストにWhiteNoiseを追加し、wsgi.pyからWhiteNoiseへの参照を削除する必要があります。)
- 公式ドキュメントによると↓とのこと
- これに対応できていないため、以下のようなエラーが出ます
'(Djangoプロジェクト名).wsgi.application' could not be loaded;
解決策
- mysite/settings.pyの
MIDDLEWARE
に、以下を追記する'whitenoise.middleware.WhiteNoiseMiddleware',
- mysite/wsgi.pyの編集(追記)をしない
次にmysite/wsgi.pyファイルを開き、最終行に次のとおり追加してください
と書いてありますが、無視してください
終わりに
初学者の方がこれ系をやるときは書かれている通りのバージョンで実施することが大事かな、と思います。書かれている通りのバージョンでやっていると、前提が整うのでエラーの原因を探しやすいかなと思います。
かくいう自分が書かれている通りのバージョンでやらなくて詰まりまくったので一応それも記載しておきます。
[残念な例]
- 『プロジェクトの諸事情でPython2.7系で進めます〜』
- WhiteNoise v4.0 がPython3.3未満はサポート対象外
- あるいは、
pip install whitenoise==X.x.x
みたいな感じで、2.7系に対応するバージョンを指定してあげればいいかもしれません- が、個人的にはバージョンを下に揃えるアプローチは好きじゃないので非推奨です
- 『今の最新のPython3.7系でやるっす!!!』
以上! お疲れっした
Tech Blog やっていきます
誰に向けて書くか
- 変数とか配列とか条件分岐とか繰り返し処理とかはザックリわかるよ、な人
- Progateで一通り勉強したよ、な人
- SIerやっててWebの技術に興味あるよ、な人
- 未来の自分
- 未来の自分を採用しようと検討している面接官や採用担当者
何を書くか
- 主な対象技術
- Ruby / Ruby on Rails
- Python / Django
- Node.js
- React
- Docker
- 内容
いつ書くか
どこで書くか(どうでもいい)
なぜ書くか
- 情報発信をしておくの、大事だな、という気持ちが湧いているから
- 退職エントリを書いたことで『8月暇なら手伝ってよ』と、面白い話をいただけた note.mu
- 雑でもいいから書いておくことで、何か起きるきっかけになり得ることが分かった
- 未来の自分が振り返った時に "やったった感" があると気持ちえぇのでは?という仮説
やっていきます