くろおーかみ*てっく

しがないくろおーかみの勉強記

Laravel/Vue.js勉強会#10 に参加しました #Laravue

今日は勉強会に参加したので、レポートを書きます✨

laravue.connpass.com

もくじ

[Vue] スポンサー: Storybookを用いたVue.js共通コンポーネント開発との戦い

t.co

Storybookを使っている環境でどのようにレグレッションテストや組織内でのモジュール配布をしたか、というお話です。

reg-suitで画面キャプチャーを使ったテストができるのは便利ですね✨
モーダルダイアログ等で背景が暗くなったとき、背景分の差分も出てしまう場合 のテスト方法も解説されています。

[Vue] LT1: Vuex ORMの紹介 - フロントエンドのORMとデータのノーマライズ

t.co

Vuexをデータベースみたいに使えるものVuex ORMの紹介です。
Vuex ORMを実践した SOKUSEKIというタスクかんばんのアプリも作っているそうです!

f:id:y-mix:20190718202450j:plain
Vuex ORMを実践したアプリ 『SOKUSEKI』

永続化が今後の課題など、使い所が気になりますね✨

[Laravel] LT2: Laravel + AWSで CI/CDしてみた話

slides.com

資料は見つかりませんでした…
資料がアップされたのでまとめました🙇‍♂️

S3->ECR->運用開始 という流れでCodePipeline, CodeBuildを使った話になります。 CodeBuild内でPHPUnitを動かしているそうです。

CodeBuild/PHPUnitなどの解説があるため、はじめての方でもわかりやすいですね!

[Vue] LT3: Vue.jsでFormをAtomic Designしてみたときのコンポーネント間のやり取り

t.co

「Atomic Designについて」から「Atomic Designにした構成でどのようにデータをやり取りするか」まで解説されていました。
また、Atomic Designのデータのやり取りが分かりづらい方に向けてprops in / event outの考え方を用いた解説になっています。

[Laravel] LT4: Laravel のイベントディスカバリー

qiita.com

スライドではなくQiitaの記事になります。

Laravelのイベントの作り方 から Laravel 5.8.9から出た最近の イベントディスカバリー の使い方を解説しています。

[Laravel] LT5: PHPUnit + openapi-validator で「スキーマが正、実装が追従」にする

qiita.com

API仕様書を元にしてLaravelで作ったAPIをテストする話になります。

API仕様書に当たるYAMLを作るのが大変」ということですが、作ってしまえばそれをソースにしてAPIのテストができるのは楽そうですね💪

[Nuxt] LT6

スライドは無いそうです。

FlutterからNuxtに変えた受付システムを作る話で、入力があったらSlackに送る…
はずが発表時にSlackに通知を送れていない状況だそうです!

「Nuxtはvue-property-decoratorを使っているが非推奨になるので要注意」というお話を聴けました。

懇親会

f:id:y-mix:20190718222617j:plain

各テーブルごとに軽食が違っていて、(撮っていなかったのですが)メロンが出ました!🍈🍈🍈

感想

Vueの v-modelv-bindv-on を組み合わせた効果になる、というのは初耳で有用な話でした✨

www.shookuro.com

Atomic Designでのデータの受け渡しですが、子で起きた変更は親にイベントを渡して変更を伝え、親でデータを変更するなど、こちらの話とつながってきたなという感じもしました💪

懇親会で話を聞いたところ「VuexはSPAを用いたときに画面間でデータを渡すために使うべき」という意見があり、
Atomic Designでは親-子コンポーネント間のデータの渡し方を徹底する必要があるという課題は残りました…

\ 勉強会の皆様、ありがとうございました! /

100DaysOfCode #18: Vue.js <script>直接組み込み(8) watchと公開されているWeb APIでGETを試したいときの注意

やったこと

今日の進捗のコードはコチラ。

github.com

Vue.jsの知見を聴きに勉強会に参加しました。

y-mix.hateblo.jp

Web APIを試したい!…アクセスキーが不要なAPIを試そうとするとCORSの制限に引っかかる

ウォッチャのサンプルで「テキストボックスの入力が終わって少ししたらAPIに問い合わせる」というモノを作りたいときに
とりあえず 問い合わせにAPIキーがいらないWeb APIを使いたいのです。

このAPI一覧など参考になります。

paiza.hatenablog.com

そのうちのWikipediaの記事を検索して取得するAPIを試そうとすると、 CORSの制限でGETすらできない模様。

 https://ja.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&titles= { Keyword } &rvprop=content&rvparse&callback=jsonData

has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

代わりにデータを取得する中継サーバーを作る

これを解決するには、問い合わせを受ける側から適切な Access-Control-Allow-Origin のHTTPヘッダーを付けてクライアントに返す必要があり、

[クライアント: Vue.jsのサンプル] - [HTTPヘッダー(CORS)を付けるサーバー] - [WikipediaのAPI]

という形で中継する必要がある。

データを取ってくるときは、一旦中継するサーバーに問い合わせをして

[クライアント: Vue.jsのサンプル] -> [HTTPヘッダー(CORS)を付けるサーバー]

HTTPヘッダーを付けるサーバー - WikipediaAPI間はCORSの制限を受けない方法でデータを取得する。

  • PHPなら file_get_contents()
  • Node.js なら http.get() ?(未検証)
[HTTPヘッダー(CORS)を付けるサーバー] <-> [WikipediaのAPI]

最後に、中継したサーバーからクライアントのVue.jsに返すときに Access-Control-Allow-Origin ヘッダーを付ける。

[クライアント: Vue.jsのサンプル] <- [HTTPヘッダー(CORS)を付けるサーバー]

この中継サーバーを立てる方法をPHPで解決した例はコチラの記事で…

qiita.com

今やらないの?

サンプルのレベルでやるならNodeのexpress.jsでヘッダーを付けたAPIを作ってそれでやり取りするのかなぁ…と思ったけど、
今の <script> 直接読み込みなプロジェクトの構成が大きく変わるのと、Vue.jsの本題から外れてしまうので後ほど。

#でもVue.jsのドキュメントとは違うことをやりたかった…

100DaysOfCode #17: Vue.js <script>直接組み込み(7) computed/watch

やったこと

今日の進捗のコードはコチラ。

github.com

風邪気味なようです…

きづいたこと

100DaysOfCode #16: Vue.js <script>直接組み込み(6)

やったこと

今日の進捗のコードはコチラ。

github.com

きづいたこと

  • a タグに対して(CSS/SCSSの勢いで?) v-on:hover では期待通りに動作しないので v-on:mouseover を使う

100DaysOfCode #15: Vue.js <script>直接組み込み(5) テンプレート構文 / GitHub found 1 vulnerability on...

やったこと

早く寝なきゃ…

今日の進捗のコードはコチラ。

github.com

GitHubでコミットしたら「脆弱性が見つかった」というメッセージが出た!

表題の通り、コミットの操作をした時点でリポジトリ脆弱性が見つかるとGitHubが教えてくれます。

f:id:y-mix:20190715232120p:plain

リポジトリのページでもガッツリ出ています。

f:id:y-mix:20190715232150p:plain

詳しく開くとこんな感じです。
Sassの自動コンパイルをするためにyarnでnpmのパッケージを導入したのですが、その 中の依存パッケージに脆弱性が見つかっていますね。

f:id:y-mix:20190715232406p:plain

Automated security fixesを試す

パッケージを更新した上で動作に問題がないか等確認するのですが、今回はお手軽に済ませましょう。

右上の "Automated security fixes" から "Automated security fixes" にチェックを入れます。

f:id:y-mix:20190715232239p:plain

右上の "Create automated security fix" をクリックします。

f:id:y-mix:20190715232650p:plain

作成中… ページの再読込をしないと反映されません

f:id:y-mix:20190715232904p:plain

ページを再読込すると Pull Requestができています。

f:id:y-mix:20190715232927p:plain

また、 git pull すると自動で作られたブランチがローカルにやってきます。
ローカルにもブランチを作って動作確認してみましょう。

git checkout -b  dependabot/lodash-4.17.14 origin/dependabot/npm_and_yarn/20190704-pt4-landingpage/lodash-4.17.14

正しくないと思いますが、一旦 node_modules を消してからアップデートされた yarn.lock に従ってパッケージを入れて動作確認します。

rm -rf node_modules
yarn install
npx parcel ./src/index.html

今回は、 ParcelでSassのコンパイルが正しくできればOKなのでPull Requestを開いてそのままマージします。

f:id:y-mix:20190715234841p:plain

Automated security fixxes で作られたブランチは、PRマージ後勝手に削除されるようです。

done!

100DaysOfCode #14: Vue.js <script>直接組み込み(4) Vueインスタンス

やったこと

体調の悪い日が続いています。

今日の進捗のコードはコチラ。

github.com

WebpackもParcelも導入しないでホットリロードを実現したい!: Visual Studio Code + Live Server

ちょうどエディタをVisual Studio Codeに変えたところ、 エディタの拡張機能だけで ファイルが更新されたらブラウザの内容も自動で更新してくれる機能が実現できました。

まずはExtensionsのMarketplaceで "Live Server" と検索してインストールします。

f:id:y-mix:20190715231453p:plain

つぎに表示したいHTMLを開いた状態で、 いつもの Command + Shift + P を押して"Open with Live Server"を選択するだけです。

f:id:y-mix:20190715231038p:plain

それでLive ServerがホストするHTMLがブラウザで開いたら、あとはHTML/JSを上書き保存すると自動で反映してくれます。

Sassのコンパイルなどはしてくれませんが、HTMLと <script> で 直接読み込む範囲であれば
便利 & お手軽 😄