The Design of Web APIsの読書感想文(7章まで)

www.manning.com The Design of Web APIsは我流でAPI設計をやってしまっていた自分にとって良書でした。 知らなかった事・気がついた事等を忘れないように箇条書きにしました。 7章以降も少しずつ読んでいこうと思います。 ch1: what is api design? APIの基…

「Rubyで実装するフルスクラッチ三目並べ」という名前でgitbook書いてみました

1 ~ 2年前に研修用に作ってWEB公開するのを忘れていたので、さっき公開してきました。 今見ると結構荒削りな所がある(変数名とか内容とか)ので気が向いたら直していこうと思います。 kashiwara.gitbook.io 対象は誰なのか プログラミングに興味があって基礎…

HaskellでLeetCodeのTwoSumを解いてみた

転職活動を終えて時間に余裕が出てきたので、最近Haskellで遊んでいます。 LeetCodeのTwoSumをHaskellで解いてみました。 TwoSum 今回トライした問題 leetcode.com レポジトリ Haskell勉強用に作ったレポジトリです。 docker-compose upで環境が立ち上がりテ…

I learn English by using ChatGpt at latest

背景 今、ChatGptを使った英語学習がいい感じになる、とチームで話題になっています。 そこで、業務に出てきた調べ物をChatGptに英語で聞いてみたところ結構勉強になりました。 その時の質問に関してまとめました (練習のために今回は英語で書きました) use …

プロダクトマネージャーのしごとを読んだ

背景 先日リファレンスチェックを実施していただき自分の弱みに触れる時間があった。 どうも自分は技術思考にかなり寄っているらしく 緊急対応然り何かトラブルが発生した場合に、人とコミュニケーションを取って解決するのではなく、技術で突破しようとする…

転職活動を終えました

3ヶ月ほど転職活動をして2社から内定をいただきました。 長かったしめっちゃ疲れました。 その時のことを色々と箇条書きできたらと思います。 転職エージェント 主にスカウトが飛んでくる系のサイトを利用した(Forkwell, Findy) 明確にやりたい事があるなら…

Rails7からDBレイヤーを剥がす

RailsからDBレイヤーを剥がす手法について記載します 環境 Rails 7.0.3 bin/setupファイルを修正 bin/setupファイルのdb:prepare部分を削除します # 以下2行を削除かコメント化 puts "\n== Preparing database ==" system! "bin/rails db:prepare" config/e…

getOrElse関数が便利

最近、fp-tsについて調べる機会がありました。 github.com TypeScriptで関数型言語っぽい事が出来るライブラリです。 プロジェクトに盛り込むことも考えましたが 現時点ではメリットが少なく導入には至りませんでした。 調べていく中でgetOrElse関数を見つけ…

今年採用してよかったドキュメント類

今年からプロジェクト内で属人化を防ぐために ドキュメントの運用文化をプロジェクトに取り入れてきました。 採用してよかったドキュメント類をまとめていきます。 ユーザストーリー 取り入れた理由 何のために存在しているのかが理解できない機能が増えてき…

Railsで組んでるシステムにCQRSのQ入れたら結構良かった

Railsで組んでるシステムにCQRSのQ層を導入しました。 その事について記載します。 問題点 Q層を導入する前に発生していた問題点について記載します。 戻り値の中身がコード上で判別できない 例えば以下のようなコードです。 class PostRepository class << …

システムの権限処理を改善する

「プロジェクト内の権限管理が扱いづらいので改善したい」という要望が上がり"簡単な権限処理"に関して改善しました。 その時のことを備忘録として記載します。 簡単な権限処理と難しい権限処理 冒頭で"簡単な権限処理"について対応したと記載しました。 本…

docker-composeを使ってマイクロサービスをやってる時に便利だったデバッグ手法

現在のプロジェクトで便利なデバッグ手法出てきたので備忘録として記載します。 今回例に挙げるフォルダ構成とdocker-composeファイルを下記に記載します。 フォルダ構成 workフォルダがrootでその下に、それぞれのマイクロサービスのdocker-compose.ymlがあ…

MUI dataGridのfiled部分を型チェックする方法

MUI x Ts x Reactで最近開発を進めています データの出力部分にMUIのDataGridを使っているのですがfiledに型が効かないので拡張して対応しました mui.com MUI DataGrid DataGridは便利で素晴らしいコンポーネントなのですがfiledに型が効きません。 ※ MUI da…

goのWebFrameWork "gin" を使ってみた

概要 goのWebFrameWork "gin" を使ってみた。 github.com DB(MySQL)からデータを取ってきてJSON化させて返却するところまで実装。 ソースコード 以下のサンプルが実装されています。 gormの設定 sql-migrateの設定 migrationコード seedコード gormを使った…

canvas.getContext('2d')をjestする

概要 canvas.getContext('2d')が使われているファイルをjestする方法を下記に記載します。 下記のようなコードをjest実行時に動かせるようにします。 this.canvas = document.getElementById('gray-scot-model-canvas') as HTMLCanvasElement const ctx = th…

Jestを使ってClassのメソッドを一部Mock化する方法

概要 Jestを使ってClassのメソッドを一部Mockにしてテストを回す方法を記載します 結論 prototypeを使い該当メソッドを対象のテストファイルにてjest.fnで更新します // prototypeを使用してメソッドをmockに更新 Class.prototype.method = jest.fn() // 戻…

ShellScriptの条件式まとめ

概要 ShellScriptで使う条件式をまとめました。 コピペ用。 ソースコード github.com 数値の条件式 角括弧 [ ] # 等しい [ $value -eq 1 ]; # 等しくない [ $value -ne 2 ]; # ~より上 [ $value -gt 0 ]; # 以上 [ $value -ge 1 ]; # 〜より下(未満) [ $va…

Nimのiteratorの使い方

概要 Nimのiteratorの使い方を下記にまとめる ソースコード github.com 1行目~3行目 type Animal = object name: string age: int Animalを定義。 要素は2つで、nameとageのみ。 5行目~6行目 type AnimalBox = object animals: seq[Animal] AnimalBoxを定…

NimでFactoryパターンを実装する

概要 以前からfactory(又はstrategy)をNimで実装できないかということを、ちょこちょこ調べていた。 今回、実装に成功したので、そのことを以下に記載する。 環境 Nim Compiler Version 1.4.0 [Linux: amd64] ソースコード github.com ソースコードの説明 …

Rubyでspecifiactionパターンを実装

概要 Rubyでspecifiactionパターンを実装した。内容をいかにまとめる。 ソースコード github.com specificationパターンとは specificationパターンとは、「複雑な仕様部分を外に切り出す事が出来る」ソフトウェアデザインパターン。 オブジェクトに対する「…

Railsのapp以下のファイルで自動読み込みが効かない時

概要 このトラブルは、Service層などの新たな設計をappディレクトリ配下に実装する際によく直面する 自動読み込みが効いていない時に確認する項目を下記に記述する ActiveSupport::Dependencies.autoload_pathsの確認 自動で読み込んでくれるファイルパスが…

Capybaraの不安定なシステムテストの症状とその対策

概要 Capybaraを使った時の不安定なシステムテストの症状とその対策について下記にまとめます。 環境 rails: 6.0 capybara ランダムなテストデータによって落ちるテスト 症状 ランダムにテストデータが作成されている時に発生します。 例えば、テストユーザ…