タグ

ブックマーク / www.keisuke69.net (21)

  • 2023年に読んで良かった技術書など10冊 - Sweet Escape

    昨年までは毎月買ったやマンガとそれらに対する一言コメントをブログで書いていたんだけど今年はそれをやらずに来てしまったので今年かったで良かったものをいくつかピックアップして紹介する。 実際にはもっと数多く買ってるし、買っただけで読んでいないものも多い。2023年に買ったはマンガも合わせて合計で366冊、そのうちマンガ以外は151冊だった。 なお、対象は自分で買った書籍だけ。つまり献とかでいただいたものはこの対象に加えていません。 ちなみにいずれのもすべて電子書籍で購入している。全体ではAmazonKindleを中心に一部オライリーのeBookなんだけど、選んだものはすべてKindleで買ったものだった。 というわけで紹介していく。 AWSで実現するモダンアプリケーション入門 〜サーバーレス、コンテナ、マイクロサービスで何ができるのか フロントエンド開発のためのセキュリティ入門 知

    2023年に読んで良かった技術書など10冊 - Sweet Escape
  • 一意な識別子の生成でUUID/ULID/CUID/Nano IDなど検討してみた - Sweet Escape

    最近、一意な識別子について検討することがあったのでその検討メモ。 一意な識別子とは つまり、重複しない、ユニークな識別子(Identifier, 以下id)のこと。ここではRDBのテーブルにおける主キーとして使うことを想定かつ前提としている。したがって、主キーの要件であるユニーク性を持ったidをどうやって生成していくか。 そんなのDBの連番でいいじゃんて話もあるがここではその話はせず、あくまでも一意な識別子をどう生成するかの話に絞る。 選択肢 一番有名だと思われるUUIDを筆頭にいくつかの選択肢がある。 UUID ULID CUID Nano ID 他にもTwitter発のSnowflakeとか今はDeprecatedになってるshortidなどがあるが、キリがないのでここでは上記の4種類だけで簡単に比較した。また、実際にはUUIDはバージョンによってSpecが異なるがここではバージョン4

    一意な識別子の生成でUUID/ULID/CUID/Nano IDなど検討してみた - Sweet Escape
  • 【SQL】月別で集計するときに値がない月は0と表示したい - Sweet Escape

    SQLに関するメモ。前提としてPostgreSQLを使っています。 以下のようなTimestamp型で日時の情報を持つテーブルがあるとする。 id: integer timestamp: timestamp with time zone 1 2022-01-01 00:00:00+00 2 2022-02-01 00:00:00+00 3 2022-10-01 00:00:00+00 4 2022-10-01 00:00:00+00 5 2022-12-01 00:00:00+00 で、月ごとの件数を集計をしたい場合、何も考えずにこんなSQLを書く。 SELECT to_char(timestamp, 'YYYYMM') AS MONTH, count(id) FROM table1 GROUP BY MONTH ORDER BY MONTH; そうすると得られるのはこんな結果。 mont

    【SQL】月別で集計するときに値がない月は0と表示したい - Sweet Escape
  • Nest.jsで認可処理を実装したい - Sweet Escape

    今作ってるAPIでは初めてNest.jsを使ってるんだけど、認可処理をどうしようかと考えたのでそのメモ。 ちなみにこの投稿では簡単な定義として認証(Authentication)とは利用者の人確認、つまり通信の相手が誰であるかの確認とする。一方、認可(Authorization)とは利用者がシステム内、サービス内で実行できる操作の権限とする。 前提 TypeScript Nest.js Prisma Firebase Authentication 認証自体はFirebase Authenticationを使っているので、認可をどうするかが話の主眼。 なお、前提として認証はクライアントサイドでFirebase Authenticationが認証時に発行するJWTのトークンを取得してAuthorizationヘッダにBearerトークンとして渡すよくあるやつで対応しますが、ここに関しては

    Nest.jsで認可処理を実装したい - Sweet Escape
  • 令和時代のページネーションを考える (REST API編) - Sweet Escape

    今回はバックエンドAPIでページネーションをどうやるかについての話なので、よくある無限スクロールUIのようなフロントエンド側の実装に関する話はしない。あくまでもAPI、もっと言えばRESTfulなAPIのリクエスト・レスポンスにおけるページネーションの話。 気で深く考えるというよりざっくり検討したときの話です。 はじめに REST APIを実装するにあたってリスト系のAPIを提供する場合に必須といっても過言ではないのがページネーション。大量のリソースをレスポンスする場合にそれらを一気に返してしまうことは応答速度、転送量、クライアントサイドでの扱いづらさなどなどに繋がるので必須と言える。 最近、新たなAPIを開発するにあたってページネーションをする必要があったこともあり、今回はこのページネーションをどうやって提供するか整理して改めて検討してみた。 前提 TypeScript Nest.js

    令和時代のページネーションを考える (REST API編) - Sweet Escape
  • 既存のデータベースでPrisma migrateする。しかもPostGISを使う - Sweet Escape

    既存のデータベースをPrismaでマイグレーションできるようにしたくなった。理由はいろいろあるがやはりローカル環境 → 開発環境 → ステージング環境 → 番環境へとDBの定義を反映していくのが手作業はさすがにないなと思えてきたからだ。もちろん実際には毎回SQLを直接手で入力なんてことはないだろうけど。 あとは他の人が開発するのにDBのセットアップをする際にも楽だ。 というわけで導入しようとしたのだがそれなりに悩んだりしたのでメモを残しておく。 前提 すでに存在しているDBをPrismaのmigrationツール管理下におく これまでは直接DBにDDL文を実行して定義などしていた DBの定義はprisma db pullを実行してsyncしていた やっていく まずは既存のDBの定義とPrismaのモデルを同期します。普段からやってるものの念の為。 prisma db pull 同期したら

    既存のデータベースでPrisma migrateする。しかもPostGISを使う - Sweet Escape
  • 脱Firestoreするために考えていること(追記あり) - Sweet Escape

    FirebaseのFirestoreをやめることにしたので雑なメモを残しておく。なお、まだ走り始めたばかりなので、内容には間違いや考慮不足も多数含まれる可能性があるので読む人はその点注意を。あと、あくまでも雑なメモなので細かいところは書いていない。 なぜ脱Firestoreするのか? なぜGraphQLではなくREST APIなのか? 移行にあたって検討したこと、決め事 ドキュメントIDをどう扱うか サブコレクションをどう扱うか 配列やマップといったフィールドのタイプをどう扱うか 追記: Mapの配列をどうするか Firebase Authenticationとセキュリティルールで実現しているセキュリティ機能をどうするか では実際にどんなテーブル設計にするのか 次にやること なぜ脱Firestoreするのか? まず、脱Firestoreする理由は ユースケースとしてFirestoreでは対

    脱Firestoreするために考えていること(追記あり) - Sweet Escape
  • AWS Amplifyを使ったReact NativeなアプリをBitriseでビルド - Sweet Escape

    はじめに 今回、React Nativeで開発しているとあるアプリでAWS Amplifyを使ったのですがBitriseでビルドしたりチーム開発で使うにあたってちょっと困ったりしたのでメモ。 はじめに 前提 なぜAmplifyを使ったか Bitriseでビルドする ではどう対応するか Bitriseでどうやるか まとめ 前提 もともと自分は以前にこちらの記事でも書いたようにAWS Amplifyについてはそんなにポジティブではないです。なのでこの記事以降も基的にはあまりwatchしてきませんでした。なので今回ちょっと苦労したのはAmplify弱者だったことも理由かも知れない。 www.keisuke69.net ただし、Amplify Consoleはいいぞ。これはプロダクションでも2,3使ってる。 また、React Nativeで開発したアプリはAndroid、iOSともにBitris

    AWS Amplifyを使ったReact NativeなアプリをBitriseでビルド - Sweet Escape
  • Amplify ConsoleでNode.jsのバージョンをアップデートする (追記あり) - Sweet Escape

    (Update)このブログは最後の追記だけを見れば事足ります。 Amplify ConsoleでとあるReactNext.jsベースのアプリケーションをホストしているんだけど、最新のプッシュで動いたデプロイがビルドのフェーズで落ちてしまった。 ログは以下。 2022-01-12T01:20:42.950Z [WARNING]: error @typescript-eslint/experimental-utils@5.9.0: The engine "node" is incompatible with this module. Expected version "^12.22.0 || ^14.17.0 || >=16.0.0". Got "12.21.0" 2022-01-12T01:20:42.958Z [WARNING]: error Found incompatible mod

    Amplify ConsoleでNode.jsのバージョンをアップデートする (追記あり) - Sweet Escape
  • Monthly Serverless Update 202109 - Sweet Escape

    2021年9月のサーバーレス関連まとめです。こちらのイベントの内容です。 あと、文最後にお知らせがあります。 serverless-newworld.connpass.com (Update) アーカイブはこちら。 www.youtube.com とりあげるサービス 各クラウドのサービスは大体このあたりを中心に取り上げます。 AWS: AWS Lambda, Amazon API Gateway, AWS StepFunctions, Amazon EventBridge, Amazon S3, Amazon DynamoDB, AWS Amplify, AWS AppSync GCP: Firebase全般, CloudFunctions, CloudRun Azure: Azure Functions, AppServices AWS AWSはre:Inventが近づいてきたからか大

    Monthly Serverless Update 202109 - Sweet Escape
  • React NativeでOSSのライセンス表記を楽にやりたい (続編) - Sweet Escape

    昨日以下のようなブログを書いた。 www.keisuke69.net この投稿ではlicense-checkerというツールを使って利用しているOSSライブラリの一覧とライセンス情報を出力し、それを読み取って画面に出力するという内容だった。 だがしかし、前回の投稿の最後に書いたようにとても重いのである。 なんかダサいし重いのでもうちょっと考えよう。。。 出力されるファイルが1万行近いものだったため、都度読み込んで表示するにはとても重い状態だったのである。ファイルの中身を見るとbabel関連などが--productionで指定しているにも関わらず出力されていた。また、--directというオプションを指定していたにも関わらずそれがあまり機能していないというIssueもあって未解決のようだった。 github.com というわけで、前回の選定時には落としたnpm-license-crawler

    React NativeでOSSのライセンス表記を楽にやりたい (続編) - Sweet Escape
  • Remote ContainersのNode.js環境でGitの補完を設定する - Sweet Escape

    小ネタ。 知ってる人も多いと思いますが、GitにはGitのコマンドやブランチ名のタブ補完ができるような設定が同梱されてます。 それを自分が使ってるMacとかの開発マシンに設定するだけですぐに使えるようになって便利なので設定していきます。 ただ、MacやWinとかでの設定はネットでちょっと検索すればいっぱい出てくるのですが、自分が開発に普段使うのはもちろんVS Code + Remote Containersです(ちょっと前にソフトウェアデザイン誌に寄稿もしました → アマゾンのリンク) つまり普段開発環境として実際に使っているのはNode.jsなりのランタイムがインストールされているコンテナなんですね。そして自分はNode.jsのオフィシャルイメージを使ってるのですがこのベースイメージはdebianです。Alpineもあるけどいろいろ問題起きがちなので使ってません。 というわけでdebia

    Remote ContainersのNode.js環境でGitの補完を設定する - Sweet Escape
  • Poetryでプライベートリポジトリからインストールする3つの方法 - Sweet Escape

    Poetryでプライベートリポジトリからパッケージをインストールする必要がありいろいろ調べてみたのでそのメモ。あとAWS CodeArtifactも試してみたので。 はじめに まず、pipもpoetryも基的には依存関係の解決、つまりパッケージのインストールにはPyPIというリポジトリを参照しているのはご存知だと思うが、したがって通常自作のパッケージを公開するにはこのPyPIへの公開が必要となる。 PyPIで公開するにはPoetryではpoetry buildで配布用パッケージを作成してpoetry publishで可能。 だが、何らかの理由でパブリックには公開したくない、でもいくつかのプロジェクトから利用したいって場合があると思います。 そんなときに一番簡単なのはインストールしたいプロジェクトのリポジトリに同梱してしまうことですが複数のプロジェクトから利用する場合はそれもどうかと思いま

    Poetryでプライベートリポジトリからインストールする3つの方法 - Sweet Escape
  • VS Code + Remote Containers環境下でReact Native + Expoを動かしてみたメモ - Sweet Escape

    モバイル界隈はあんまり知らないんですが、React Nativeの開発環境としてExpoというものの存在を最近知ったと思ったらたまたまReact Native + Expoで作られているものを手元で動かしたい要件が。僕は普段、手元のMacには言語系のランタイムとかは入れておらずVS CodeとDocker for Macだけ入れてRemote Containersの環境で開発しています。 というわけで今回はRemote ContainersでReact Native + Expoの環境が使えるか試してみたときのメモ。 とあるReact Native + Expoで作られてるアプリを手元で動かしたいんだがこっち方面は知見がなさすぎて手探り状態。これRemote Containersでやれるんかな— Keisuke Nishitani (@Keisuke69) 2020年12月24日 とTwi

    VS Code + Remote Containers環境下でReact Native + Expoを動かしてみたメモ - Sweet Escape
  • AWS LambdaとNuxt.jsでServer Side Renderingする(2020年版) - Sweet Escape

    サーバーレスでサーバーサイドレンダリング(SSR)の後編です。前編はこちら。 www.keisuke69.net なお、同内容をこちらのイベントでも話す予定ですので興味あるかたはぜひこちらも。 serverless-newworld.connpass.com はじめに サンプルアプリ serverless.yaml 最後に はじめに 前回、SSRとはって話を簡単にしました。今回はSSRをAWSのサーバーレス、つまりAWS Lambdaでやってみたいと思います。 今回はVue.jsのフレームワークであるNuxt.jsで作ったサンプルアプリのSSRをLambdaで試してみます。 前回のブログでNuxt.jsでの例という説明をしましたが、今回はそこを実際にやっていく感じです。 なお、Nuxt.jsをLambdaで動かす場合の話って実はググってもあまり出てきません。いくつかの記事が出てくるだけです

    AWS LambdaとNuxt.jsでServer Side Renderingする(2020年版) - Sweet Escape
  • Next.jsをサーバーレスでやっていくためのServerless Next.js Component - Sweet Escape

    今回は最近その存在感がますます上がっているNext.jsとサーバーレスの話です。 はじめに サンプルアプリ Serverless Next.js Component デプロイ 作成されるリソース CloudFrontのディストリビューション Lambdaファンクション S3バケット 大まかな挙動 できないこと まとめ はじめに この投稿は2020年11月27の21時から開催予定のイベント(ライブストリーミング)で話す内容です。 serverless-newworld.connpass.com もし間に合えば、かつ時間があればぜひライブ配信のほうにも参加ください。 さて、今回は11/9に登壇させていただいたFront-End Studyでの話でも少し紹介したServerless Next.js Componentについて取り上げます。 僕は昨今のフロントエンドWeb周りの技術では最近は一番N

    Next.jsをサーバーレスでやっていくためのServerless Next.js Component - Sweet Escape
  • Monthly AWS Serverless Update 202011 - Sweet Escape

    2020年11月のサーバーレス関連まとめです。こちらのイベントで取り上げる内容です。 serverless-newworld.connpass.com 2020年11月のリリース 11月30日からAWSの年次グローバルカンファレンスであるre:Inventが開催されることから細かいアップデートが多めですね。ていうか数が多すぎるのでS3とか割愛しましたw タイトルだけで内容がわかるようなものは特にコメントしていません。 Amazon Kinesis Data Streams は、最大 1 年間のデータストリームの保持が可能に データ保存期間がこれまでの最大7日から最大1年に デフォルトは24時間 Amazon MQ for RabbitMQ の発表 Amazon MQがRabbitMQをサポート RabbitMQは広く使われているOSSのメッセージブローカー 複数のプロトコルに対応、軽量とい

    Monthly AWS Serverless Update 202011 - Sweet Escape
  • Sweet Escape

    2023-12-30 2023年に買ってよかったもの11選 + α その他 毎年恒例のやつを今年も書きます。画像はBingが生成した謎画像です。カメラ買いすぎやろ。 はじめに 良かったもの Anker 733 Power Bank (GaNPrime PowerCore 65W) (10000mAh 30W出力モバイルバッテリー搭載 65W出力USB充電器) lapset 俯瞰撮影 スマホスタン… 2023-12-29 2023年に読んで良かった技術書など10冊 買った 昨年までは毎月買ったやマンガとそれらに対する一言コメントをブログで書いていたんだけど今年はそれをやらずに来てしまったので今年かったで良かったものをいくつかピックアップして紹介する。 実際にはもっと数多く買ってるし、買っただけで読んでいな… 2023-10-20 BitriseでCocoaPodsのインストールが失敗す

    Sweet Escape
  • サーバーレスでサーバーサイドレンダリング 前編 - Sweet Escape

    はじめに サーバーレスアプリケーションにおけるフロントエンド SPAの課題 サーバーサイドレンダリング Jamstack サーバーフル? サーバーレス? サーバーレスでサーバーサイドレンダリング Nuxt.jsでの例 次回 はじめに サーバーレスでサーバーサイドレンダリングの話です。ReactとかVueを使ったシングルページアプリケーション(SPA)を開発している人がサーバーサイドレンダリングやりたいんだけどサーバーレスでどうやるのって話です。 今回も『サーバーレスアンチパターン今昔物語』というイベントのための記事となっています。 serverless-newworld.connpass.com なお、今回は前編と称してそもそものところを簡単に説明しつつ、サーバーレスでやる場合の基的な話を説明していきたいと思います。次回、後編で実際にサンプルアプリを用意して動くもので説明をしていきます。

    サーバーレスでサーバーサイドレンダリング 前編 - Sweet Escape
  • 最近聞いてる技術系ポッドキャストまとめ - Sweet Escape

    はじめに よく聞くポッドキャスト fukabori.fm UIT INSIDE Software Engineering Daily mozaic.fm ポッドキャスト | Serverless NOW たまに聞くポッドキャスト Behind The Tech with Kevin Scott Code[ish] JP Rebuild しがないラジオ engineer meeting podcast omoiyari.fm アジャイルラジオ ポッドキャスト始めました はじめに コロナの関係でいろんな生活習慣が変わってきています。僕の中でも変わったことがいくつかあってその一つがポッドキャストです。 これまでポッドキャストというのはほとんど聴くことがありませんでした。 特に理由はなかったのですが習慣がほとんどなかったんです。過去に少し聞いたときもあったのですがそれほど面白いコンテンツとも感じま

    最近聞いてる技術系ポッドキャストまとめ - Sweet Escape