NAKKA-Kの技術ブログ

技術に関する知見や考え方などを投稿します。

技術

Laravel5.7でAPIコントローラーをメソッドとしてテストする方法

LaravelでAPIやコントローラーをテストする方法を調べると、大体出てくるのはサーバーを立ち上げてルーティングに対してリクエストを飛ばしてテストする方法です。 今回はコントローラーのメソッドをそのままテストする方法について記述していきます。 なぜ…

Laravel5.7のServiceコンテナをモック化してする方法

Laravelに限らずですが外部のAPIを通信したり、重い処理を実行しているの部分があるのでテストの時はモックにしたい、といった場面は多々あると思います。 今回はServiceコンテナをモック化する方法をまとめていきます。 Serviceコンテナが使われているコー…

vimのGoの言語補助プラグインでUnknown functionバグが発生した

vimをupgradeさせた時に唐突にvimがエラーを吐き出し始めました。 エラーは吐き出すもののとりあえず動いてはいました。 ですがvim-goのある部分でエラーが発生しているようでした。 Error on startup: Unknown function: go#config#CodeCompletionEnabled …

webアプリケーション開発で個人的に重視しているテストの話

Slackでテストの話について盛り上がったので、webアプリケーション開発で個人的なテスト毎の優先順位などについて書きたいと思います。 早速本題に入りたいと思います。 Controller コントローラーの処理をホワイトボックステストする利点は少なく、ブラック…

Laravel5.7 [API開発]で権限設定をPolicyに任せて幸せになろう

LaravelでAPIを作っていると、例外周りの処理を良い感じにしてくれないので非常に大変です。 Policyをそのまま使っても403ページが返ってしまいますし、エラーメッセージの変更も困難です。 今回は権限判定をPolicyに移植して、かつ任意のエラーメッセージを…

Laravelを使ったAPI開発でController内のバリデーションをFormRequestに抽出して幸せになろう

私の開発しているプロジェクトでは Laravel 5.7 React/Redux を使って開発しています。 バックエンドのLaravelはAPIを実装しています。 LaravelでAPIを実装すると通常のwebで作るより処理が煩雑になる気がします。 その上、いろんな処理をControllerにまとめ…

Raspbianの固定ローカルネットワークアドレスの設定

IPの設定 まず/etc/dhcpcd.confを開きます。 ここで固定IPを設定します。 interface eth0 static ip_address=192.168.10.33/24 static routers=192.168.10.1 static domain_name_servers=192.168.10.1 8.8.8.8 ip_addressは設定したいRaspberryPiのIPアドレ…

Reactのプロジェクトを平成最後の大リファクタリングした話

平成の技術的負債を令和に持ち越したくないからリファクタリングしよう!!と思ったのが事の始まりでした。 短期的に開発速度を求めLintを後回しにしてしまったプロジェクトにLintツールを導入し、Reactのコードを全て綺麗にした時のツールや方法を書きます…

「ゼルダの伝説 ブレスオブザワイルド 」のUXについて考察しました

Nintendo Switch版「ゼルダの伝説 ブレスオブザワイルド 」(通称BoW)のUXについて考察してみました。 このゲームには素晴らしい仕組みや面白さなど多くの要素がありますが、今回話す内容はその中でもトップクラスに素晴らしい要素について書きたいと思います…

ロケール環境設定を良い感じに設定する方法

ロケール環境設定の詳細な意味は以下の私の記事を呼んでください。 qiita.com 結論 特にこだわりがないならとりあえずLC_ALLを設定しておけば大丈夫です。 export LC_ALL=ja_JP.UTF-8 ja_JP.UTF-8の部分は自由に変更してください。

「HeadFirstデザインパターン」のObserverパターンをGo言語で実装してみた

「HeadFirstデザインパターン」ではJavaを用いてデザインパターンの実装が解説されています。 これらのデザインパターンをGo言語で実験的に設計し直した実装を紹介します。 前回はStrategyパターンを実装しました。 nakka-k.hatenablog.com Observerパターン…

「HeadFirstデザインパターン」のStrategyパターンをGo言語で実装してみた

「HeadFirstデザインパターン」ではJavaを用いてデザインパターンの実装が解説されています。 これらのデザインパターンをGo言語で実験的に設計し直した実装を紹介します。 Strategyパターンとは 簡単な概要だけを説明すると、 複数の振る舞いをインターフェ…

「Go言語でつくるインタプリタ」を読んでインタプリタの身近さをを確認した

「Go言語でつくるインタプリタ」は、そこらへんのネットに転がっている超軽量なRubyで作ったLispインタプリタほど小さくなく、重厚な理論に関する論文や書籍のような難しすぎるものでもなく、インタプリタがどのように動作するのか理解するために十分で適量…

ダムを見てオブジェクト指向に思いを馳せた話

先日旅行に行った時、ダムを見てオブジェクト指向に思いを馳せたことをここにまとめてみます。 ダムについて 雨が少ない時に渇水してしまわないようにダムに雨水などを貯めておき、いつでも必要な時に水を確保できるようにする役割を担っています。 その後、…

「テスト駆動開発」を読んでTDDについてまとめた

kent beck 著、和田卓人 訳「テスト駆動開発」を読んだ感想を書く。 TDD(テスト駆動開発)とは 自動化されたテストを書く。 テストが失敗した時のみ新しいコードを書く。 重複を消去する。 テスト駆動開発とはこれらのシンプルな制約のもとになりたつ。 これ…