タグ

akisei67のブックマーク (109)

  • なぜ Server Actions を使うのか

    Next.js 14 の Server Actions の stable リリースに発表は大きな反響を呼びました。 特に <button> の formAction 属性内で直接 SQL クエリを実行するコードは多くの人に衝撃を与えていました。"use server;" の部分を PHP やバイナリに置き換えると行った多くのミームも生まれました。 function Bookmark({ slug }) { return ( <button formAction={async () => { "use server"; await sql`INSERT INTO Bookmarks (slug) VALUES (${slug})`; }} > <BookmarkIcon> </button> ) } X 上での反応を見ると、このクライントから直接 SQL クエリを実行するコードは見た目の印象

    なぜ Server Actions を使うのか
    akisei67
    akisei67 2023/11/13
    ユーザー観点は非常に重要、ただしどんな技術で実現されているか把握して利用是非を判断するのが開発者の責務とも思う。コメでは語りきれないけど個人的には主にインフラ含めた性能要件の検討がしんどい印象。
  • AWS Transit Gateway を用いて NAT Gateway を集約し、コストを最適化するための経路設計 - サーバーワークスエンジニアブログ

    マネージドサービス部 佐竹です。 以前 NAT Gateway 集約のためのネットワーク設計においてトラブルを発生させてしまったことがあり、その再発防止のためのブログを記載します。 はじめに 各 VPC ごとに NAT Gateway を構築した場合 NAT Gateway の利用料 AWS Transit Gateway を用いて集約する NAT Gateway 集約と経路設計 Transit Gateway を構築する Transit Gateway Attachment (Type VPC) を各 VPC で作成する 「VPC A」と「VPC C」の Subnet の経路を修正し、 NAT Gateway を削除する 一度ここで経路確認を行ってみる Transit Gateway のルートテーブルに「0.0.0.0/0」を追加する Reachability Analyzer での動作

    AWS Transit Gateway を用いて NAT Gateway を集約し、コストを最適化するための経路設計 - サーバーワークスエンジニアブログ
  • Event Types in React and TypeScript

    Matt PocockMatt is a well-regarded TypeScript expert known for his ability to demystify complex TypeScript concepts. #The Problem When you're working with React and TypeScript, you'll often encounter this kind of error:

    Event Types in React and TypeScript
  • 40歳を過ぎてもソフトウェアエンジニアを続けてるって話 - Mitsuyuki.Shiiba

    昨日、ゆのんさん( https://twitter.com/yunon_phys )が社内の勉強会で「エンジニアリングマネージャとは?」って話をしてくれて、面白いなぁって思いながら聞いてた。 今日は @yunon_phys が社内勉強会で、エンジニアリングマネージャについてお話をしてくれてとてもよかった。こんな話が社内で聞けるのって福利厚生だなぁと思いながら聞いてた。— SHIIBA Mitsuyuki (@bufferings) October 13, 2023 その中で「エンジニアリングマネージャが見ることのできる範囲はめちゃ広いから、すべてを完璧にしようとするんじゃなくて、その場に応じてスキマを埋めるような動きができるといい。組織の成長とともにその動きも変わっていく」ってことを言っていて、これって自分のソフトウェアエンジニアとしての動きにも似たところがあるなぁと思ったので雑にメモ。

    40歳を過ぎてもソフトウェアエンジニアを続けてるって話 - Mitsuyuki.Shiiba
    akisei67
    akisei67 2023/10/15
    40歳アーキテクト、分かりみが深い。ただ今の若手(主語大きいけど)は「1.初学者の時点で覚えるべき技術が多い。」「2.便利に抽象化された技術が多くて成り行きだと根っこ部分が学べない。」ので広げるのがしんどそう。
  • ドメイン駆動設計は何を解決する手法なのか - stmn tech blog

    こんにちは、リファクタリング大好きなミノ駆動です。 株式会社スタメンでは、企業エンゲージメント構築サービスTUNAG(ツナグ)の技術的負債解消と今後の持続的成長のため、ドメイン駆動設計(DDD)の導入を検討しています。 ところでDDDはとかく理解しづらく、何のためのDDDなんだという議論になりがちです。この記事では、DDDの真の主人公コアドメインを中心に、DDDが何を解決するものなのか、全体像を改めて整理します。 この記事で扱う内容 DDDが解決したい課題と解決方法の全体像。 この記事では扱わない内容 設計パターンの実例などの実装詳細。 大事な前提 〜利益を得るためのサービス開発 会社でのサービス開発は、趣味や道楽でやるものでしょうか。違いますね。ビジネスとして、企業活動としてサービス開発しています。当たり前の話ですが、利益を得られるように開発しなければなりません。 ドメイン駆動設計は、継

    ドメイン駆動設計は何を解決する手法なのか - stmn tech blog
    akisei67
    akisei67 2023/09/28
    所詮DDDは「設計と実装を近付けるといいよね」という問題解決方法。真に問われるのはビジネスドメインを理解/分解/再構築(AsIs→ToBe)する力=要件や設計の分析や解像度を高める能力。開発手法はメンバーに合わせれば良い
  • 「どうしてAngularは流行らないのか」と言われて思うこと | Marginalia

    最近に限らず、ここ数年ずっと目にするし、聞かれることもあるこの話について、いくつかの思うこと、ぼやきを書いておく。あとで参照できて便利なので。 1. あなたが使い始めれば少なくとも昨日よりは広まりますよ好きなら使えばいいと思うので僕には気持ちがわからないのだが、好き・気になるけど流行ってないから使わないという心理があるらしい。企業での判断ならわかるが、個人でそれはまったくわからん。仮にそれがマジョリティだとしたら、使われなければ流行らないのに流行らないと使われない、デッドロックで詰みです。 あなたが使ってみてそのことを発信すれば、少なくとも昨日より世界で一人分は使用者が増えます。その積み重ねでしか普及しません。ですので、流行って欲しいと思うならまず自分から使って周りに広めてください。 2. そもそも「流行っている」とは?僕が思うに、「流行っている」ということと「広く普及している」ということ

    「どうしてAngularは流行らないのか」と言われて思うこと | Marginalia
    akisei67
    akisei67 2023/09/25
    正しく書くために「オブジェクト指向によるコンポーネント設計」と「Reactive Extensions(RxJS)」という学習コストが高く初級レベルのエンジニアにはハードルが高いだろう2つの概念に対する理解が必要なので安易に導入できな
  • ソフトウェアアーキテクチャ入門

    はじめに 今回の記事では、ソフトウェアアーキテクチャの入門的な内容を解説する。 対象とする読者 ソフトウェアアーキテクチャを勉強するエンジニア アーキテクチャに関して全くわからない初心者 タイトルで気になったひと ソフトウェアアーキテクチャとは? ソフトウェアのアーキテクチャは、システムの主要なコンポーネント、それらの関係(構造)、およびそれらがどのように相互作用するかを記述する。ソフトウェアのアーキテクチャとデザインには、品質属性、人間のダイナミクス、デザイン、IT環境など、多種多様な寄与要因が含まれる。アーキテクチャは、品質、保守性、パフォーマンス等のような全体的な成功に影響を与える重要な決定を含む。 ソフトウェアアーキテクチャの主な目的は、アプリケーションの構造に影響を与える要件を特定することだ。良好なアーキテクチャは、技術的な解決策を構築する際のビジネスリスクを削減し、ビジネス要件

    ソフトウェアアーキテクチャ入門
    akisei67
    akisei67 2023/09/25
    「アーキテクチャ」というワードで引っ張ってきただけで問題解決のレイヤーが異なるバラバラのアーキテクチャを並べるのは特に初学者に対しては混乱の原因になる気がする。
  • ServiceWorkerの落とし穴8選 - Repro Tech Blog

    はじめに Reproで開発を担当しているEdward Fox (edwardkenfox) です。2021年頃から Repro Booster というプロダクトの立ち上げに携わっており、開発を通して得た知見を共有できればと思い立ち筆を取るに至りました。4年ぶりのテックブログ執筆で少しばかり緊張していますが(?)、張り切ってやっていこうと思います。 Repro Boosterとは 2022年11月に正式リリースした、ウェブサイトの表示速度向上を実現するサービスです。「タグを入れたその日から、Webサイトが速くなる」というタグラインのもと、タグ(JavaScript)の設置だけでウェブサイトの表示速度が簡単に実現できるということで、リリース以来多くのお客様・サイトでご利用いただいています。 Repro BoosterではServiceWorkerと呼ばれる技術を最大限活用して多くの機能が実現さ

    ServiceWorkerの落とし穴8選 - Repro Tech Blog
  • 「全体の話をしてるのに自分の話で返す人」にイライラする!→様々な意見が集まる

    和田淳史 @atrzdflw バカリズム氏が昔何かのテレビで「人と話していてイラっとした瞬間」について話していて 「例えば僕が”最近パクチー流行ってるよね~”と言ったら”いや私は嫌いです”と返してきたり、 ”今日この現場まですごい道混んでたよね”って言ったら”私は鉄道できたからそうでもなかった”と返してきたり、→ 2023-06-20 19:16:42 和田淳史 @atrzdflw 全体の話をしているのに自分の話で返してくる人に会うとそんなこと聞いてねえよ!っていう気持ちになる」と言っていてとても納得した。 ビジネスにおいても、総論に対する賛成/反対を求められているのに「でもこういう場合は…」と各論で返している場に遭遇するので、自分も気を付けねばと思った 2023-06-20 19:16:42

    「全体の話をしてるのに自分の話で返す人」にイライラする!→様々な意見が集まる
    akisei67
    akisei67 2023/06/21
    ビジネスシーンだとむしろ各論の話をしているのに必要のない全体論(一般的には〜、この業界では〜)を出してくる人の方が多い気がする。会話の解像度について来れないなら意見しなくてもいいんですよ?
  • 自社開発メガベンチャーをわずか半年で鬱退職した雑魚エンジニアの話|JoanOfArc

    はじめに 当記事を開いてくださりありがとうございます。私は表題の通り、私は一般にメガベンチャーと呼ばれる自社開発企業で機械学習エンジニアとして勤務しはじめてからわずか半年で、を発症し退職することになったものです。この会社は待遇も良く、社風としても労働者思いのとても素晴らしい会社であったと私自身振り返って思います。 そんな会社に運よく入社することができた私ですが、わずか半年で「状態」と心療内科から診断を受け休職し、会社制度により退職することになりました。「え?そんなに素晴らしい環境なのにメンタル弱すぎでは?」と思われる方もいらっしゃることでしょう。返す言葉が全くありません。おっしゃる通りです。 しかし同時に、「何故になったの?」と思われる方もいらっしゃるのではないでしょうか。記事ではこの点についてを発症した人の目線から「どうしてそんなことが起きてしまったのか」という点について考察

    自社開発メガベンチャーをわずか半年で鬱退職した雑魚エンジニアの話|JoanOfArc
    akisei67
    akisei67 2023/05/21
    リファクタリングもビジネスへの貢献がないならただの自己満足にしかならないよね。他の人が書いてるように会社やチームのゴールから逆算する意識がないのであれば、指示待ちな職場の方が向いてるんだろうなと思う。
  • GraphQL 成熟度モデル - とろろこんぶろぐ

    記事の概要 この記事は、Meta 社 relay.dev チームの Jordan Eldredge 氏の Tweet で紹介された GraphQL 成熟度モデル (GraphQL maturity model) を個人的な見解を加えながら和訳した記事です。 jordaneldredge.com GraphQL を実装する上で、どの程度 GraphQL を使いこなせているか判断するための参考になれば幸いです。 実際の成熟度モデルの和訳 最初の Tweet 私は、GraphQLの利点がまだ十分には理解されていないと思っています。ほとんどの組織では、GraphQL の提供する価値を捉えきれていません。 そこで、私は「GraphQL成熟度モデル」をスケッチしてみました。あなたの組織はどの程度成熟して(=使いこなせて)いますか? もし以下に示す13の成熟度を達成していたとしたら、よりGraphQL

    GraphQL 成熟度モデル - とろろこんぶろぐ
  • Dev Containerを使ってステップバイステップで作るPythonアプリケーション開発環境 - 電通総研 テックブログ

    みなさんこんにちは、電通国際情報サービス(ISID)Xイノベーション部ソフトウェアデザインセンターの佐藤太一です。 この記事では、VS CodeのDev Containerを使ってOSに依存しないPythonの開発環境を構築する方法をステップバイステップで丁寧に説明します。 VS Codeの利用経験があり、またPythonによるアプリケーション開発に興味のある方を想定読者として記述しています。Pythonの初心者から中級者向けを意識して書いていますので、意図して冗長な説明をしています。 すでにPythonによるアプリケーション開発に十分に詳しい方は、まずはまとめだけ読んでみてください。私自身それほどPythonのエコシステムに詳しいわけではありませんので、知識の抜け漏れは恐らくあるでしょう。そういった事に気が付いたら、XなどのSNSでこの記事のURLを付けてコメントをしていただけると幸い

    Dev Containerを使ってステップバイステップで作るPythonアプリケーション開発環境 - 電通総研 テックブログ
  • 検索が爆速になるデータベース設計を公開します

    こんにちは。エンジニアの谷井です。 フォルシアでは、Spookと呼んでいる技術基盤を用いて、主に旅行業界やMRO業界に対して、膨大で複雑なデータを高速検索できるアプリケーションを提供しています。 今回はその高速検索のノウハウのうち、特にDBの扱いに関連する部分について、ベテランエンジニアへのインタビューを通してそのエッセンスをまとめてみました。 一般的なベストプラクティスだけでなく、検索性能を高めることに特化しためずらしいアプローチもあるので、ぜひご覧ください。 フォルシアにおける検索DBについて まず前提としてフォルシアで扱うデータについて軽く説明します。 扱うデータの複雑さ たとえば、旅行会社向けのアプリケーションであれば、宿泊素材の情報としては ホテルの情報「〇〇ホテル」(~約2万件) プランの情報「朝付き・ロングステイ△△プラン」(0~1500件/施設) 客室の情報(~100件/

    検索が爆速になるデータベース設計を公開します
    akisei67
    akisei67 2023/04/29
    ここまで駆使するなら素直に横に全文検索建ててしまいたくなるけど、ビジネス要求でそれができないのかな?
  • husky + lint staged でコミット時に型チェックをする

    これを husky でコミット時に実行したかったので、 lint-staged.config.js を以下のように書いていたが module.exports = { '*.{ts,tsx}': [ 'pnpm run lint', 'pnpm run types:check', 'pnpm run format:check', ], }

  • TypeScriptをコンパイルしてWebAssemblyバイナリに、実現を目指す「TypeScript Compilation SIG」をByteCode Allianceが発表

    TypeScriptをコンパイルしてWebAssemblyバイナリに、実現を目指す「TypeScript Compilation SIG」をByteCode Allianceが発表 WebAssemblyの普及と発展を目的とするByteCode Allianceは、TypeScriptのコードをコンパイルしてWebAssemblyバイナリを生成できるようにすることを目指すスペシャルインタレストグループ「TypeScript Compilation SIG」を発表しました。 WebAssemblyの仕様策定はW3Cが行っており、ByteCode AllianceはそのWebAssemblyを基盤として、クロスプラットフォーム対応を実現するAPI群のWASI(WebAssembly System Interface)やコンポーネントモデル、ガベージコレクション対応などの拡張、およびそれらの事実

    TypeScriptをコンパイルしてWebAssemblyバイナリに、実現を目指す「TypeScript Compilation SIG」をByteCode Allianceが発表
  • コードには型アノテーションよりも要件アノテーションを増やせ!/harajukuts2

    2022/1/28 Harajuku.ts Meetup #2 にて使用した資料です。 11ページ目はString#join()ではなくArray#join()の誤りでした。お詫びいたします。

    コードには型アノテーションよりも要件アノテーションを増やせ!/harajukuts2
  • 【React】useMemo の使い時をまとめる

    chot Inc. で Web エンジニアをしているすてぃんです。今回は社内で useMemo の使い時がわからんという話題が挙がったので、ケースによる使い時と解説をまとめました。コードレビュー時などの参考になれば幸いです。 結論 値の計算量が大きい場合: 使う 値の計算量が小さい場合 値が primitive の場合: 使わない 値がオブジェクトや配列の場合 値をスコープ外に持ち出す場合: 使う 値をスコープ外に持ち出さない場合: 使わなくてもいい 値が関数の場合: useCallback を使う 色々条件あってよくわからんという場合: 使わなくていいです 前提知識 useMemo とは useMemo は次のような型で定義される React Hooks の 1 つです。 第 1 引数で渡す関数 factory の戻り値と useMemo 自体の戻り値の型が一致しています。それもそのはず

    【React】useMemo の使い時をまとめる
  • GraphQLはサーバーサイド実装のベストプラクティスとなるか - Qiita

    この記事は GraphQL Advent Calendar 2020 14 日目の記事です。 前回の記事は @joe-re さんの 「ライブラリの実装からCursor-based paginationにおけるcursorのフォーマットのベストプラクティスを探る」 でした。 前置き GraphQLは2010年代後半に出てきた技術の中でも個人的に特に強力なアプリケーション実装パターンの一つだと思っているのですが、シンプルな実装なのに利用用途が豊富にあることと利用する立場が違うと全く印象を抱く事から全体像を掴みづらく、来持つべきポテンシャルに対してまだ認知が広がっておらず利用されていないように感じます。 今回はサーバーサイドからの視点を中心にGraphQLを構築する要素を分解して解説するのとともに、それを利用した際にWebアプリケーション開発やそれに関わるエンジニアに起きうる変化について書いて

    GraphQLはサーバーサイド実装のベストプラクティスとなるか - Qiita
  • 初級から上級までセキュアなAWS環境の作り方

    2023年に実施されたAWS Summit Tokyoの自社ブースで登壇した「初級から上級までセキュアなAWS環境の作り方」の内容です。詳細は以下ブログでも解説しています。 https://dev.classmethod.jp/author/usuda-keisuke/

    初級から上級までセキュアなAWS環境の作り方
  • Breaking React Query's API on purpose

    Breaking React Query's API on purpose16.04.2023ReactJs, React Query, JavaScript, TypeScript — 7 min read Designing APIs for library interfaces is a pretty hard thing to do. You want your APIs to be flexible and cater to all needs. At the same time, you'd want them to be minimal and intuitive to avoid a steep learning curve. Those things are two sides of the same coin, and you'd likely want to b

    Breaking React Query's API on purpose