メモ書き

開発からコードレビューまでのフロー

概要 コードレビューのフローを説明するための記事です コードレビューの必要性 ドメイン知識の有識者から見落としを発見してもらうことで抜け漏れをある程度防止する 有識者からのレビューにより教育の側面がある 開発からコードレビューまでの流れ プリレ…

CI/CD

CIとCDとは CI/CD (継続的インテグレーション) は問題を早期に検出し、運用環境により迅速にリリースすることを主な目標として、アプリケーションのビルド、テスト、および展開を自動化する手法です。 CIとCDの違いと目的 違いはカバー範囲(CIは自動テスト…

エンジニアとして業務を行う上で意識しておきたいこと

準備編 やらないといけない作業を書き出し、工数を見積もる 箇条書きで書き出して、知見のある方と議論してみる とにかく小さく始める どうすればシンプルになるのかを考える 広げすぎると工数がかかりすぎて、エンジニアの負担が増えるか開発が完了しない状…

LaravelでMinIOを利用する備忘録

概要 AmazonS3クラウドストレージサービスと互換性のあるAPI メリット ファイルアップロード機能などが存在する場合、ローカルでもS3に保存するテストが書ける イメージ Laravel × MinIOの環境構築 docker-compose.yml minio: image: minio/minio:RELEASE.2…

Effective Go 備忘録

Go

Effective Go Effective Goに記載されている中でも特に気になったものだけをまとめる フォーマッティング フォーマットを行うことでソースコードの可読性が上がるが、チームや会社ごとに異なる Goでは標準で自動フォーマットを行なってくれるため、Goを利用…

コードレビュー観点まとめ

コードレビュー 誰かが作成したソースコードを他者がレビューすることで、問題のある記法やバグがないかを確認する作業 観点(設計・機能・複雑さ・テスト・命名・コメント) そのコードは設計が良く、システムに適しているか? コードは作者が意図した通り…

【振り返り】2022.4.18 - 2022.4.24

内容 ポートフォリオサイトを作成しました 工数見積もりに Instagantt を使い始めました Slack で Todo 管理を始めました 業務 API設計、DB設計を行いました インシデントに3回出動しました AppsFlyerのBQ連携を作成しました ポートフォリオサイトの開設 モ…

MySQLのインデックス

INDEXとは ソート済みのデータの複製(RDBMSからデータを高速に取り出すための仕組み) 複数のインデックスを作成していても、1回のクエリ実行に使用できるインデックスは1つ(オプティマイザが決定) 複数の検索条件がある場合はマルチカラムインデックスが…

BigQueryにおけるカラムのデータ型変更

はじめに MySQLのようにSQL文1発で変更できるようになれば優しい世界が待ってる データ型の変更方法 以下のようにすることで特定のカラムだけキャスとして、他のデータも一緒にインサートすることができる(フィールド多い時に便利) SELECT * except(dma) S…

yabai導入したらかなり快適になった

yabai(タイル型ウインドウマネージャー) amethystと迷ったけど、設定も楽でdotfilesで管理できるのでyabai使ってみた。(ぶっちゃけ amethyst 入れたけどわからんかった...) https://github.com/koekeishiya/yabai 導入背景 これまでウィンドウの移動を面…

4月1週目 技術まとめ

読んだ記事 AWS、オンラインロールプレイングゲームでAWSのソリューション構築を学べる「AWS Cloud Quest」公開。実際にプレイしてみた macOS向けのLaravel開発環境「Laravel Valet 3」がリリース。サイトごとにPHPバージョンが指定可能に これはLaravelで複…

BigQueryのテーブルを作成する際に最初に検討すること

はじめに BigQueryとはいえデータ量が多いと時間はかかるので、速度がある程度求められるものに関してはパフォーマンスチューニングの検討をした方が良さそう BigQuery を最大限に活用するための重要なベスト プラクティスの 1 つが、テーブルのパーティショ…

GOPATH / Go Modules

目的 GOPATHのデメリットや、Go Modulesのコマンド周りをあまり理解しておらず、無意識にgo mod tidyをしていたので、このタイミングを機にGoを基礎から理解しようという試みで記事を書きました。 基礎知識 GOPATH:外部パッケージなどが保存されるパス src…

2022年3月の振り返りと4月の目標

3月の振り返り 判定 分類 目標 結果 達成 ライフスタイル 引っ越しをして作業専用の部屋を作る 1K → 2DK 達成 業務 1Qのタスクをリリース リリース完了 引っ越しをして作業専用の部屋を作る これまでアクセスを優先して1Kの激狭部屋に住んでいたのですが、フ…

RDBMSにおけるcreated_at, updated_atの使用用途と必要性について調べる

なぜ調べるのか? created_atとupdated_atは理由もなく、あって当然のものだと思い込んでいた アプリケーション側で作成したエンティティにcreated_at, updated_atを詰め込む不自然さを感じていた(DBのスキーマに引っ張られすぎてる感) type Account struc…

Mac純正のターミナルからiTerm2に乗り換えた

なぜ乗り換えたの? シンプルに試してみたかったから 仕上がり やったこと Oh-My-Zshでいけてるターミナルに変更 zsh-autosuggestionsで補完候補を出す ショートカットでiTerm2を開けるようにする 感想 補完機能やショートカットは結構作業効率化になった。d…

ECSがざっくりわかる

ECSとは? Dockerコンテナ実行環境を提供 これまではEC2上にDockerを載せる必要があった(これは前の会社でやってた) EC2インスタンス上で実行されるコンテナのことを「Task」、EC2インスタンスのことを「Cluster」と呼ぶ 構成要素 クラスタ サービス タス…

インフラ系の用語

用語 用語 意味 可用性 システムやサービスが利用できる時間の割合。可用性99%など 冗長化 同じシステムを障害発生時の予備として別途用意しておく方法 スケールアップ サーバーのスペックを上げること スケールアウト サーバーの台数を増やすこと スループ…

embulkの現状理解

embulkってなに? ログ収集でよく利用されるfluentdのバッチ版のようなツールです。データベースやストレージからデータを吸い出し、別のデータベースやストレージにロードできます。YAML形式で設定ファイルを書くことで、その設定を元にEmbulkがデータを同…

gRPCのメモ

gRPC Googleが開発したRPCフレームワークで、基本的にはバックサーバー間通信に使用されることが多い。そのためマイクロサービスなどでよく使用されている。フロントエンドとバックエンドの通信にgRPCを使用したい場合はgRPC-WEBというものを使用する必要が…

自分だけ古いバージョンのnpmを使用していて先祖返りさせてしまった

発生したこと チームで自分だけnpmのバージョンをアップデートしておらず、lockfileVersionを2から1に上書きしていたため、他の人がマージする際に夥しい量の差分が出る 対策 チームで共有されているドキュメント(README.md)などをしっかり読んで、バージ…

TypeScriptで押さえておきたいメモ

変数末尾の「!」はなんぞや Non-null assertion operator この変数はundefinedやnullになることはありません、と教える記述 TypeScriptの変数の末尾の"!"(エクスクラメーション/感嘆符)の意味 - Qiita new GoogleSpreadsheetService(process.env.GOOGLE_SPRE…

AWS CLIの設定

手順 コンソールからIAMユーザーをAWS 認証情報タイプ「アクセスキー - プログラムによるアクセス」で作成 ダウンロードしたCSVに記載されている認証情報を~/.aws/configに記載する(*1) AWS CLIコマンドで確認(*2) *1 vim ~/.aws/config [profile XXX] a…

SQS備忘録

SQSとは? フルマネージド型のメッセージキューイングサービス メッセージ数に応じて自動的にスケールするため、事前計画が不要 使用料に対して課金される コンシューマーがメッセージを取得しに来るポーリング方式(SNSがプッシュ方式、GCPのpub/subは両方…

Bash使うときに気をつけること

Bashとは Unixシェルかつコマンド言語 他の有名なプログラミング言語とは少し記法が異なっていて、最初は「?」ってなる 記法 1. ドル記法($()) コマンドをネストする際に便利 echo "現在のディレクトリは、$(basename $(pwd))です" echo $(pwd) echo "現…

Goにおけるモジュールの管理

管理方法は2つ GOPATH モード モジュール対応モード GOPATH モード 環境変数 GOPATH で指定されたディレクトリ以下を探す 複数のプロジェクトで同じディレクトリを見ることになるので膨れ上がる モジュール対応モード プロジェクトごとで指定されたディレク…

npmまとめ

NPMとは Node.jsのパッケージ(Package )を管理する(Manager)ツール 目次 コマンド一覧 インストールオプション デフォルトオプション ライフサイクルスクリプト コマンド一覧 npm ci npm install npm ci npm installと同様にパッケージをインストールす…

A Tour of Goやってみた

Packages phpのようにルートからパッケージまでの経路を記述するのではなく、親パッケージの名前を書くだけで良い 親パッケージの名前が重複した場合どうなるのか? Imports a tour of goはfactored import statementを推奨している Exported names javascri…

phpspreadsheet導入時にエラーが起きた時の対応

やりたいこと phpspreadsheetを導入したい $ composer require phpoffice/phpspreadsheet 前提 Dockerを使用 イメージはaplineベースの「php:fpm-alpine3.13」を使用 エラー内容 bash-5.1# composer require phpoffice/phpspreadsheet Using version ^1.18 f…