これを使います。 castwide/vscode-solargraph: A Visual Studio Code extension for Solargraph. ただし、この拡張を入れるだけでは動作しません。まずは […]

Rubyでandとかorの使い方

プロを目指す人のためのRuby入門[改訂2版] 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plus) | 伊藤 淳一 |本 | 通販 | Amazon Ruby の文法に and と […]

Rails7になってJavaScript周りが色々変わって、従来どおりの `<%= link_to “Sign Out”, destroy_user_session_path, method […]

Rails のコンテナにアタッチするために docker-comose.yml に tty と stdin_open を追加する。 `docker-comose up -d` でコンテナを起動して、以下のコマンドでコンテ […]

AWS CDK に触れてみるtest

AWS CDK に触れてみた。AWS CDK とは AWS Cloud Development Kit の略称で、日本語にすると AWS クラウド開発キットのこと。AWS CloudFormation の設定は通常は J […]

AWS CLI を使ってみる

業務で言われるがまま使っていた AWS CLI を理解してみた。AWS CLI を使うと、Mac ローカルから AWS にアクセスが可能になり、コマンドラインで様々なことができるようになる。そのためにはまずユーザー登録が […]

IE11 が対象外になったことで JavaScript は webpack などのモジュールバンドラ無しで書いてもブラウザで動作するようになりました。ウェブアプリなど React を利用するシーンでは、まだまだモジュール […]

Lambda 実行ロールの作成

AWSLambdaBasicExecutionRole ポリシーを適用した IAM ロールを作ります。ユーザーではなくて、ロールを作る。 IAMコンソール画面から、ロール一覧を表示して、ロールを作成へと進みます。ロールを […]

AWS Lambda を利用する必要が出てきそうだったので学習。まずはアクセス権について。Lambda には3つのアクセス権が関与します。 Lambda 関数の登録権限 (開発者用の IAM ユーザー) Lambda 関 […]

per_page パラメータで設定できる数値は1から100までなので、最大100件しか一度に記事を取得することができません。そして残念ながら REST API には全件取得するという機能が無いようです。 そのため、Nex […]

REST API で投稿一覧(/wp-json/wp/v2/posts)を取得した場合、タグ情報は ID 配列で取得することになります。このブログのように、タグ情報を表示したい場合は、ID だと不都合で、タグエンティティ […]

WordPress でブログを運用していたとき、記事中のソースコードのシンタックスハイライトは Code Syntax Block というプラグインを利用していました。このプラグインは、Prism を WordPress […]

本ブログを WordPress から WordPress + Next.js の Jamstack 構成にアップデートしました。色々と学びがあったので、アウトプットしておきます。WordPress との連携については、こ […]

svgのviewBoxを理解する

理解するためにこういうサンプルを作ってみました。 基本はviewBoxとsvgのサイズは同じにしておけばいいのだけれども、たとえば要素を拡大したいときになんか使えそう。 Circleのサイズを拡大するとボーダーまで一緒に […]

ISO8601 とは 日付と時刻の表記に関するISOの国際規格。表示方法のこと。日付と時刻を T で区切ります。 例として、2022年5月27日 14:00 を ISO8601形式で UTC(協定世界時) と JST(日 […]

Selector は derived state の一部を表します。derived state とは、純粋な関数に状態を渡して、その状態から新しい値を派生させる出力と考えることができます。React の useMemo […]

Recoil で Todo リストを作ってみます。公式チュートリアルをなぞります。 Atoms にはアプリケーションのステートを含んでいます。Todoリストのステートはオブジェクトの配列になり、各オブジェクトはTodoア […]

Recoil の学習 1

業務で Recoil を扱うことになったので、その学習メモ。Recoil は Redux のようにグローバルステートを扱う Facebook 謹製のライブラリ。ひとまず理解のために Getting Started をやっ […]

Railsでアプリケーションを作った際のメール送信処理をどうするか。自前でメールサーバーを立てるのはセキュリティリスクもあるし、立てるのも結構大変だったりする。こういうときにAmazon SESは簡単に利用できて便利。 […]

RailsでdeleteメソッドをHTMLから送信する際は以下のように記述していた。 Rails7からJavaScriptの仕様が変更になったようで、この記述だとGETで通信をしてしまう模様。Turbo Linkの仕様変 […]

VSCodeでDockerの中に入って作業をしているのだが、prettierを利用したくなったのでNodeをインストールした。prettierはJavaScriptだけでなくRubyもフォーマットしてくれる。Rails7 […]

VSCodeでRailsを開発する

Railsプロジェクトを作る でDockerベースのRailsプロジェクトを作ったので、それを元にVSCodeで開発する方法をメモ書き。 VSCodeはRemote Developmentという拡張でDockerの中に入 […]

久々に Rails でもやってみようかと思ったので Rails プロジェクトを Mac で作ってみたのでメモ。知人に聞いたら、Rails も DB も Docker で立てているそうなので真似してみる。 Docker 公 […]

テスト駆動開発の簡単なサイクル例 1. テストコードを書く メソッドを実装していないのでテストが失敗することを確認した。 2. 1つのテストをパスさせるための仮実装を書く テストがパスする。 3. 別のテストパターンを書 […]

EventEmitterの型

EventEmitterの型付けのサンプル。イベント名もちゃんと型推論させたい。

バリデーションエラーの場合に例外をスローするとき、カスタムエラーを投げると捕捉しやすくなる。 `e instanceof DateIsInTheFutureError` でエラーの種類を判定している。 この方法だと、コメ […]

非nullアサーション

DOMの実装で、getElementById(dialog.id)とした場合にnullの可能性がある、とエラーが出る場合がある。 プログラマは指定のDOMが存在することは把握しているが、TypeScriptは把握できてい […]

booleanを返す関数について、その関数がbooleanを返すというだけでは不十分な場合がある。 こう書いた場合、toUpperCaseでエラーになる。inputがstringかnumberかわからないから。 型の絞り […]

通常タプル型は以下のように定義する。 推論された型は (number|boolean)[] となる。 これだと、aにnumberかbooleanをpushできてしまうなど厳密なタプルにならない。 厳密にする場合にタプル生 […]

以下のようなコードがあったとする。 2つ目のevent.targetはHTMLElementのみを期待したが、HTMLInputElementも含まれてしまう。なぜか。 handleがUserEvent型のパラメーターを […]

JavaScriptやTypeScriptにはmixinの機能は無いが実装することができる。mixinは 状態(インスタンスプロパティ)を持つことができる。 抽象メソッドでないものだけを提供できる。 コンストラクターを持 […]

クラスを宣言するときに implements キーワードを使うと、そのクラスが特定のインターフェースを満たしていることを表現できる。typeでも可能。 インターフェースはインスタンスプロパティを宣言することができるが、p […]

クラスのコード例 TypeScriptがサポートしているアクセス修飾子は下記のとおり。 public どこからでもアクセス可能。これがデフォルトのアクセスレベル。 protected このクラスとサブクラスのインスタンス […]

TypeScriptのextendsを使って、可変長引数関数をモデル化します。 Tは unknown[] のサブタイプ、つまり任意型の配列。これは可変長引数がどんな型かわからないから。Rはcallを実行した場合の返り値の […]

ジェネリックを宣言する場所によって、関数実行時に型の指定が必要な場合、そうでない場合がある。言い方が難しい。 パターン1 Tのスコープが個々のシグネチャに限られる、完全な呼び出しシグネチャ。Tのスコープは1つのシグネチャ […]

関数の呼び出しシグネチャの記法は二通り存在する。 通常は省略型を使うだろうが、複雑な関数には完全型のほうが向いている。その「複雑な関数」にオーバーロードが含まれる。 「オーバーロードされた関数」とは複数の呼び出しシグネチ […]

合併型と交差型

A と B という2つのものがある場合、それらの合併(union)とは、それらの和(A、B、またはその両方に含まれるすべてのもの)を指し、交差(intersection)とは、それらが共通して持つもの(AとBの両方に含ま […]

unknownの使いどころ

TypeScript の unknown 型の使い方をメモ。前もって本当に型がわからない場合は、any ではなくて unknown を使うこと。any と同様に任意の値を表すが、それが何であるかをチェックすることで(ty […]

最近は query-string みたいなライブラリに頼らなくても良い模様。 これで、URLSearchParams のインスタンスが返る。 これはオブジェクトではなくて、インスタンスなので、使う場合は以下のようになる。 […]

変数をタイプ化するメモ。まずは変数を宣言します。 STATUSES の value 値から型を作ります。 変数 loginStatus は 0 か 1 以外はエラーになります。

フレンドリーフォワーディングとは、ログインが必要なページ(Aページとする)に未ログイン状態でアクセスした場合に、ログイン画面に遷移させて、ログインした後は本来アクセスしたかったAページに戻す、といった機能になります。Ra […]

Firebase にログインを試みて、成功したらリダイレクトさせたい場合のコード。 リダイレクトすると以下のような警告がコンソールウインドウに表示されました。 これは、Promise が完了する前にリダイレクトしているか […]

このブログのログを AWS CloudWatch Logs で見られるようにしたので作業メモ。WordPress のエラーと Apache のアクセスログを見られるようにしました。 EC2 にロール設定 以下から IAM […]

このブログは WordPress で作られており、AWS 上に稼働しています。EC2 に直接アクセスさせると、SSL の設定やパフォーマンス設定などがややこしいので EC2 (WordPress) の前面に キャッシュサ […]

Redux Toolkit で非同期 Action を利用する際の記述方法が不明だったので調べてみました。以下のような利用方法を想定しています。 非同期アクションクリエーターを以下のように記述します。 ‘au […]

ESLint の設定

Create React App でプロジェクトを作る場合、ESLint といくつかのモジュールはすでにインストールされています。package.json に設定も書いてあるので、何もしなくても動作はします。すでにインス […]

ESLint と Prettier は何が違うのか? プロジェクトにマストで導入されている ESLint と Prettier について調べてみました。ESLint と Prettier はどのような違いがあるのでしょう […]

本ブログは AWS ネットワーク上に構築されています。下記のような構成になっています。備忘録として手順の概略を残しておきます。ちなみに僕はフロントエンドエンジニアで、サーバー構築はほぼ素人です。 当初はさくらのレンタルサ […]

正規化とは。 関係の正規化(かんけいのせいきか)は、関係データベース (リレーショナル・データベース) において、関係(リレーション)を正規形と呼ばれる形式に準拠させることにより、データの一貫性の維持と効率的な […]