ka2jun8のブックマーク (89)

  • App Router移行時に0.01%の確率でCSR遷移が404エラーになる - とろろこんぶろぐ

    概要 Pages Router から App Router 移行時に一部既存の画面での CSR 遷移が 404 エラーになりました。 この件について調査したので、記事にしてまとめておきます。 前提 今回発生したバグの内容の再現環境の特徴として、以下が挙げられます。 Next v13.5.6 Base path の設定あり App Router と Pages Router が共存している Base Path について Base Path の設定は next.config.js に以下のような記載があると、 module.exports = { basePath: '/base', } /pages/examples.tsx で配置したページコンポーネントが、 URL /base/examples で閲覧できるようになるものです。 また以下のような Link コンポーネントは、自動的に Ne

    App Router移行時に0.01%の確率でCSR遷移が404エラーになる - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2024/04/04
  • Next js v14 で考える開発チームの事業的貢献 - とろろこんぶろぐ

    はじめに 今年の 2023年5月に Next.js の v13.4 がリリースされ App Router が Stable になり Vercel 推奨の実装方式となりました。 さらに10月 Next Conf にて、 Next.js v14 がリリースされ App Router を代表する新機能である Server Actions が Stable になりました。 App Router はこれからのWeb開発の未来を担うフレームワークになっていくことが予想されており注目度の高い技術です。一方、これまでの Pages Router からの変更点の多さ、機能の興味深さ、設計の複雑さ、動作の不安定さなども含め、さまざまな要因でいまでもたくさん議論になっています。 今後どこかのタイミングで App Router へ対応する必要があることは明らかなものの、技術の不安定さが気になる上に、ある程度規模の

    Next js v14 で考える開発チームの事業的貢献 - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2023/12/04
  • 株式会社リクルート エンジニアコース新人研修の内容を公開します!(2023年度版)

    こんにちは! 2023年度エンジニア新卒の、吉田です。 株式会社リクルート 新卒エンジニアコースでは、部署への配属前に、BootCampと呼ばれる新人研修を行っています。 日は2023年度の研修の内容を、実際に受講した新卒の立場から紹介させていただきます。 研修の内容については毎年反響をいただいていますが、今年度も一段と進化し、より充実した研修でした。 ページ下部に研修資料を公開していますので、ぜひ研修の雰囲気を感じ取っていただけると嬉しいです。 研修の概要 エンジニアコースの新人研修は、配属後にスピード感を持って成長できるようになることを見据え、 「さまざまな技術領域の講座を受け、興味関心を広げて、知らなかった好奇心に出会う」 「現場で求められる『仕事への取り組みスタンス』をつかむ」 「気軽に相談できる仲間(同期)をつくる」 の3点が目的とされています。 今年度は、入社前に行われたスキ

    株式会社リクルート エンジニアコース新人研修の内容を公開します!(2023年度版)
    ka2jun8
    ka2jun8 2023/08/11
  • GraphQL 成熟度モデル - とろろこんぶろぐ

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

    GraphQL 成熟度モデル - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2023/05/01
  • Docker一強の終焉にあたり、押さえるべきContainer事情

    章立て はじめに Docker・Container型仮想化とは Docker一強時代終焉の兆し Container技術関連史 様々なContainer Runtime おわりに 1. はじめに Containerを使うならDocker、という常識が崩れつつある。軽量な仮想環境であるContainerは、開発からリリース後もすでに欠かせないツールであるため、エンジニアは避けて通れない。Container実行ツール(Container Runtime)として挙げられるのがほぼDocker一択であり、それで十分と思われていたのだが、Dockerの脆弱性や消費リソースなどの問題、Kubernetes(K8s)の登場による影響、containerdやcri-o等の他のContainer Runtimeの登場により状況が劇的に変化している。記事では、これからContainerを利用したい人や再度情報

    Docker一強の終焉にあたり、押さえるべきContainer事情
    ka2jun8
    ka2jun8 2023/04/03
  • msw が Service Worker に依存する時代が終わっていた話 - とろろこんぶろぐ

    概要 msw はいつの間にかモックツールとしてデファクトスタンダードになりました。 github.com Mock Service Worker という名の通り、Service Worker を利用して、アプリが API サーバーとやりとりするリクエスト/レスポンスをモックすることができるツールです。 ただ、ふと気がついたら Service Worker なしでモックできるようになっていたので、その小ネタを書きます。 この記事は Recruit Engineers Advent Calendar 2022 の9日目の記事です。 adventar.org Node でも使える msw ご存じの方も多いと思いますが、 msw は Node.js でも利用できます。 Node - Getting Started - Mock Service Worker Docs Node.js で利用できるの

    msw が Service Worker に依存する時代が終わっていた話 - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2022/12/16
  • [JavaScript] URLを文字列結合で組み立てないために、url-cheatsheetを作った

    [JavaScript] URLを文字列結合で組み立てないために、url-cheatsheetを作った URLを文字列結合で組み立てると色々問題が起きやすいので、それを避けるためにURL APIやURLSearchParams APIでURLを組み立てるパターンをまとめたチートシートを作りました。 azu/url-cheatsheet: URL manipulation cheatsheet for JavaScript URLにユーザーが入力した文字列を含めるときはencodeURIComponentでエスケープする URLはプレーンな文字列ではなく構造化された文字列(文字の並びに意味がある文字列)として扱わないと、さまざまな問題を抱えやすいです。 たとえば、次のように文字列結合でURLを組み立てるとパストラバーサルの問題があります。 name に ../../adminのような文字列が

    [JavaScript] URLを文字列結合で組み立てないために、url-cheatsheetを作った
    ka2jun8
    ka2jun8 2022/12/16
  • TypeScriptにおける配列の共変性

    const animal: Animal = { animal: "string", }; const dog: Dog = { animal: "string", dog: "string", }; いま,Dog <: Animalです. <:という記号は2つの型のあいだに書いて,「左の型が右の型のサブタイプである」と読みます. TypeScriptの型システムは構造的なので,2つのオブジェクトがサブタイプ関係にあるには,それらに共通するプロパティについてもまた,サブタイプ関係が必要1です. 今回の例では,DogとAnimalに共通するanimalプロパティについてstring <: stringなのでOKです. TSでは,S <: TならばT型の変数にS型の値を代入できます. つまり,Dog <: Animalなので Animal型の変数にDog型の値を代入できます.

    TypeScriptにおける配列の共変性
    ka2jun8
    ka2jun8 2022/12/16
  • 保守性の担保のために仕様を整理する方法 - とろろこんぶろぐ

    はじめに リリースされたプロダクトをエンハンス開発していく上で、保守性を保ち続けることがとても大事なのは言うまでもありません。 特に複雑な要件は実現するために難解なロジックを書く必要があります。 このことから 要件の複雑さと保守性はトレードオフになりがち です。 保守性を保つ方法はさまざまです。 例えば、可読性を高めるような書き方をした上でコメントを残したり、 Lintやテストなどツールを使ったりなどです。 しかし、この記事では書き方やツールではなく、 そもそも複雑になりそうな仕様を整理し要件から取り外すこと で保守性を保つ取り組みを紹介します。 この記事は Recruit Engineers Advent Calendar 2022 の2日目の記事です。 adventar.org 開発者が仕様の整理に入り込む フロントエンドエンジニアをやっていると、カジュアルに難解なUI要件が定義された

    保守性の担保のために仕様を整理する方法 - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2022/12/05
  • 自走する組織の立ち上げで大事にしている12のこと | 株式会社THE MOLTS

    はじめに|自走する組織が持つ5つの共通項 これまでにさまざまなクライアントのインハウス支援に携わらせていただき、一概に言えない側面もありますが、自走する組織にある共通点をまとめました。 1. 共通の目的、成果目標がある そもそも組織とは何なのかと考えた時に、アメリカの経営学者であるC.I. バーナード氏は著書『経営者の役割』の中で、組織とは「意識的で、計画的で、目的を持つような人々相互間の協働」であり、「二人以上の人々の意識的に調整された活動や諸力のシステム」だと述べています。 つまり、組織というのは目標に向かって協働体制を組んでいくものであり、共通の目標がなければ、それは組織ではなくただのグループ、人の集まりでしかないということ。 そのため、新たに組織をつくるという際には、何よりもメンバー間の中で「共通の目的、目標」となるものを設定することが大切であり、指標を定める必要があります。 2.

    ka2jun8
    ka2jun8 2022/11/03
  • Next.js x Relay な GraphQL 環境で Render-as-you-fetch の良さを最大限生かしつつ SSR にも対応したいあなたへ - Qiita

    Next.js x Relay な GraphQL 環境で Render-as-you-fetch の良さを最大限生かしつつ SSR にも対応したいあなたへRelayGraphQLNext.js はじめに 最近 Next.js ベースのプロジェクトGraphQL クライアントとして Relay を導入したのですが、これが端的に言ってめちゃくちゃ大変だったので記事にしました。 チームの試行錯誤の結果を余すところなく伝えたいと張り切りすぎた結果死ぬほど長くなってしまったので、「いいからコードはよ」という方は 最終的にこんな実装になりました (コード編)をご覧ください。 謝辞 愛するチームメンバーのみんな。これまでの道のりで私を支え、愛してくれたみんながいなければ、この記事は完成できなかったと思う。 また、この記事が世に出せたのは、スーパーテクニカルアドバイザーである koichik さんの

    Next.js x Relay な GraphQL 環境で Render-as-you-fetch の良さを最大限生かしつつ SSR にも対応したいあなたへ - Qiita
    ka2jun8
    ka2jun8 2022/10/25
  • Zod のスキーマが使えるAPIクライアントZodios を紹介したい - とろろこんぶろぐ

    概要 TypeScriptフロントエンド開発をしているとバックエンドのAPIを呼び出す際に、APIのパラメータ、レスポンスの型付けをしたくなります。 僕は最近この型付けにZodを使い、APIクライアントにはZodiosというライブラリを使っています。 github.com この記事では、Zodios でZodのスキーマ定義から型安全なAPIクライアントを作る方法を紹介します。 他のやり方 Types定義 純粋にパラメータとレスポンスの type を Type Alias で定義し、fetch やaxios などの素のAPIクライアントに型付けするやり方です。 APIのパスと、パラメータ、レスポンスの紐付けを人間が管理することになるため、ミスを防ぐことができません。 aspida この課題のためにaspidaがよく使われている印象があります。 github.com Open APIからas

    Zod のスキーマが使えるAPIクライアントZodios を紹介したい - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2022/09/14
  • 株式会社リクルート エンジニアコース新人研修の内容を公開します!(2022年度版)

    こんにちは!2022年度エンジニア新人の太田です。毎年反響を頂いているエンジニアコースの研修内容を、今年は受講者の立場から紹介させていただきます。 研修概要 リクルートの新卒エンジニアコースでは、入社した新人を対象に技術研修を行っています。その内容は、実際の開発業務に活かせる技術を扱う「当に必要な生きた知識・技術」を取り入れたものとなっています。 特筆すべき点として、研修の資料はほとんどが内製であることが挙げられます。そのため、講義中の質疑を通してより深い知識や、開発の現場で培われた経験に触れることができます。 フロントエンド、モバイルアプリ、バックエンド、インフラ、データ分析セキュリティなど幅広いテーマが扱われるため、知識のインデックスを張ることにもつながります。またハンズオンや競技形式の演習も取り入れられており、実際に手を動かすことで印象に残りやすく、エラーへの対処も学ぶことができ

    株式会社リクルート エンジニアコース新人研修の内容を公開します!(2022年度版)
    ka2jun8
    ka2jun8 2022/09/10
  • GraphQL / TypeScript 参考リンク一覧 - とろろこんぶろぐ

    概要 GraphQL の理解を進める上で参考になったものを載せます。 React.js, TypeScript, Relay が使われるプロダクトを想定しています。 コンセプト GraphQL 公式 GraphQL とは、を正確に知るための公式ドキュメントです。 graphql.org GraphQLとクライアントサイドの実装指針 GraphQL とはどういうものかが読みやすくまとめられています。 GraphQLとクライアントサイドの実装指針.md · GitHub GraphQL との向き合い方 2022 年版 2022 年現在における GraphQL の特徴がスライドでわかりやすくまとめられています。 speakerdeck.com Render as you fetch incremental GraphQL fragments Fragment Colocation のコンセプトが

    GraphQL / TypeScript 参考リンク一覧 - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2022/08/18
  • React 時代に選ぶ GraphQL - とろろこんぶろぐ

    概要 先日新規の Web サービス開発でフロントエンド側の技術選定を行いました。 利用する技術の中で GraphQL を提案した際に、RESTful な API で呼び出す方法と比較して納得感がないという意見があがりました。 そこで、なぜ、どういうときに GraphQL を選定すべきだと思うか、文章にして自分なりにまとめておこうと思います。 前提 構成が BFF か BE かで意見は大きく変わりません。 例えば BFF として利用されるケースでは、バックエンド側には BE チームとマイクロサービス的な API が存在しており、 BFF として GraphQL を配置するようなケースです。GraphQL のリゾルバは API を叩きます。 一方、 BE として利用されるケースとは、リゾルバが直接 DB を叩くような形です。 今回はフロントエンドのチームが管理する BFF として、JS のみで

    React 時代に選ぶ GraphQL - とろろこんぶろぐ
    ka2jun8
    ka2jun8 2022/08/12
  • GraphQLとの向き合い方2022年版

    MetricKitで予期せぬ終了を検知する話 / Detect unexpected termination with MetricKit

    GraphQLとの向き合い方2022年版
    ka2jun8
    ka2jun8 2022/02/23
  • Temporal で JavaScript の次世代の日時処理に触れてみる - Qiita

    この記事は Recruit Advent Calendar 2021 の 7 日目の記事です。 イントロダクション Web アプリケーションの新規開発をしていて、先日、日時処理のライブラリ選定をする機会がありました。直近のプロジェクトで date-fns を使っていたので、今回もそれでいいかと考えていたのですが、Temporal が TC39 プロポーザルではあるが stage 3 になっているから試してみてもいいんじゃないかという話になりました。stage 3 であれば  API 変更のハードルは非常に高いそうです。stage 3 になるまでの提案はこちらの記事が参考になります。少し見ただけでも大きく変わっていることがわかります。 プロジェクトはまだ開発段階ですが、実際に Temporal をプロジェクトに導入しながら、検証兼開発を進めていいます。しかし、Temporal を実際に使って

    Temporal で JavaScript の次世代の日時処理に触れてみる - Qiita
    ka2jun8
    ka2jun8 2021/12/09
  • より速い WEB を目指す Next.js / nextjs-make-the-web-faster

    Next.js Update!】v12リリースを踏まえ、Next.jsの採用を考える 発表は以下URLでアーカイブ視聴が可能です。https://youtu.be/KaS3bgz_CA4 イベントページ:https://forkwell.connpass.com/event/228457/

    より速い WEB を目指す Next.js / nextjs-make-the-web-faster
    ka2jun8
    ka2jun8 2021/11/25
  • 「どんな文章も3行に要約するAI」デモサイト、東大松尾研発ベンチャーが公開 「正確性は人間に匹敵」

    東京大学・松尾豊研究室発のAIベンチャーELYZA(イライザ/東京都文京区)は8月26日、文章の要約文を生成するAI「ELYZA DIGEST」を試せるデモサイトを公開した。人間より短時間で要約でき、要約の正確性は「人間に匹敵する」という。今後も精度を高め、議事録作りやコールセンターでの対話メモ作成などでの活用を目指す。 同社は自然言語処理技術NLP)の研究を進めており、日語テキストデータの学習量・モデルの大きさともに日最大級というAIエンジン「ELYZA Brain」を開発している。 ELYZA DIGESTは、大規模言語モデルを基に、要約というタスクに特化したAIとして開発。読み込んだテキストを基に、AIが一から要約文を生成する「生成型」モデルで、文の一部を抜き出す「抽出型」モデルなどと異なり、文の構造が崩れていたり、話者が多数いる会話文だったりしても、精度の高い要約文を生成でき

    「どんな文章も3行に要約するAI」デモサイト、東大松尾研発ベンチャーが公開 「正確性は人間に匹敵」
    ka2jun8
    ka2jun8 2021/08/27
  • LIFULLでの1on1: 「特に話したいことはありません」を解決した話 - LIFULL Creators Blog

    こんにちは。LIFULLのプロダクトエンジニアリング部の野澤です。エンジニアリングマネージャーをやっています。 LIFULLでは組織構造として部の下に「ユニット」があり、その下に「グループ」がぶら下がっています。 今期からは私はユニット長を拝命し、間接マネジメントを行うようになりました。 マネジメント業務の中でも1on1は部下のモチベーション維持やキャリア形成、戦略理解を促進させるために重要な手法です。 グループ長時代も1on1はやっておりましたが、間接マネジメントをやるにあたり、メンバーからは相談がしにくくなってしまったようで、「特に話したいことはありません」となってしまうことが増えていきました。 そこで改めて1on1を有意義にするためにはどうしたらいいか考えてみました。この記事ではそのための取り組みを紹介できればと思います。 LIFULLでの1on1 1on1は今やいろんな業界や会社で

    LIFULLでの1on1: 「特に話したいことはありません」を解決した話 - LIFULL Creators Blog
    ka2jun8
    ka2jun8 2021/05/01