プログラミングこんにちは、靖宗です。チームでのJavaScript案件はやってないんですが、チームじゃなくてもESLintを導入するべきなんじゃないかと感じ、導入してみることにしました。いえよくわかんないので記事にしながら学習します。今回はTypeScriptを対象としていません。別の記事にまとめます。Zakasさん(オライリーの「ハイパフォーマンスJavaScript」などの著者)によって作られたツールです。実行前にJavaScriptのソースコードを解析するもので、基本的な間違いを検出するだけでなく、フォーマット(セミコロンの有無など)も検出して指摘してくれます。チーム開発では重宝されるツールでしょう。他に似たツールにJSLintなどがあったのですが、最近ではあまり聞かなくなりました。基本的にはESLint一択なんでしょう。使うプロジェクトでnpmかyarnでインストールすれば良さげです。eslint設定ファイルを作らなければただ容量を食ってるだけの代物ですが、基本準備はこれだけです。今回はNuxt.jsで使う想定なので、nuxtのプロジェクトを作成しながら設定していきたいと思います。Nuxt.jsのプロジェクトを作成するまずはコマンドでnuxtのプロジェクトを作成します。eslint-testプロジェクト名はeslint-testとしました。(SSR)nuxtのウィザードに従ってESlintとPrettierを有効にしました。Jestまで色々書くか微妙ですが、とりあえず導入しておきます。.eslintrc(ESLintの設定ファイル)の作成.eslintrcを作成します。この設定ファイルは6種類の記述手段があるらしく.eslintrc.js.eslintrc.yaml.eslintrc.yml.eslintrc.json.eslintrcpackage.jsonというファイルに記述することができるそうです。package.jsonに記述する方法はファイルが少なくて済むんですが、煩雑になるので避けた方が良いのでは?と思います。nuxtなどで用意すると.eslintrc.jsが勝手に生成されるので、基本これで行きます。nuxt-appで用意すれば既に生成されています。試しにstore/index.jsを生成して適当な事を書いてみます。console.log('hello!')}helloWorld();ESLintをコマンドから実行してみます。[JavaScriptファイル名]で実行可能です。store/index.jsを実行します。option.prettier/prettierのルールでセミコロンが着いてる!しばくぞ!と怒られています。prettierの方ではデフォルトでセミコロンは悪役の様です。いったフォーマットの規約などをチェックするのがESLintの役割です。option.」とあります。--fixと実行すると、該当箇所を良い感じに修正してくれます。後述するようにこの辺は全部Prettierに任せようと思います。(とは言っても実行されるコマンドは同じみたいですが)ESLintの設定ファイルここでようやくESLintの設定ファイルに関して見ていきましょう。ルールの追加(rules)ESLintのルールを追加するには設定ファイルに追記していきます。細かい設定は.eslintrc.jsのrulesに記載します。オプションの値]という構成になります。off(無視)が設定できます。オプションは設定項目で色々ですが、例えばsemiではalwaysにすると「無いと怒る」、neverにすると「あると怒る」といった感じです。ルートの指定(root)nuxtのウィザードでESLintの設定ファイルを生成するとrootという設定項目があります。これは「プロジェクトルートがここなので、これ以上親の階層は気にしなくて良い」という設定のようです。ESLintは階層ごとに配置することもできるそうなので(たぶんそんなに頻繁にすることはない)、どこまで親をたどるのか明確にするときに設定するのでしょう。基本そのままで大丈夫そうです。環境の設定(env)初期設定ではbrowserとnodeがtrueになっていると思います。スクリプト実行環境を指定出来るオプションのようで、ブラウザとNode.jsで実行されることを想定しています。基本このままでも大丈夫そうですが、念のためes6とjestを追加しておきます。Moduleの機能までチェックできないようです。そこで、設定ファイルの項目parserOptionsを設定していきます。"module"を追加します。これでES6に対応したはずです。デフォルトではbabel-eslintが設定されていますが、いろんな設定を付加してくれる反面いろいろありすぎて推奨されない見方もあるそうなので、個人的な判断ですが削除します。ちなみに、たぶんなんですがbabel-eslintを設定しておけばes6の記述と上記のmoduleの記述は不要になると思います。ついでにJSXもチェックできるようにしておきます。},...nuxtなんであんま使わないと思いますが。拡張ルールセット(extends)ライブラリなど既に定義されているルールを取り込みたい時があります。それだけで事足りる事が多いんじゃないでしょうか?そういうときの設定項目としてextendsがあります。nuxtのデフォルトでは何種類か指定されていると思います。基本的な流れとしてはnpmかyarnでルールを追加する"extends"に追記するといった感じです。試しにかの有名なairbnbのルールを適応してみます。パッケージはeslint-config-airbnb-baseです。eslint-config-airbnb-baseお次にeslintrcに追記。],...一番上に追記したのは、'plugin:prettier/recommended'の設定が後ろに回さないとうまく動かない事があるという噂を聞いたことがあるからです。この噂に従い、基本的に後から追加したものは上から順に追記していきます。(ここは曖昧なので気になる方は調べて下さい。)プラグイン(plugins)先ほどのextendsのなかにplugin:prettier/recommendedなどplugin:で始まるものがあります。これらはpluginsの項目で設定したプラグインの推奨設定で、プラグインを導入すると使えるルールだそうです。Moduleの為にparserOptionsが必要になったのは内部構造によるもの)の際にはpluginに追記する必要があるんでしょう。このへんは導入するルールによるものかと思います。その都度確認しましょう。今回はnuxtの為に導入しているので、vueのルールを追加します。なんでデフォルトで入らないか謎ですが、追加で加えていきます。eslint-plugin-vue大体セットでeslint-loaderも追加してるんですが、ホットリロードの為だと思います。設定ファイルを書き換えます。],...'plugin:vue/recommended'を追加したついでに'eslint:recommended'も追加しました。ESLintの設定はだいたいこんなもんで良さそうです。PrettierPrettierはESLintと併用されることの多いソースコードを整形してくれるツールです。--fixのつよいバージョンといったところでしょうか。eslintだけでもええやん!て気もするんですが、どうも整形機能としてはPrettierの方が優れているらしく、併用するひとが多いイメージです。冗長なのが嫌いな方は別に導入しなくても良いと思います。(チェック自体はESLintがやってくれるので)導入方法nuxtのウィザードで導入すると設定は既に完了しています。後から導入する場合はeslint-config-prettierとeslint-plugin-prettierをyarnかnpmでインストールすれば大丈夫だと思います。],...が該当します。PrettierのルールPrettierはあくまで補助ツールなので、全ての構文チェックなどはしていません。イメージとしてはESLintの苦手な整形部分"だけ"を担当しているツールという認識が正しそうです。extendsの'plugin:prettier/recommended'を一番最後に持ってこないとPrettierで整形したあとにESLintで怒られる構文になったりするので、必ずこの設定は最後に書きましょう。}...と書くことで、ESLintでセミコロン無しを警告するし、Prettierでコードフォーマットする際にセミコロンを追加したりできます。基本的にESLintでもPrettierでも指定出来る設定はPrettierで設定するのが良さそうです。(どうせ上書きされるので)Prettierで指定出来るオプションは下記の通りです。大体上記までで設定などは完了なのですが、ESLintやPrettierはファイルウォッチャーなどで「保存したら勝手に整形する」といった設定が望ましいです。(いちいちコマンド実行するのはめんどい)nuxt公式のホットリロードを設定しておけばローカルでサーバーを動かしている際にチェックできるのでそれで良いと思いますが、気になる方はお使いのIDEのファイルウォッチャーにeslintのコマンドを登録するのをお勧めします。YouTubeどうも、靖宗です。最近YouTubeのAPIを触ることがあってメモ代わりに記事にします。Keyを作成するだけで簡単なのですが、ユーザーに紐付いた操作などをする場合はOAuthの認証が必要です。Keyの方は言及しませんがもしかしたらそのうち書くかも。Platform(GCP)のダッシュボードからプロジェクトを作成し、その元にアプリケーションを登録します。console.cloud.google.comアクセスするとログイン画面がでるので、APIで操作したいアカウントでログインします。プロジェクト作成プロジェクト毎に認証情報は異なる方が都合が良いのでプロジェクトを作成します。左上の「プロジェクトの選択」から作成します。プロジェクト名は各自好きに設定して下さい。「作成」というボタンを押すと、ダッシュボードに戻されて右上でなんか進みます。すると「プロジェクト「○○」を作成」と表示されればプロジェクトの作成が完了していると思います。OAuthクライアントお次にアプリケーションの登録を行います。左上のメニューマークから「APIとサービス」→「認証情報」を選択します。プロジェクトが選択されてないと「このページを表示するには、プロジェクトを選択してください。」という表示が出ると思うので、右上の「プロジェクトの選択」から先ほど作成したプロジェクトを選択します。プロジェクトが選択されていれば、「認証情報」という窓が表示されていると思うので、認証情報を作成していきます。今回はOAuthを利用するのでOAuthクライアントIDを選択します。作成するには、まず同意画面でサービス名を設定する必要があります。」と警告されていると思います。ユーザーがOAuthを利用する際に「承認しますか?」と聞かれるページに表示されている情報を設定して下さいという意図です。確かにそれがないと始まらない。同意画面の設定ボタンを押して設定しときます。設定画面が表示されますので、必要な情報を入力します。動かしたいって方はおそらくアプリケーション名サポートメールだけ設定しておけばローカル環境では動きそうです。サービスを運用するドメイン(URL)なども決まっている場合は「承認済みドメイン」の箇所を設定しておいて下さい。ここを設定してないとなにがしかのトラブルに巻き込まれます(不正な認証情報だとか云々?しらんけど)。実際にOAuthを利用するサービスにする場合はちゃんとポリシーなんかのアドレスも設定して下さい。設定できたら「保存」を押して同意画面の設定を完了します。同意画面の設定を完了できればようやくクライアントIDの発行ができます。今回はWebアプリケーションを想定して一番上の「ウェブアプリケーション」を選択します。承認済みのJavaScript生成元ちょっと画像に入れ忘れてたんですが、ローカル環境で開発する際は「承認済みのJavaScript生成元」に"http://localhost"や"http://127.0.0.1:8000"などを設定しておかないとGoogleにはじかれます。URI」に設定しておきます。URIを"http://localhost/oauth/"に設定しておくと、OAuthの認証が終わった後に"http://localhost/oauth/?code=xxxxxxxxxxxxxx"へリダイレクトされます。これを利用してアプリケーションは"アプリケーションのURL/oauth/?code=[認証トークン]"というルーティングに処理を書いておくことで認証トークンを取得することができます。APIを有効にするだけなんですが、別記事に記載します。Dockerどうも、靖宗です。Windowsが出現してからWindowsでDockerを利用するのが簡単になりました。Windowsが利用できない人もいるんじゃないでしょうか?ぼくもその一人です。Toolboxで一応動かせるようなので、そちらのセットアップをしていきたいと思います。基本的に下記の記事を参考にさせていただきました。試しにコンテナを起動してみるVirtualBox上のVMのポートフォワーディングインストーラーを手に入れるなんてことないのですが、Docker公式としてはあまりToolboxの方を利用して欲しくないのか分かりにくい所にインストーラーがある気がします。DockerToolboxのリリース一覧から取得しろとのことです。github.comここ今回は「18.09.3」というバージョンをダウンロードしましたが、未来にこの記事を見ている人はより新しいバージョンのインストーラーがあると思います。(上から見てって「Assets」というところにexeファイルがあるのを選んで下さい。ダウンロードできたら基本的にはインストーラーに従って進めて行きます。インストール自分はこんなかんじですが、Gitがインストールされてない方などはチェックボックスがついてそうです。要らないことないのでインストールしておくことをお勧めします。shortcut」はチェックを外しておきます。この辺はご自由にどうぞ。Terminal」というショートカットが表示されると思います。ダブルクリックで起動!無事くじらAAが表示されればセットアップは完了です。試しにコンテナを起動してみる試しにニンジンXのコンテナを起動してみます。Dockerの基本的な利用方法については割愛しますが、nginxというコンテナを起動します。Terminalのコンソールからコマンドを打たなくてもPowerShellやcmd.exeでdockerコマンドが通ると思います。Windowsならたぶんここでブラウザに「http://localhost:8080」でnginxが表示されると思うのですが、今回はDockerToolboxを利用しているのでもう一手間要ります。VirtualBoxに「default」という仮想マシンが作成されていると思いますが(環境によっては変わる?)、このVM上でDockerが動いています。普通にコンテナを起動すると、ポートフォワーディングはdefaultという仮想マシンへ渡されます。なにも設定していないとWindows側からは見れません。今回はnginxをdefaultというVMには8080に渡しているので、defaultからWindowsへ8080に渡す設定を追加します。VirtualBoxの仮想マシンなのでVirtualBoxで設定します。defaultのポートフォワーディングが設定できれば、Windowsのブラウザ上からもnginxへとアクセスできるようになります。ブラウザ上で「localhost:8080」にアクセスすれば、nginxのデフォルト表記が確認できると思います。回路どうも、靖宗です。FusionPCBで基板製作から部品調達+部品実装までしてもらって楽しようという記事です。防備録としての意味合いも込めて記事にしておきます。部品を国内から送る方法は需要があれば別途記事にします。変わったりすると思うので、お気を付けて。一応基板の設計は終わってるものとします。Gerberデータの作成方法はFusionPCB公式サイトで詳しく記載がありますのでそちらをご覧下さい。デザインルールなどをチェックするのをお忘れなく。基板のみ作りたいって人はこの項目を飛ばして貰って構いません。実装の際に部品表が必要になりますので、そちらを作成していきます。部品表のテンプレートがあるので、そちらをダウンロードして作成してください。(リンク切れの場合はFusionPCBのサイトから直接ダウンロードしてください。)Eagleを使っている方はPartlistなどを出力して部品表を作成するのが良いと思います。一応PartlistからBOMの基礎となるデータを出力するPythonスクリプトを置いておきますので自己責任でご利用ください。https://www.axfc.net/u/3985652&key=deus実装情報(任意)※この項目は現在調査中ですので参考程度でお願いします。実装図などをアップロードできるようになったみたいなので、この辺の情報があるとFusionPCBの人達は楽かも。連絡回数を少なくして迅速に実装してもらうなら準備しておいた方が良いかもしれません。brdを印刷→PDFなどで対応、もしくはImageなど?)配置情報(Partlist)ぐらいあると丁寧かも。見積GerberデータアップロードGerberデータとBOMデータができていればウェブ上から見積がすぐ取れます。FusionPCBのPCBのページからGerberデータをアップロードします。アップロードできれば、念のためガーバービューアで閲覧しておく事をオススメします。基板の作成枚数が10以外の場合はパラメータのところで変更してください。BOMデータアップロード各パラメータを入力し終えたら「実装サービス」という欄をクリックし、実装情報やBOMデータなどをアップロードします。実装枚数が10以外の場合は、「実装枚数」と書かれた箇所を変更してください。BOMデータが問題無くアップロードできれば見積が完了します。FusionPCB側でウェブ見積できない部品(実装実績がない部品)があれば、部品見積の一番上に表示が出てきますので、部品を調達するために必要な情報を「購入リンク」から入力しましょう。だいたいDigiKeyにある部品なら調達してくれるのでDigiKeyのリンクを張っておけば問題無いかと思います。部品を国内から送るときこの場合はカスタマーサポートへの連絡が必須です。(調達価格と実装価格が変わるので、特殊なBOMを作って貰うのにメールでのやりとりが必要です。この辺はまた別途詳細をまとめます。カートに入れる+購入手続き上記までが問題無く終わっていれば上部に価格が反映されているので、「カートに追加」ボタンでカートに追加します。カートに追加した以降は、日本語で案内がでているので大丈夫だと思います。(PayPal支払とクレジットカード支払が使えたと思います。担当者とのやりとり購入手続きが完了すると、担当者から連絡があると思います。日本語で丁寧に対応してくださるので、指示に従って必要な追加データや修正点などあればメールベースでやりとりすることになります。納期おおよそ25日前後と考えておいた方が良さそうです。これは勝手なイメージですが、おおよそ基板製造に2営業日程度、実装に3営業日程度なのですが、部品調達にどうしても時間がかかっている(税関などの影響?最近は厳しいみたいです)ようです。実装を急いでいる場合は事前に部品を調達しておいて、国内から部品を発送したほうが実装期間の短縮には繋がるかもしれません。その分手間は増えますが。部品を送付する際の手順はまた気が向けば。プログラミングどうも、靖宗です。主な項目はコレで最後です。残るはテストの話とデプロイの話が残っていますが、残ってる話の方が重要そうな気がしますね。今回はたぶん短めです。PhoenixというかElixirの例外処理のお話に近いかも。ErrorsViewsの項目でErrorViewに関しては一回やりました。基本的に400とか500のエラーはテンプレート(404.html.eexとか)を用意しておけばPhoenixのコントローラがよしなにしてくれます。ビューのエラーはこのErrorViewで受けるとして、内部処理のエラーはPhoenixでは例外処理などが少々利用されているようです。ErrorsElixirの標準機能として、例外を定義するためのdefexceptionを利用してエラー処理を行っています。エラーを実装したいモジュール内部にモジュールを更に定義し、内部でdefexceptionを定義するように実装するそうです。router.exが利用しているPhoenix.Routerの内部実装が例としてドキュメントに記載されています。exceptionとして関数を実装すると、エラー処理の関数になるようです。(詳細はElixirのExceptionのビヘイビアを確認)Plugを実装する際にはPlug.Exceptionというプロトコルがあるようなのでそちらを利用するのが良いかと思います。例なども示されてますが、特殊ケースな気がするので、また利用機会があった際に追記したいと思います。今回は短めですがこんなもんで。プログラミングどうも、靖宗です。Tasksの項目を見ていきます。今回はEcto関連のコマンドから。TasksこのEcto周辺のコマンドですが、当たり前ですが--no-ectoとかしてない場合が対象です。ecto.createデータベースの作成を行うコマンドです。デフォルトならconfigやlib/hello/repo.exに記載したデータベースに作成するはずです。デフォルトでいいなら引数は要らないのでシンプルです。created.別の名前で定義してたりするなら、-rオプションでモジュール名を指定します。created.PostgreSQLのユーザー周りの説明は割愛します。(要望があれば書きますが)ecto.drop純粋にecto.createの逆だと思えば良さそうで、指定したデータベースからデータを消去します。使い方もほぼcreateと同じで、デフォルトなら引数は不要。dropped.-rでモジュール名を指定することも可能。ecto.gen.repoデータストアが1個じゃないケースもあると思います。いうときにこのecto.gen.repoで新しいリポジトリを作成できるそうです。デフォルトのリポジトリがHello.Repoで、別のリポジトリがOurCustom.Repoであるばあい、下記のようにして作成するようです。config/config.exsとあるので、configも修正されています。"localhost"...これは各環境で合わせて下さい。場合によってはdev.exsやprod.exsに記載してもいいかもしれません。ファイルの生成などは自動でやってくれましたが、リポジトリのワーカーをSupervisorで管理する必要があります。ドキュメントではlib/hello.exを編集、と書いてありますがたぶんlib/hello/application.exの間違いです。OurCustom.Repo]...これで大丈夫そうです。ecto.gen.migrationマイグレーションする準備をするのがecto.gen.migrationです。いうフレームワークにはよくある奴だと思います。Contextの章でもいじったファイルを作成するやつで、マイグレーションも実際の所はElixirのスクリプトを実行して行っていますのでそのスクリプトを生成するコマンドということです。基本的に何かのコマンドで自動生成されるのでそこまで出番があるように思えませんが、スキームの変更などをした場合には手動で作成する必要がありそうです。コマンドにマイグレーションファイル名を引数として渡します。priv/repo/migrations/20150318001628_add_comments_table.exsマイグレーション用のファイルがpriv/repo/migrationsに作成されます。タイムスタンプ_指定した名前.exsというファイルが作成されます。ファイルの中身は下記のようになっているそうです。endend基本的にコマンドで生成した場合は特に何も書かれていないはずです。このchange/0に記載された仕様をもとに、データベースを編集したりロールバックしたりします。commentsというテーブルを作成し、body、word_countというフィールド+タイムスタンプがあるスキームを追加したとします。このとき、マイグレーションファイルは下記のように編集します。endend...ちなみに、今はcreateを使いましたが、スキームを追加するのではなく変更する場合などはalterを利用します。基本的な使い方は上記の通りですが、デフォルトではないリポジトリを対象としたマイグレーションのファイルは、ecto.createなどと同様-rオプションでリポジトリ名を指定してやる必要があります。ecto.migrateマイグレーションファイルを作成したらすることは決まっています。マイグレーションです。ecto.migrateすることが多いのではないでしょうか。ecto.migrateをするとデータベース上のschema_migrationsというテーブルにマイグレーション日時のタイムスタンプが作成されるようです。rows)あとで見てみますが、ecto.rollbackなどでロールバックするときはこの辺の情報を利用してロールバックするようです。基本的に存在している全てのマイグレーションファイルを実行してマイグレートするコマンドですが、一応実行する個数を指定出来るようです(順番はタイムスタンプ依存?)-nか--stepのオプションを使用して実行するマイグレーションの個数を指定します。2-vのオプションを使用すると、指定したタイムスタンプのマイグレーションファイルのみを実行できるようです。20150317170448--toも同じ働き。ecto.rollbackロールバック、詰まり先祖返りできます。スキーム変更したけどやり直したい!とかいう場合に活用できそうです。それもコレもマイグレーションファイルにきっちり変更の仕様が記載されているおかげでしょう。0.0s何も指定しなければ全部戻ってしまいそうです。rollbackはmigrationと同様のオプションが取れます。-nでn個マイグレーションファイルを遡る、などでしょうか。こちらはオプションを大いに活用しそうです。Tasksおおよそ見ていったmixコマンドで事足りそうですが、「もうちょっとやってくれよ」「ここ毎回同じ事してる」という場合はかゆいところに手が届くmixコマンドが欲しくなると思います。いった需要に応えるがごとく、mixコマンドを作成できるそうです。lib/フォルダにmix/tasksディレクトリを作成していきます。lib/mix/tasks試しにhello.greeting.exというファイルを作成するとします。here.end慣習なのか知りませんが、基本的にElixirはディレクトリ名をモジュール名に適応するようです。(そもそもコンパイル時にチェックされる?すみません、この辺は勉強不足です。)なので、lib/ディレクトリ以下のmix/tasksディレクトリ下にあるhello.greeting.exなので、モジュール名はMix.Tasks.Hello.Greetingになります。Mix.Taskが宣言されています。これでmixのコマンドとして機能するのでしょう。help字に表示される説明文です。@moduledocはモジュールのドキュメントです。コレに関しては割愛します。run/1はmixで呼ばれたときに実行される関数です。ここではmixで実行されたときにシェルに文字列がプリントされるだけのようです。以上の仕様で、利用する為にはまずコンパイルします。helpにも表示されるようです。Phoenix実際に利用する場合は、ファイル名で実行するようです。Application!run/1では今のところ文字列を出力するMix.shell.info/1しか利用していませんが、アプリケーションを実行するにはMix.Task.run/1を利用すればいいようです。プログラミングどうも、靖宗です。phx.hogehogeのコマンドあたりの説明でしょうか。TasksPhoenixで使いそうなコマンド一覧があります。TASKS」を見れば良さそうです。幾つか簡単に取り上げてくれているので、一応目を通しておきます。phx.new言わずと知れたPhoenixプロジェクトを生成する際に使うコマンドです。--no-ectoや--no-webpackというオプションをつける事でEctoの実装を無くしたり、Webpackの実装を無くしたりできるそうですが、基本的には必要なんじゃないでしょうか。(APIサーバーとして機能するときはWebpackは不要?)実際に生成するプロジェクト名はスネークケースがいいっぽいです。task_tester相対パスでも絶対パスでもヨシ。phx.newでプロジェクトを生成するとアプリケーション名はプロジェクト名(上記だとtask_tester)になります。helloと--appオプションを利用するそうです。mix.exsでアプリケーション名が変更されています。"0.1.0",...このアプリケーション名を変更するとモジュール名などの接頭辞が変わるようです。:controller...--appオプションでhelloを設定したのでモジュール名がHelloから始まってます。lib/フォルダ以下のディレクトリやファイル名なども変わります。基本は--appでいいような気はしますが、「モジュール名の接頭辞だけ変えたい!」という場合には--moduleオプションで指定出来るようです。task_tester/lib/task_tester/repo.exmix.exsは下のようなかんじ。:task_tester,...アプリケーション名はtask_testerのままで、接頭辞のみがHelloとなっています。ややこしいことになりそうなので、変えたいなら--appを使った方が良さそうです。phx.gen.htmlこれはContextあたりで使いました。HTMLでのresource(router.exでresource指定する奴)を生成する際に便利なコマンドです。Webレイヤーの実装(コントローラ、ビュー、テンプレート)はもちろん、EctoのマイグレーションファイルやContextも生成してくれます。スキーマのリスト(項目名:型)です。test/hello/blog/blog_test.exsmix系のコマンドに一般的に言えることですが、次に何やったらいいか注釈がでてくれます。ecto.migrateルーティングの設定とマイグレーションしろよ!と出ています。基本これだけでリソースが作成できます。大体無いとは思うんですが、Contextいらないよ!って時(Bootstrapのテストなど、なんらかのテストに使う?)は--no-contextというオプションがあるそうです。活用法があまり思い浮かばないので省略。同様に--no-schemaオプションもあり。phx.gen.jsonこちらは使ったことはないですが、見た目からして上記のJSON版といったところでしょうか。test/hello/blog/blog_test.exsコマンドの仕様もほぼhtmlと変わらないようです。コマンド実行後の注釈はちょっと変わってきています。ecto.migrate:newと:editのアクションを除外しています。JSONなので新規生成画面と編集画面がないためでしょう。HTTPリクエストなどで直接:createや:updateを実行するということでしょう。htmlと同様に--no-contextと--no-schemaオプションもあり。phx.gen.contextContextの章でAccountsにCredentialを追加するときに使いました。lib/hello/accounts.exというように既存のContextに追記する形で生成されましたが、Contextのみ生成したい場合にも利用できるようです。主な使用方法はhtmlやjsonの時と同じ。phx.gen.schemaHTMLやJSONのリソースも作らず、Contextも不要というレアケース用?でもコマンドが用意されてるってことは必要なタイミングがあるのかも。コマンド引数はhtmlやjsonからContext名を省略したようなかんじ。phx.gen.channelChannelを生成するためのコマンド。Channelの章では手動で作成しましたが、コマンドでも生成してくれるようです。引数は純粋にチャンネル名のみ。test/hello_web/channels/room_channel_test.exsちゃんとメッセージも出してくれます。phx.gen.presenceこれはPresenceの章で使いました。一応モジュール名を指定できますが、省略すればPresenceで作成されます。lib/hello_web/channels/presence.exこちらもきちんと注釈を付けてくれます。phx.routesRoutingの章で利用しました。コマンドを実行すればルーティングルールが表示されます。TaskTester.PageController.index/2ルーティングファイルが2個以上あるときは、ルーティングファイル名を指定するとソイツだけみれるようです。phx.serverサーバーを立ち上げるコマンド。DoesNotExistオプションとかもあるけどよくわかんない。phx.serverを実行してやればよいそうで。help)iex(1)>これ地味に便利そうですね。assets)の名前にダイジェスト(MD5)を付与し、圧縮するコマンドだそうです。機能的にほぼデプロイ用(改ざん防止、転送量軽減)と考えて問題無さそうです。assets/ディレクトリにあるファイルに処理を行い、デフォルトではpriv/staticにコピーするようです。出力されるファイルの場所や処理するファイルの場所を指定したいときは引数で調整可能。'www/public'.コンフィグに:を指定すると圧縮するファイルの対象を変更できるようです。.css)役割的にconfig/config.exsあたりにでも書けば良いのでしょうか。デプロイは別の章でやるので、そのときにもう一度確認します。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。