Yanonoblog!

こつこつと

2023-05-01から1ヶ月間の記事一覧

if文とelse句のネストを解消する

はじめに if文が多重にネストした構造 アンチパターン例 問題点 改善例: 早期リターン else句を早期returnに置き換え アンチパターン例 改善例 参考 続く… コメント はじめに 本記事では「良いコード 悪いコードで学ぶ設計入門」で学んだ内容と別途気になっ…

メソッドチェーンのアンチパターン

はじめに メソッドチェーン メソッドチェーンとは アンチパターン例 問題点 デメテルの法則 デメテルの法則 - 違反例 デメテルの法則 - 改善例 尋ねるな、命じろ 先程のコードをリファクタリング 参考 続く… コメント はじめに 本記事では「良いコード 悪い…

プリミティブ型執着

はじめに プリミティブ型執着 コード例 (アンチパターン) 問題点 コード例 (アンチパターン) 改善例 - ハッシュやオブジェクトを使用する 改善例 - 具体的なクラスとして設計する 参考 続く… コメント はじめに 本記事では「良いコード 悪いコードで学ぶ…

引数が増えることによる弊害

はじめに 多すぎる引数 例 - 仕様 例 - コード 問題点 改善例 参考 続く… コメント はじめに 本記事では「良いコード 悪いコードで学ぶ設計入門」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしています。 書籍に記載されている内容を順…

出力引数が引き起こす問題

はじめに 出力引数 - アンチパターン 低凝集を引き起こす 全く同じメソッドが別のクラスに実装される例 補足 - 出力引数 引数が破壊的に変更される内容が外部からわからない 改善例: 引数を変更しない構造にする - 割引の実装例 改善例: 引数を変更しない構…

共通処理クラスのアンチパターン(Common・Util)

はじめに 共通処理クラス(Common・Util) 例: 共通処理クラス 無関係な共通処理が雑多に置かれるアンチパターン 改善例: 専用のクラスを作成する 横断的関心事 概要 例 横断的関心事は静的メソッドとして設計しても良い 参考 続く… コメント はじめに 本記…

ファクトリクラスを用いたクラス設計

はじめに 手続き型言語の設計 初期化ロジックの分散 GiftPointクラス 初期化のケースによっては発生する課題 ファクトリメソッド ファクトリメソッドとは ファクトリメソッドを用いた改善例 ファクトリメソッドの使用例 参考 続く… コメント はじめに 本記事…

不変な値を活用してコード設計を行う

はじめに 可変と不変 適切な設計がされていないとどうなるか 再代入 アンチパターン例 改善例 不変にして再代入を防ぐ freezeメソッド 不変にするメリット 定数を定義したらfreezeを使う JavaScriptではconstを使用すれば良いだけ 参考 続く… コメント はじ…

デザインパターン(完全コンストラクタ・値オブジェクト)

はじめに デザインパターン(設計パターン) デザインパターン例 完全コンストラクタ どんな問題解決を解消するか 生焼けの解決方法 値オブジェクト どんな問題解決を解消するか 解決方法 例 参考 続く… コメント はじめに 本記事では「良いコード 悪いコー…

クラスの適切な設計2

はじめに クラスベースのオブジェクト指向設計 クラス単体で正常に動作するよう設計する 適切な初期化ロジック 正常な値のルールを定義 ガード節 参考 続く… コメント はじめに 本記事では「良いコード 悪いコードで学ぶ設計入門」で学んだ内容と別途気にな…

クラスの適切な設計

はじめに クラス モデルクラス コントローラークラス サービスクラス 適切な設計 HP管理に関するコード アンチパターン 改善例 damageメソッド recoverメソッド validate_valueメソッド (バリデーション) 参考 続く… コメント はじめに 本記事では「良いコー…

ソフトウェア設計 - 低凝集 (アンチパターン)

はじめに 低凝集 (アンチパターン) 主な原因 弊害 重複コード 修正漏れ 可読性の低下 低凝集を解消する モジュールやクラスの設計を見直す データと計算ロジックを統一的なインターフェースで結びつける ドメイン駆動設計の原則を適用する Railsにおける簡単…

AWS - Cloud9

はじめに Cloud9 機能 ブラウザのみで開発に必要な機能が統括されている(IDE) ペアプロがしやすい仕組み 料金 続く… コメント はじめに インフラの勉強で軽く調べた内容を書き留めておきたいと思いました。 本記事では、主にCloud9に関して調べた内容をまと…

インフラ - Cognito (AWS)の概要

背景 Cognito (こぐにーと) 概要 提供機能 - ユーザー認証 ユーザープール フェデレーション カスタマイズ可能な UI 多要素認証 (MFA) アダプティブ認証 提供機能 - セキュリティ ボット検出 セキュリティ侵害を受けた認証情報の保護 Cognitoによる認証・認…

インフラ - CloudTrail (AWS)の概要

背景 CloudTrail 概要 具体的に使える場面 始め方 料金 イベント履歴のログ記録 追跡の作成 無料枠でも受けられる恩恵 参考 続く… コメント 背景 インフラの勉強で軽く調べた内容を書き留めておきたいと思いました。 本記事では、主に監査ログに関して調べた…

React - Constantsの扱い方

背景 Constantsとは 課題 - 定数管理がまとめて管理されていないと可読性が悪い 使用方法 スタイルにも活用できる React以外でも一般的に使用される おわりに コメント プログラミングスクールのご紹介 (卒業生より) 背景 フロントのリファクタリングを行っ…

インフラ - CloudWatch (AWS)の概要

背景 監査ログ 監査ログの使用用途について 監査トレイルの確保 リアルタイムのモニタリング コンプライアンスの遵守 CloudWatch (AWS) CloudWatch Logs - ログの管理 導入方法 ログからどのような情報が得られるか エラーと障害の詳細 パフォーマンスの監視…

React (JavaScript) - someメソッドの概要と具体的な活用例

背景 Array.prototype.some() 概要 構文 戻り値 簡単な例 実用例 - some 要件 hasPlanContentsを定義 - /hooks/hoge/userPlan.ts someの解説 hasDashboardPlanContentsを定義 - /pages/home/Dashboard.tsx 続く… コメント 背景 フロントのリファクタリングを…

React (JavaScript) - mapとflatMap

背景 Array.prototype.flatMap() 概要 多次元配列 構文 - flatMap Array.prototype.map() 概要 構文 - map flatMap()とmap()の違い 続く… コメント 背景 フロントのリファクタリングを行った際に軽く調べた内容を書き留めておきたいと思いました。 本記事で…

Rails - group_byメソッドの仕組みと活用例

背景 概要 解説 - group_byでグループ化 group_byで得られる結果値 実用例 実現するUI おわりに コメント プログラミングスクールのご紹介 (卒業生より) 背景 バックエンドの実装を行った際にgroup_byメソッドについて色々調べたため内容を書き留めておきた…

Rails - JSONの解説とjbuilderでのAPI構築

はじめに Rails APIでJSONを返す JSONの構築 jbuilder 拡張子 コード例 app/controllers/api/v1/users_controller.rb app/views/api/v1/users/index.json.jbuilder 部分テンプレート app/views/api/v1/users/_user.json.jbuilder app/views/api/v1/users/ind…

Rails - クレカ決済機能実装に関する調査

はじめに クレジットカード決済機能 手数料 決済プラットフォーム Pay.jp 利用方法 実装の想定 - Pay.jp 続く… コメント はじめに 本記事では「パーフェクト Ruby on Rails」で学んだ内容と別途気になって調べた内容や知識も含めアウトプットしています。 書…

Rails - 例外設計

はじめに 例外設計 異常系のエラーを分類する 業務エラー システムエラー システムエラーのハンドリング 業務エラーの場合 実装時の注意点 システムエラーの場合 実装時の注意点 途中でエラーが発生しても続行したいケース 共通処理をメソッド化 参考 続く… …

Rails - rescue_fromについて

はじめに rescue_from rescue_fromとは resucue_fromを用いたエラーハンドリングの仕方 application_controller.rb app/views/layouts/errors.html.erb 参考 続く… コメント はじめに 本記事では「パーフェクト Ruby on Rails」で学んだ内容と別途気になって…

Railsメモ - resourcesのオプション

はじめに resourcesのネスト 通常のresources resourcesをネストする resourcesをネストする - メリット resourcesをネストする - デメリット member collection 使い分け - collectionとmember 続く… コメント プログラミングスクールのご紹介 (卒業生より)…

Docker環境のPostgreSQLにアクセスする

はじめに Docker環境のPostgreSQLにアクセスする手順 $ docker ps (DBコンテナのNAMESを確認) $ docker exec -it DB名 bash (Docker環境のDBにアクセス) -itオプション - インタラクティブに接続する $ psql -U postgres -l (DBをリスト表示) $ psql -U post…

Dockerの設定周りと基本コマンドの解説

はじめに docker-compose.ymlとは Dockerコンテナの操作に使用される主要なコマンド Docker ComposeとDockerコマンドの違い Dockerの構築する際の参考 docker-compose.yml - 記述例と解説 Dockerfileとは Dockerの起動の流れ frontendコンテナのDockerfile -…

Dockerでアプリケーション構築 - Rails7 × Next.js

はじめに 1. 初期ファイルの準備 シェルスクリプトを作成し実行 2. docker-compose.ymlに記述を加える 3. frontend/Dockerfileに記述を加える 4. backend/Dockerfileに記述を加える Gemfileにも記述を追加 5. Next.jsアプリケーションを作成する package.jso…

Railsのモデルのコールバックやメソッド、クラスについて

はじめに ActiveRecord::Relation 概要 - ActiveRecord::Relation 動作について - ActiveRecord::Relation Scope 概要 - scope 使用例 - scope 注意点: nilとなる場合に正しくnilが返されない - scope 多対多の関係 throughオプションによって使えるようにな…

データベースのお引越し - heroku バックアップを取る

背景 DBのバックアップを取る herokuに接続 バックアップ バックアップ - 拡張子をSQLファイルに変換 おわりに コメント プログラミングスクールのご紹介 (卒業生より) 背景 Twitter APIの有料化に伴い、個人開発したサービスの運用を変えることにしました。…