2023-01-01から1年間の記事一覧

Kaigi on Rails 2023 に参加してきました!

Kaigi on Rails 2023に2日間参加してきましたー! RubyKaigi 2022に参加して以来のカンファレンスへの参加で、オフラインでの参加は今回が初めてでした。 Kaigi on Railsは今回が初めてのオフライン開催だったので、記念すべき日に立ち会えたことをとても光…

目指すエンジニア像

さらに追加/修正を行い、ブラッシュアップしていきますが、現時点での目指すエンジニア像をアウトプットをしておきます。 1〜3年後のエンジニア像 職種:バックエンドエンジニア Webアプリのパフォーマンスと安定性を向上させることを目指す。 DBへのアクセ…

SWRを使ってAPIをコールする

今回はSWRの簡単な使い方を習得しました。 Fetchで取得したデータを表示するサンプルアプリにSWRを導入して、UI/UXを改善しました。この改善で、APIからのレスポンスを待つ間に画面が真っ白になる問題を解消しました。 【参考】 SWR公式ドキュメント 修正す…

Reactでグローバルな状態管理を行う方法(Context APIの活用)

以前作成したメモアプリに「ログインボタン」を実装し、グローバルなstateを扱う最もシンプルな方法として、React の機能であるContext(コンテクスト)を学びました。 knkkojt6.hatenablog.com 概説 useState()によって管理される値はローカルなstateと呼ば…

ReactでSPAを作る

今回は、Reactでメモアプリ(SPA版)を作成しました。 このアプリはCRUD(一覧表示、詳細閲覧、追加、編集、削除)を実装していて、ページ全体のリロードなしでメモの閲覧、追加、編集、削除が可能になっています。 アロー関数とfunctionが混在していますが…

CLI版メモアプリを作成(Node.js)

今回は、Node.jsでメモの追加・一覧表示・参照・削除ができるメモアプリ(CLI版)を作成しました。 データの保存先にはsqlite3、JavaScriptのクラス構文を使って作成しました。 要件 1. メモの追加 標準入力に入ってきたテキストを新しいメモとして追加する…

自作npmパッケージの公開

自作npmパッケージを作成したので、公開/バージョンアップ/削除の方法をまとめておきます。 ちなみに作成したものは以下です。 www.npmjs.com npmパッケージの公開方法 1. プロジェクトのセットアップ プロジェクトフォルダの作成 package.jsonに必要な情報…

カレンダーのプログラムを作成(Node.js)

今回は、指定された年月のカレンダーをコンソール上に表示するプログラムを作成しました。 もし年月が指定されない場合、現在の年月が使用されます。 この処理の中心として、Luxonという日付・時刻操作のためのライブラリと、コマンドライン引数を簡単に扱え…

ESLintとPrettierの設定のところ

毎回ESLintとPrettierのインストールや設定方法が曖昧だったので、こちらにまとめておきます。 ESLint(静的検証ツール) JavaScriptのコード解析ツール。コードスタイルの指針に従った書き方をしているかチェックし、品質を保つのに役立つ。 Documentation …

バージョン管理ツールnvmについてのガイド(Node.js)

この記事では、Node.jsのバージョン管理ツール、nvmのインストールと使い方を説明します。nvmは異なるプロジェクトで異なるNode.jsのバージョンを使用する必要がある場合に、それぞれのバージョンを簡単に切り替えることが可能です。 1. nvmのインストール …

ESMを使う(Node.js)

今回はNode.jsでESM (ECMAScript Modules)を使う方法をまとめます。 Node.js v14以降であれば、ESモジュールを使うためのサポートが組み込まれている。 その1. package.jsonに"type": "module"を指定 package.json { "name": "my-esm-project", "version": "…

lsコマンドを作る オブジェクト指向版

以前、Rubyの標準ライブラリのみで実装したLinuxやUnix系のOSで使われるlsコマンドを、オブジェクト指向版として実装しました。 要件 オプションなし 最大3列で表示。 ファイルの並び順は以下のとおり。 1 5 9 2 6 10 3 7 4 8 -a、-r、-lオプションを併用で…

ボウリングのスコア計算プログラム オブジェクト指向版

以前、Rubyの標準ライブラリのみで実装したボウリングプログラムを、オブジェクト指向版として実装しました。 1. 要件(ルール) 1ゲーム=10フレーム 1フレーム=2投(例外あり) ピンの数は10本 1投目で10本倒したらストライク ストライクの場合は2投目は表…

Railsでテストを書く

今回はRailsで自動テスト(モデルテストとシステムテスト)を書く方法を学びました。 Railsのテストはminitest(ほとんどがtest-unitと同じ)がベースになっています。 Rails テスティングガイド なぜテストを書くのか? 品質管理:テストは、アプリケーショ…

Railsアプリにコメント機能を追加

今回は、既存のRailsアプリにコメント機能を追加しました。 ポリモーフィック関連付け(Polymorphic Association)...異なる種類のモデル同士を関連づける方法の一つ。通常、Railsでは、あるモデルと別のモデルを関連付ける際に、外部キー(foreign key)を…

Railsでユーザーフォロー機能を作る

今回は、TwitterやInstagramのようなユーザーのフォロー機能を実装し、多対多のモデルの関連付けを学びました。 ここでは「Ruby on Rails チュートリアル - 第14章 ユーザーをフォローする」を参考に実装しました。 これがまた難しかったのでまとめておきま…

ActiveStorage で画像アップロードを実装

今回はRails5.2から標準搭載のファイルアップローダーであるActiveStorageを使い、画像アップロード機能を実装しましたのでまとめです。 AWS S3などのクラウドストレージへのアップロードも設定で手軽に実装できるとのことですが、今回はクラウドストレージ…

deviseを使用し、ユーザー認証を実装する

Railsで作成したwebアプリケーションに簡単に認証機能(ログイン機能)を実装できるgemである「devise」を使用し、ユーザー認証機能とユーザーページを作成しました。 以下は作成済みの新規アプリケーションがあることが前提です。 学んだこと✏️ 1.devise ge…

kaminari を使ってページング処理を実装

今回はRailsで、以下のようなページング処理(ページネーション)を実装するためにkaminari gemを使用しました。 kaminariはこの処理を簡単にしてくれるrails pluginです。 以下は作成済みの新規アプリケーションがあることが前提です。 学んだこと✏️ 1.kami…

Railsのi18n を理解する(英語、日本語対応)

今回は、Railsにおける国際化(多言語化)を実現するための機能を提供するi18n(internationalization)について学習しました。 Railsでは、i18nを使用することで、アプリケーションで使用されるテキストメッセージやエラーメッセージなどを簡単に多言語対応…

SinatraでWebアプリの基本を理解する(データはDB保存に変更)

以下の記事で作成したメモアプリのデータ保存先をPostgreSQLに変更しました。 knkkojt6.hatenablog.com 学んだこと✏️ 1.pgのインストール RubyからPostgreSQLを使用するためのgemであるpgをインストール。 2.DBに接続、テーブルを定義 PG.connectでDBに接続…

SinatraでWebアプリの基本を理解する(データはファイルに保存)

Railsという巨大なフレームワークを学習する前に、Rubyを用いてWebアプリケーションを作成するためのフレームワークである「Sinatra」でWeb開発の基礎を学びました。 シンプルなメモアプリを作成しました。 RubyとSinatraではじめる Webアプリケーション開発…