kosui_meのブックマーク (14)

  • NODE_ENVにdevelopmentとproduction以外を入れると辛い - ぷらすのブログ

    結構前に Node における NODE_ENV と環境変数の設定方法について Slack で軽く議論したんだけど、その後色々と考えるものがあったのでここにまとめておく。 基的にサーバサイドを前提とした話をするが、フロントエンドにも通じる話だと思うし、Next.js の話も出てくる。 NODE_ENV に development、production 以外が入るややこしさ Node のエコシステムでよく使われる環境変数として NODE_ENV がある。 様々なツールが NODE_ENV を見て、developmentであれば開発用のトレースやログを出してくれるし、production であれば番用に最適化された処理を行ってくれる。 これはこれで便利なんだけど、環境 (ENV) という言葉に釣られて、デプロイ環境の名称を NODE_ENV に設定し始めると、途端にややこしくなることが多い。

    NODE_ENVにdevelopmentとproduction以外を入れると辛い - ぷらすのブログ
    kosui_me
    kosui_me 2024/09/25
  • 目的別データベースの実践: PostgreSQL 行レベルセキュリティと DynamoDB Outboxパターン - KAKEHASHI Tech Blog

    カケハシのプラットフォームチームのテックリードとして組織管理サービスと認証基盤を開発している kosui (id:kosui_me) です。今回は、目的別データベースをプラットフォームチームではどのように実践しているかご紹介します。 この記事は秋の技術特集 2024の 13 記事目です。 背景 目的 事例1: PostgreSQL の行レベルセキュリティを活用する組織管理サービス 組織管理サービスとは PostgreSQL の行レベルセキュリティ 行レベルセキュリティを用いたトランザクションマネージャー 行レベルセキュリティの運用上の注意点 事例2: DynamoDB を活用する認証基盤と Outbox パターンの活用 カケハシの認証基盤刷新 DynamoDB で実現する高稼働率の認証基盤 DynamoDB の特性を考慮する CDC と Outbox パターン まとめ 背景 医療の分野で様

    目的別データベースの実践: PostgreSQL 行レベルセキュリティと DynamoDB Outboxパターン - KAKEHASHI Tech Blog
    kosui_me
    kosui_me 2024/09/19
    書きました🙌
  • TSKaigi Kansai 2024 で登壇してみませんか?トークテーマの探し方・プロポーザルの書き方のヒントを紹介します! - TSKaigi 公式ブログ

    こんにちは、TSKaigi Kansai プログラムチームです。 現在 TSKaigi Kansai 2024 ではトーク登壇のプロポーザルを募集中です。この記事では改めて登壇のお誘いと、登壇に挑戦される方への応援として、トークテーマの探し方やプロポーザルの書き方のヒントをご紹介します。「登壇に応募はしたいがテーマに自信がない」「良いプロポーザルの書き方がわからない」という方にも、この記事が少しでも応募の助けとなりましたら幸いです。 TSKaigi Kansai 2024 とは トークテーマの探し方 自身の経験や疑問・発見をテーマにする 興味のある分野を深掘りする プロポーザルの書き方 トークの内容をわかりやすく伝える フィードバックを取り入れる TSKaigi 2024 登壇者の方にも聞いてみました kosui さん (TSKaigi 2024 セッション登壇者) Q. トークテーマはど

    TSKaigi Kansai 2024 で登壇してみませんか?トークテーマの探し方・プロポーザルの書き方のヒントを紹介します! - TSKaigi 公式ブログ
    kosui_me
    kosui_me 2024/09/06
  • 新しいチームでTypeScriptに素早くキャッチアップするためにやったこと - KAKEHASHI Tech Blog

    カケハシのプラットフォームチームでソフトウェアエンジニアをしているすてにゃん (id:stefafafan) です。今回は、私が TypeScript をメイン言語として採用しているチームに参加した際、言語や周辺技術のキャッチアップを行った方法について紹介します。 この記事は秋の技術特集 2024の 3 記事目です。 この記事の想定読者 私が元々持っていたスキルセット 認知負荷の増加 TypeScript 学習のためにやったこと 学習の進め方 テックリードとの 1on1 の中で壁打ちや相談 ペアプログラミング 輪読会 もくもく会 学習コンテンツ O'Reilly Online Learning を使った学習 TypeScript Deep Dive プロを目指す人のための TypeScript 入門 安全なコードの書き方から高度な型の使い方まで type-challenges 公式ドキュメ

    新しいチームでTypeScriptに素早くキャッチアップするためにやったこと - KAKEHASHI Tech Blog
    kosui_me
    kosui_me 2024/09/04
  • TypeScript における変性(variance)について - 30歳からのプログラミング

    プログラミングの型システムに関する記事を読んでいると、共変や反変といった用語が出てくることがある。 TypeScript や Flow についての記事でも、見かけることがある。 それらは TypeScript を使う上で必須の知識ではないが、把握しておくに越したことはない。 この記事では、TypeScript を題材にして、変性について説明していく。 TypeScript に関する議論を理解できるようになることがこの記事の目的であり、より詳細な、学術的、数学的な内容には踏み込まない。 この記事の内容は、TypeScript のv3.9.5で動作確認している。 変性 変性(variance)とは、任意の型Tに対してどのような性質を持つのか示したものであり、以下の 4 種類がある。 不変性(invariance) Tそのものが必要 共変性(covariance) Tそのものか、そのサブタイプが

    TypeScript における変性(variance)について - 30歳からのプログラミング
    kosui_me
    kosui_me 2024/08/22
  • 情報の見つけやすさを追求する - 社内ドキュメンテーションの階層整理術 - KAKEHASHI Tech Blog

    カケハシのプラットフォームチームでソフトウェアエンジニアをしているすてにゃん (id:stefafafan) です。今回はチームに配属されて数ヶ月の私が、いかにして社内ドキュメンテーションの階層構造を整理し、情報の検索性を向上させたかについてお話します。 はじめに この記事の想定読者 課題意識 メンバーへの共有と相談 社外事例の調査 esa の階層整理 第 1・第 2 階層の整理 ストック情報とフロー情報を意識した階層の整理 esa の機能をフル活用する 効果や今後について はじめに カケハシでは全社的にドキュメンテーションツールとして esa - 自律的なチームのための情報共有サービス を利用しています。それぞれのチームやプロダクトごとに階層を切ってドキュメントを書いています。 プラットフォームチームでは認証基盤などの社内プラットフォームシステムを開発しているため、自チームが運用する各種

    情報の見つけやすさを追求する - 社内ドキュメンテーションの階層整理術 - KAKEHASHI Tech Blog
    kosui_me
    kosui_me 2024/08/15
  • 開発部に不満を持っていたCSがエンジニアにジョブチェンしてわかった「勝手に諦めない」ことの大切さ

    2024/07/13 大吉祥寺.pm 20分レギュラートーク 登壇資料

    開発部に不満を持っていたCSがエンジニアにジョブチェンしてわかった「勝手に諦めない」ことの大切さ
  • フロントエンドの Monorepo をやめてリポジトリ分割したワケ - カミナシ エンジニアブログ

    こんにちは。ソフトウェアエンジニアの坂井 (@manabusakai) です。 カミナシのプロダクトは、管理者の方が使う Web アプリに React、現場の方が使う iPad / iPhone アプリに React Native を採用しています。 どちらもフロントエンド技術スタックを採用していることもあり、先日までは Monorepo と Yarn Workspaces の構成で運用されていました。 最近では Monorepo 化を進めている事例もよく見かけるようになってきました。 engineering.mercari.com devblog.thebase.in ですが、カミナシでは Monorepo をやめてリポジトリ分割をする意思決定を行いました。 具体的には、harami_client という Monorepo を harami_web と harami_mobile とい

    フロントエンドの Monorepo をやめてリポジトリ分割したワケ - カミナシ エンジニアブログ
    kosui_me
    kosui_me 2024/03/19
    「Monorepoゆえの課題」というより、「何をどんなインターフェイスで共通化するか」という設計に課題があったのかな?と思いました。事前にMonorepoに対する期待値を揃えないと統制が取れなくなるのかも。
  • PostgreSQLのRow Level Securityで複数テナントのデータにアクセスできる設定 - takanamitoのブログ

    マルチテナントを実現するときに便利な機能Row Level Security 5.8. 行セキュリティポリシー PostgreSQL の行レベルのセキュリティを備えたマルチテナントデータの分離 | Amazon Web Services ブログ テーブルごとにアクセス可能な行を絞ることができるんですが、設定例を調べると単一テナントを前提としたものが多く 複数のテナントのデータにアクセスさせる設定がわからなかったので試してみました。 設定例 テーブル定義 データ作成 RLS有効化 結果 ハマったポイント まとめ 設定例 以下のようなクエリで実現できました。 CREATE POLICY tenant_isolation_policy ON users USING (tenant_id = ANY( SELECT tenant_id FROM user_tenants WHERE user_id

    PostgreSQLのRow Level Securityで複数テナントのデータにアクセスできる設定 - takanamitoのブログ
    kosui_me
    kosui_me 2024/03/13
  • CTO/テックリードのためのAWSコストを大幅カットする取り組み方 - KAKEHASHI Tech Blog

    請求明細書を見てお嘆きの皆様へ。 前回の記事では、すぐにコスト削減の成果を出したい人向けに比較的簡単な方法を解説しました。 この記事では、時間がかかっても良いので根的に原価をなんとかしたい人を対象としています。 請求明細書(Billing)やCost Explorerの参照権限を広く付ける 開発者がコストを意識するところから、すべては始まります。 意識しようにも、そもそもいくらかかっているかわからないことがあります。見ようとしても現場レベルで直接参照する権限がないことがあります。情報対称性の意味でも、初期設定で権限を付与しておきましょう。デフォルトAllow、やむを得ない事情があればDenyという方式がよいです。 AWSの請求は日次で更新されるため、当日行った作業結果が翌日翌々日には反映されます。フィードバックループを回せるよう、まずはデータを入手できるようにしましょう。 横断してコスト

    CTO/テックリードのためのAWSコストを大幅カットする取り組み方 - KAKEHASHI Tech Blog
    kosui_me
    kosui_me 2024/03/12
  • 【翻訳】テスト駆動開発の定義 - t-wadaのブログ

    このブログエントリでは、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent BeckがTDDの定義を改めて明確化した文章を、許可を得たうえで翻訳し、訳者の考察を沿えています。 きっかけ 2023年の年末、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent Beckは、substackにTDDに関するポストを連投して論戦を繰り広げていました。TDDはその誕生から20年以上が経ち、その間に「意味の希薄化」が発生して議論が噛み合わなくなっていました。意味の希薄化(Semantic Diffusion)とは、新しく作り出された用語が広まる際に来の意味や定義が弱まって伝わる現象です。 私(和田)はTDDと関わりの深いキャリアを歩んできました。Kent Beckの著書『テスト駆動開発』の翻訳者であることもあり、TDDの正

    【翻訳】テスト駆動開発の定義 - t-wadaのブログ
    kosui_me
    kosui_me 2024/03/10
  • ZodでAlways-Valid Domain Modelを実現する

    課題意識 特定の商品を数量を指定して購入できるECサービスのドメインモデルを表現とします。TypeScriptで構築する際に、「数量」を単にnumber型で扱うことは可能ですが、よりロバストな設計を目指す上で以下の2つの方法論があります。 Refinements(値の制約を表す): 「数量」は一般的に自然数です。1度の注文で指定できる上限を設けるビジネスルールがあると仮定します。この場合、number型に「自然数」「上限付き」の制約を加えた値として表現します。 Branded Types: (同じ構造の型を区別する): 「価格」などの他のnumber型と混同されないように、これらの数値を型レベルで区別したいです。JavaやC#に見られる公称型の概念をTypeScriptで模倣するBranded Typesのテクニックを用いることで、これらの誤った利用を型システムで防ぐことができます。 Br

    ZodでAlways-Valid Domain Modelを実現する
    kosui_me
    kosui_me 2024/03/05
  • CTOを辞任した|kiri

    2016年6月から株式会社カケハシのCTOを務めていたが、昨日の2024年2月29日付けで辞任した。 辞任にあたっての想いや在籍中の思い出について熱量高めに書くことも考えたが、一旦は報告を優先してコンパクトなテキストにしておく。それまで比較的ジョブホップ気味だった私にとって7年9ヶ月という在籍期間は到底考えられない圧倒的な長さであり当然思い入れも一入である。350人を超える規模の組織成長という未知の領域で様々な経験を得ることができた。在任中に関わった全ての顧客、同僚、関係者の皆様に心から感謝している。 3月以降の活動については何も決まっていないが、これから色々な方・企業の話を伺って可能性を探っていくことになると思う。ただ、カケハシの前に同じくCTOについていたサイカから考えると10年以上、事業成長のためにあらゆるものを振り捨てて全力疾走してきて少し立ち止まってゆっくり考えたい気持ちが強いた

    CTOを辞任した|kiri
    kosui_me
    kosui_me 2024/03/05
    お疲れ様でした
  • TSKaigiにプロポーザルが採択されました🎉 - kosui

    2024/03/20 追記 採択されました🎉 聴講者の期待に応えられるように全力で頑張ります💪 また、これに伴い記事のタイトルを「TSKaigiにプロポーザルを提出しました」から変更しています。 TSKaigi 2024年5月11日にTSKaigi 2024が開催されます。 柔軟な型の表現力と強力なエコシステムを持つTypeScriptは、Webフロントエンドアプリケーションの開発のみならず、インフラ構成管理やサーバアプリケーションの開発にも利用されています。 TSKaigiの公式サイトにも下記の記載があるように、様々なバックグラウンドを持つエンジニアと横断的な交流ができそうでとてもわくわくしています。 私たちの願いは、フロントエンドからバックエンド、インフラに至るまで、多様な分野のTypeScriptエンジニアたちが集い、普段は交流の少ないエンジニアたちが、それぞれの得意分野や最新の

    TSKaigiにプロポーザルが採択されました🎉 - kosui
    kosui_me
    kosui_me 2024/03/01
    書いた
  • 1