NAKKA-Kの技術ブログ

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

技術

ここ2ヶ月で実施したリモート輪読会の手法やtipsについてのまとめ

今の時期、基本的にリモート以外でイベントを開催するのが難しい状況です。 逆にその状況を逆手にとってみんなでリモート輪読会をやりましょう! 私はここ2ヶ月程度で3グループ3冊分のリモート輪読会を実施しました。 それぞれの輪読会によって複数の方法を…

リモート輪読会で 「オブジェクト指向設計実践ガイド」を読んだ時のやり方と感想

このコロナの影響もあったのですが、もともと遠隔でやる予定だったのでZoomを使ってリモート輪読会を実施しました。 今回読んだ本は以下の「オブジェクト指向設計実践ガイド」です。 ですが実はもう1人のメンバーが読んでいたのは最新の原書で、Rubyのバージ…

Elastic BeanstalkのMultiContainer環境にRails+Nuxtをデプロイする

Elastic BeanstalkでMultiContainer環境を構築し、RailsとNuxt.jsをデプロイします。 今回の環境 ElasticBeanstalk(Multi-container Docker) Rails 5.2 (ruby:2.6) Nuxt.js 2.11 (node:12-alpine) PostgreSQL (RDS) 目次 今回の環境 目次 初期設定 AWSのアカ…

vuex-persistedstateを使っていると、ストアを変更しても前のデータがlocalStorageに残って困る

VueやNuxtのプロジェクトでよく使われるvuex-persistedstateというストア永続化プラグインがあります。 このプラグインはストアの内容をlocalStorageに永続化してくれるものです。 問題 ストアの内容を永続化し、ページを開いた時ストアに再展開してくれるの…

DockerとNuxtのSSRでConnectionRefusedが発生する問題の原因を解説する

Docker上でAPIサーバーとNuxt(SSR)を動かす環境で、connection refusedが発生したりしなかったりする問題に遭遇しました。 今回はその問題の発生原因について書いていきます。 一言で どういうこと? 前者のパターン 後者のパターン 何が問題? 解決策 まと…

env設定忘れでDBが動かず、Dockerを初期状態から立ち上げた

Dockerでpostgresを起動。 同じくDockerでRailsを起動しdocker-composeで接続。 ActiveRecord::NoDatabaseError FATAL: role "myuser" does not exist docker-compose up -dした時に環境変数をセットするのを忘れていました。 postgresにボリュームを設定し…

独立したGitリポジトリのマージをすると発生するfatal: refusing to merge unrelated historiesの解決

GitHubでリポジトリを作る。 ローカルでリポジトリを作る。 その後、マージしないとと思い立ちgit pull origin masterをすると、fatal: refusing to merge unrelated historiesが表示されてしまいました。 そんな時はということで、git merge --allow-unrela…

GoModuleを使ったgo getができない問題を解決する

$GOPATH以下ではデフォルトでGO111MODULE=ofになるため依存パッケージがインストールされておらず、明示的にGO111MODULE=on go get -uをする必要があった。 参考 Go Modules

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(テスト駆動開発)とは 自動化されたテストを書く。 テストが失敗した時のみ新しいコードを書く。 重複を消去する。 テスト駆動開発とはこれらのシンプルな制約のもとになりたつ。 これ…