Vapor Trail

明るく楽しく元気よく

3月に読んだ本

並外れた行動力で自らチャンスを掴み取ってきたことがわかっておもしろい。
外国人を見つけては進んで話しかけて英語を磨いたり、米軍の施設のゴミ箱から拾った論文がきっかけでシカゴ大学の教授の目に留まったり、週末に九州から東京まで往復して大学院に行かずに博士論文を書いたり、正攻法で研究をしないことなど、リスクを取ることを恐れない人となりがわかる。なにより発想がすごい。

中学3年生のときに社会科見学で耶馬渓にある青の洞門に行ったときのエピソード。和尚は頑張ったけど間違っている、なぜなら洞窟づくりに20年かかるとして、自分なら最初の10年を掘るための道具づくりに、次の10年を作業に費やす。そうすれば洞窟と洞窟を掘る道具を残せる。和尚は洞窟しか残せなかった。と感想文に書いて最悪の評価を受けたらしい。

 

 

全盲の弁護士 竹下義樹 (岩波現代文庫)

全盲の弁護士 竹下義樹 (岩波現代文庫)

 

 日本で初めて全盲で司法試験に合格した方の話。たまたまNHKの番組を観て興味をもったので読むことにした。点字受験を認めさせたり国会で点字受験の時間延長の請願したり、今の時代自分たちで権利を勝ち取るみたいな考えがないので、新鮮で面白い。

途中で諦めそうになりながらも、アルバイトをして子どもを持ちながら司法試験を9回受けた執念と意志力はすごい。途中で諦めそうになりながらも、周りが支援し続けてくれていたのは本人の性格の明るさの賜物なのだろう。弁護士になってからの生活保護訴訟では、裁判が長期間に及ぶため弱者を助けるというよりも鼓舞するような姿勢は、あなたが頑張るなら全力でサポートしますといった感じで励まされた。

ASINとJANコードを変換するサイトを作った

LaravelとVueの勉強を兼ねて作ってみた。 MWS-APIPA-APIを使用すれば、ASINからJANコード(EANコード)を取得できるがAPIキーが必要なので、何もなくてもASIN・JANコードの相互変換できるサイトを作った。
需要は多分ない。

asin-to-jan.firebaseapp.com

Laravelはレイヤードアーキテクチャっぽく作った。この規模だと必要ないんだろうけど練習も兼ねてやってみた。 Controller→Service→Repository→Eloquentみたいな感じでサービス層にロジックを集めたが、結局RepositoryからはModelのオブジェクトを返してるので、やろうと思えばService層でDB更新したりできるから、あんまり意味なかったのではという気がしている。RepositoryでDTOに詰め替えればいいような気もするが、カラムが多いので詰め替えるのもめんどくさい。結局、ORMとどう両立させればいいのかよくわからない。

サービスコンテナとMockeryに感動した

サービスコンテナとMockery使ったらめちゃくちゃテスト書きやすくて感動した。調子に乗ってモック使いまくってたら、テストは通るのにエラーになるみたいな本末転倒なことになったので、やっぱり面倒くさくてもなるべくモック使わないでテストするべきだった。モック使いまくって自分の思い込みで作ったテストみたいな感じになってしまった。

Nuxtを使う

Laravel MixでbladeとVueを簡単に使うことができるが、Nuxtを使ってみたかったので、フロントエンドとバックエンドを分けることにした。作っている最中はこれLaravel Mixで十分だったのでは・・・という気しかしなかったが、Firebase Hostingで一瞬でデプロイできて、ドメインを取る必要もないので結果的に分けてよかったと思った。デザインセンスがないのでNuxt + Vuetifyで楽をすることにした。Vueはほぼ初めてだったけど、途中で親子コンポーネントはpropsで親から子にデータ渡してemitで子から親にデータを渡すことを知って、なんとなくコツを掴んだ。でも再利用可能なコンポーネント作るのムズくない?と思った。

Dockerで構築

バックエンドはさくらのクラウドで一番安いサーバを借りた。 herokuとかで無料でやりたかったが、APIでガンガンにデータを取ってDBに貯める(使用するAPIではJANコードからASINの検索ができないのでDBにJANコードとASINのデータを持っている必要がある)ので、50Gくらいスペースが欲しかった。今まで開発環境でしかDockerを使用したことがなかったが、パスワードとか個人情報とか扱わないので思い切ってDockerでデプロイしてみた。nginxのSSL化に詰まったりしながらも割と簡単に公開できた。 ufwのこととか、portとexposeの違いとか色々知れたが、Dockerの知識というかLinuxとネットワークの知識が全然足りないなと思っている。。。
特に生半可な知識でDocker使っているのでセキュリティ関係が怖い。玄関の鍵閉めたけど窓全開でしたみたいなことが起きてそうで怖い。

reCAPCHTA

個人的にはお問い合わせとかアンケートはGoogle Formのリンク貼れば十分だと思っているが、reCAPTCHAを使ってみたかったからお問合せフォームを作った。前はパネルからバスの画像とか信号機の画像とか選ぶ必要があったけど、今は必要ないみたいです。

作ってみて

作ってみてというか最近すごい思うのが根拠はないけどWebアプリの仕事って徐々に無くなるのではみたいに思っていて、モバイルアプリ作ってみようかなと思ってる次第ですね。

cargo install batしようとしてエラー

qiita.com

この記事に影響受けてカラフルで見やすいコマンドいっちょ使ってみっか!と思ってRustインストールしたまではいいけど、意気揚々とcargo install batコマンド打ったらエラーになった。

環境

Linux 5.3.0-40-generic #32~18.04.1-Ubuntu

error: failed to run custom build command for `onig_sys v69.2.0`

Caused by:
  process didn't exit successfully: `/tmp/cargo-installG3HylE/release/build/onig_sys-7d9cf1b204cf2143/build-script-build` (exit code: 101)
--- stdout
cargo:warning=couldn't execute `llvm-config --prefix` (error: No such file or directory (os error 2))
cargo:warning=set the LLVM_CONFIG_PATH environment variable to a valid `llvm-config` executable

--- stderr
thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any valid shared libraries matching: [\'libclang.so\', \'libclang-*.so\', \'libclang.so.*\'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', src/libcore/result.rs:1188:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `bat v0.12.1`, intermediate artifacts can be found at `/tmp/cargo-installG3HylE`

Caused by:
  build failed

sudo apt install llvm でエラーが出なくなった。

error: failed to run custom build command for `onig_sys v69.2.0`

Caused by:
  process didn't exit successfully: `/tmp/cargo-installm6GLXU/release/build/onig_sys-7d9cf1b204cf2143/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any valid shared libraries matching: [\'libclang.so\', \'libclang-*.so\', \'libclang.so.*\'], set the `LIBCLANG_PATH` environment variable to a path where one of these files can be found (invalid: [])"', src/libcore/result.rs:1188:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `bat v0.12.1`, intermediate artifacts can be found at `/tmp/cargo-installm6GLXU`

Caused by:
  build failed

sudo apt install libclang-dev でエラーが出なくなった。

batコマンドはうん見やすい。