タグ

開発に関するqinglongのブックマーク (362)

  • 「JavaScriptで要素をドラッグして移動する簡単な方法」という記事が初耳だらけだった件 - Qiita

    はじめに まず↓の記事を見てない方はぜひ見てください! 自分にとってはこの記事には「えっ、ナニコレ!」なテクニックが多く、特に解説もなかったのでいろいろ調べてたら休日が消えてました... なのでその時間の供養もかねて、自分が知らなかった部分を中心に、僭越ながら元記事の解説を書いてみたいと思います。 ちなみに、以下が元記事のコードそのままを実装したものです。たしかに掲載コードだけで要素がグリグリ動きますね。 See the Pen js-drag-move-original by www-tacos (@www-tacos) on CodePen. 初耳1: $img まずコードのここ <img id="$img" src="https://js.cx/clipart/ball.svg" width="40" height="40"> <script> $img.onpointermove

    「JavaScriptで要素をドラッグして移動する簡単な方法」という記事が初耳だらけだった件 - Qiita
  • Next.js 製アプリケーションの CI の実行時間削減や安定性向上のために取り組んだこと - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは!DOGO プロジェクトでソフトウェアエンジニアとして活動している @nissy_dev です。 DOGO プロジェクトでは、画面刷新を進めていく中で CI の実行時間が長く不安定になってしまい、開発生産性に大きな影響が出ていました。今回の記事では、CI の課題改善のために取り組んだことを紹介します。 目次 DOGO について CI を改善することになった背景 CI の改善のために取り組んだこと ビルド時に tsc を実行しない .next/cache を除いて、artifacts にアップデートする E2E テストをより多くの shard 数で分割する Playwright のブラウザのインストールをキャッシュする PR ではコード差分に関連するテストのみを実行する Hydration の挙動によってテストが flaky になっていた問題の解消 CI の改善の結果 今回取り組ま

    Next.js 製アプリケーションの CI の実行時間削減や安定性向上のために取り組んだこと - Cybozu Inside Out | サイボウズエンジニアのブログ
  • UbieにおけるGo言語のエラーハンドリング

    背景 Ubieでは以下の記事にあるように、一昨年から新しく始めるプロジェクトにはGoTypeScriptを積極的に採用しています。私は来プロダクトセキュリティが主な専門領域なのですが、公私ともに普段からGoでツールやサービスの開発をしているため、社内のGo言語の普及をサポートしたりプロダクト開発に参加したりしています。 Go言語で開発したことがある方はご存知かと思いますが、Goは標準パッケージで提供されているエラーハンドリングは最低限の機能しか提供されていません。これは、CLIツールなどではエラーの内容が簡潔に表せてよいのですが、サーバサイドアプリケーションのようにエラーにまつわる情報を詳細に残してあとから調査に利用する、という場面では不向きです。特に番環境でしか再現しないようなエラーの場合は、いかに関連情報を残せているかが、問題の解決に大きく影響します。 先日も話題になっていました

    UbieにおけるGo言語のエラーハンドリング
  • ネットスーパーアプリ GraphQL から REST へ移行始めました - every Tech Blog

    はじめに こんにちは、retail HUBで Software Engineer をしているほんだです。 今回は私が現在着手している事業譲渡されたアプリを社内で持続的なプロダクト開発を行える状態にするリプレイスプロジェクトをどのように行っているか紹介しようと思います。 この記事ではリプレイスを行うにあたってどのようなことを課題に感じてその課題に対してどのような解決策をとったか主にサーバーの実装について説明しています。 ネットスーパーアプリとは 現在弊社ではネットスーパーアプリとして Web アプリとスマホアプリの二つのシステムを提供しています。 Web アプリは販促コンテンツの設定や売り上げの管理・集計を行うことが可能な管理システムと受け取り方法に応じた価格変更や送料変更にも対応し、消費者の柔軟な買い物を実現するお客様向けアプリを 17 の小売り様に、スマホアプリでは Web アプリのお客

    ネットスーパーアプリ GraphQL から REST へ移行始めました - every Tech Blog
  • Firebase Authのリダイレクトログインを使っている人は今年の6月までに対応しないと大変ですよという注意喚起

    公式ドキュメントに書いてあり、Firebaseからもメールなどで通知されていることではあるのですが、意外と見落としたままになっているかもしれない情報なので、啓蒙の意味も込めて記事にします。 結論 Firebase AuthのJavaScript SDKを使っている場合、今年6月までに以下のドキュメントに従った対応をしないとChrome/Edgeでリダイレクトログインが動かなくなります。 サードパーティのストレージ アクセスをブロックするブラウザで signInWithRedirect を使用する場合のベスト プラクティス 必要な対応 公式ドキュメントにある対応選択肢を、補足や注意点も含めた形で以下に焼き直してみます。 ポップアップ形式のログインでもいい場合 同一タブ内でリダイレクトしてログインする形式から、ポップアップウインドウを開いてログインする形式に切り替えましょう。 (公式ドキュメン

    Firebase Authのリダイレクトログインを使っている人は今年の6月までに対応しないと大変ですよという注意喚起
  • チルなタスク管理アプリ『Chill Pulse』Steam向けに発表。Lo-Fiな音楽を流しながら、ToDoリストを作成 - AUTOMATON

    デベロッパーのCatos Gameは3月13日、タスク管理アプリ『Chill Pulse』を発表した。対応プラットフォームはPCSteam)で、日語表示に対応する模様。今年第1四半期に配信予定とされているため、この3月中にはリリースされるようだ。 『Chill Pulse』は、ユーザーの勉強や仕事の生産性を向上させるために役立つアプリだという。ゲーム作品ではない。アプリを開くと、机に向かって勉強をしている女の子のシーンが表示。彼女の衣装や部屋のデザイン、また窓の外の風景は、レトロ調やサイバーパンク調に変更可能。傍らではが寝ており、人気YouTubeチャンネルLofi Girlのアニメーションを彷彿とさせる、落ち着いた雰囲気を感じられる。 基的な機能のひとつとして音楽プレイヤーがあり、収録されたLo-Fi音楽やアンビエントサウンドを流すことができる。上述したビジュアルとあわせて、ユー

    チルなタスク管理アプリ『Chill Pulse』Steam向けに発表。Lo-Fiな音楽を流しながら、ToDoリストを作成 - AUTOMATON
  • Amazon S3 へのファイルアップロードで POST Policy を使うと、かゆいところに手が届くかもしれない - カミナシ エンジニアブログ

    はじめに こんにちは。カミナシでソフトウェアエンジニアをしている佐藤です。 みなさんは、アプリケーションのフロントエンドから、Amazon S3 にファイルをアップロードするときに、どのような方法を用いているでしょうか? 「バックエンドのサーバーにファイルを送信し、バックエンドのサーバー経由で S3 にアップロードしている」「Presigned URL を払い出して、フロントエンドから直接 PUT している」など、いくつかの方法があると思います。 弊社で提供しているサービス「カミナシレポート」でも、用途に応じて上記の方法を使い分けて S3 へのファイルのアップロードを行っています。 特に、Presigned URL は、手軽に利用できる上に、バックエンドのサーバーの負荷やレイテンシーの削減といったメリットも大きく、重宝しています。 一方で、その手軽さの反面、アップロードに際して様々な制約を

    Amazon S3 へのファイルアップロードで POST Policy を使うと、かゆいところに手が届くかもしれない - カミナシ エンジニアブログ
  • オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ

    オンラインゲームを作ろう!と思ったことがある方は、 こちらの講演記事を1度は見たことがあるのではないでしょうか。 www.4gamer.net こちらの講演は、具体例を交えながら非常に分かりやすくオンラインゲームの主な同期方式が説明してあり、 2024年現在でもオンラインゲームの基礎を学ぶ資料として真っ先に名前を上げる最高の資料です。 しかしながら講演は2010年のものであり、オンラインゲームはこの10年余りで進化しています。 この辺りの進化の話を簡単にまとめつつ、オンラインゲームの同期方式の選び方を紹介します。 (上記講演記事の知識/用語を前提としているため、先に上記記事をお読みください。) オンラインゲームの民主化について 技術の話をする前に。 近年、「マルチプレイヤーゲーム」と聞いてオフラインの画面分割ゲームを想像する人はいないと言って良いほど オンラインゲームは民主化されてきました

    オンラインゲーム 10年の進化と同期方式の選び方 - きゅぶろぐ
  • GraphQL「良さ」・「難しさ」再探訪 〜スタディサプリにおける実例〜 / StudySapuri with GraphQL

    2024/02/08 に「LayerX、スタディサプリ、SHEと考える GraphQLが向いている現場とは?運用実践LT」で、内山高広( @highwide )が発表した資料です。 #Offers_GraphQL実践LT

    GraphQL「良さ」・「難しさ」再探訪 〜スタディサプリにおける実例〜 / StudySapuri with GraphQL
  • Reactの状態を理解して適切にHooksを利用する

    Reactと状態は切っても切れない関係です。なぜなら、Reactは状態に基づいて画面を更新するコンポーネントベースのUIライブラリだからです🤝🏻 そんなReactの状態を管理・操作しやすくしてくれているのが、React 16.8から登場したフックです。それゆえ、フックを正しく利用するにあたってReactの状態の理解は非常に重要であり、Reactの状態の理解があやふやだと、予期せぬ挙動やバグのもとになりかねません。 今回の記事では、Reactの状態を理解しながら適切な箇所で適切なHooksを選択していくプロセスを再確認できた!自信を持ってReactをコントロールできるようになりそう!と言えることをゴールとしています🎉 今回使用した即席匿名メモアプリのコードベースです。 サークルでは、コミットに沿って説明をしていきました。(あくまで即席なので細かいこと気にしながら作ってませんorz) 【

    Reactの状態を理解して適切にHooksを利用する
  • Next.js + TypeScript + Tailwind CSS の開発環境をできるだけ丁寧に構築する【2024年】

    はじめに 最近、Next.jsTypeScriptTailwind CSSを使って技術ブログを立ち上げました。(まだあまり更新は進んでいませんが…) このプロジェクトを通じて構築した開発環境がわりと快適だったので、誰かの参考になるかもしれないと記事を書いてみることにしました。 できる限りわかりやすく詳細な説明を心がけましたが、その結果、記事のボリュームが大きくなってしまいました。長文ですが、興味のある方はぜひ読んでみてください🙏 また、この記事内で紹介した内容をセットアップしたリポジトリを公開しています。 Next.jsのボイラープレートとして活用可能ですので、興味のある方はぜひ覗いてみてください。

    Next.js + TypeScript + Tailwind CSS の開発環境をできるだけ丁寧に構築する【2024年】
  • 【MySQL】フロントエンドエンジニアがMySQLのWITH句の便利さを知った話

    はじめに こんにちは。kouです。 自分は普段の開発業務ではフロントエンド及びバックエンドのどちらもを触ることが多いのですが、元々はフロントエンドに興味関心があってフロントエンドを中心に学習をしていたこともあり、バックエンド技術に関しては相対的に見てまだまだ広い知見がありません。 そんな自分が、最近業務内でMySQLのWITH句を使用する機会があり、SQLの可読性向上の観点からとても有用なものだと感じたので、今回はその紹介をします。 WITH句とは WITH句とは、SQL(主にサブクエリ)の実行結果に対して名前をつけて一時的な仮想テーブルを作成し、それをメインクエリ内から参照できるというものです。別名を「共通テーブル式(Common Table Expressions, CTE)」と呼びます。 言葉だけでは伝わりづらいので、以下にサンプルコードを用いてその有用性を説明します。 まずはこちら

    【MySQL】フロントエンドエンジニアがMySQLのWITH句の便利さを知った話
  • Reactにおけるパフォーマンス最適化のTips

    はじめに React は内部でのパフォーマンス最適化により UI 更新に必要な DOM 操作の数を軽減しています。記事では、さらに React アプリケーションを最適化するテクニックを紹介します。 前提知識 以下にレンダリングの仕組み等を解説します。すでにご存知の方は飛ばしてテクニックの章をお読みください。 React がどのように UI を更新するのか レンダリングされたコンポーネントを作成した時、React はコンポーネントの要素木に対してvirtual DOMを作成します。コンポーネントの状態が変わるたびに React は virtual DOM 木を作成し以前のレンダリング結果と比較します。それらの違いのみを変更された要素の実際の DOM に反映します。 実際の DOM は操作するのにパフォーマンスコストがかかるため、React は virtual DOM を用いることで再レンダ

    Reactにおけるパフォーマンス最適化のTips
  • App Router | Next.js 公式ドキュメント 日本語翻訳プロジェクト

    ドキュメントは公式ドキュメントの v14.1.0 の断面を翻訳したものです。Next.js の公式 X アカウントにもポスト頂きました。 公式ドキュメントのアップデートに追随して適宜更新しますが、最新情報が反映できていない可能性があります。 一部翻訳途中のページがありますが、随時翻訳を追加予定です。 Next.js の App Router は、React の最新機能を使ってアプリケーションを構築するための新しい方法です。すでに Next.js に慣れ親しんでいる方であれば、App Router が既存のファイルシステムベースのルーターである Pages Router の自然な進化形であることがわかるでしょう。 新しいアプリケーションには、App Router の使用をお勧めします。既存のアプリケーションについては、段階的に App Router に移行できます。同じアプリケーションで両

    App Router | Next.js 公式ドキュメント 日本語翻訳プロジェクト
  • 【2023年版 優良ツールまとめ】このツールを使っていないエンジニアは人生を悔い改めよ - Qiita

    弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 はじめに 記事は2023年のエンジニア向け生産性向上ツールの紹介記事です。 2022年11月のChatGPTの登場を機に生成AIは急激な進化をみせ、生成AIに関連したツールが次々と登場しています。ソフトバンクグループの社長である孫正義氏が 「ChatGPTを使ってない人は『人生を悔い改めた方がいい』」と発言 するほど、これからは"どのようにAI等のツールを活用するか"が重要となります。強気の発言ではありますが、活用するのか・取り残されるのかという危機感を強く持つべきとの意図であるといえます。 実際、現代ではITツールを使いこなしてるか否かで生産性に明確な違いが現れるように

    【2023年版 優良ツールまとめ】このツールを使っていないエンジニアは人生を悔い改めよ - Qiita
  • 開発者が知るべきキャッシュ設計でよく遭遇する問題

    はじめに 分散システムの設計および開発において、キャッシュはパフォーマンス向上のための非常に重要な要素です。頻繁にアクセスされるデータをキャッシュすることで、アクセス速度が遅いデータベースへのアクセスを削減し、データへの迅速なアクセスを可能にします。これにより、システムの全体的な効率とパフォーマンスが向上します。 しかし、キャッシュは慎重に設計しないとむしろパフォーマンス上のデメリットになるケースが存在します。 この記事ではよく遭遇するキャッシュ設計の問題とその回避策について解説します。 Cache penetration DBに存在しない値を検索したときに、DBから返された空の結果をキャッシュしない場合に発生するシナリオです。 このシナリオではDBに存在しない値を繰り返し検索することにより、その値がキャッシュされていないため検索ごとにDBへのアクセスが必要になってしまいます。 存在しない

    開発者が知るべきキャッシュ設計でよく遭遇する問題
  • Node.js でメモリ肥大化の原因を特定してみた

    はじめに ユビーでエンジニアをしているおおいしつかさです。 これは、Ubie Engineering Advent Calendar 2023の12月7日の記事になります。 何を書こうかなー、最近はユビーの根幹システムのリアーキテクチャをやっているのでその辺かなーと思ったのですが、まだ仕掛かり中だということと具体な業務に直結しそうな内容なので抽象化して書くのが面倒そうだなーと思ってたところに軽いトピックが飛び込んできたので、そのことを書くことにしました。 ChatGPTはみなさん使われていると思いますが、ぼくも別の業務でOpenAI関連の機能開発に携わっています(ユビーで働くといろんな業務に携われるのがいいところです) 。 その仕事の中で、Node.js環境でメモリ肥大化の事象に遭遇したので、それをどのように発見して改善したかについてお話します。 ぼくは今も昔もRubyが大好きですが、ふだ

    Node.js でメモリ肥大化の原因を特定してみた
  • React の useEffect とクリーンアップ関数の実行タイミングがこれだけで分かる

    React の useEffect の実行タイミングについて、このように思っていませんか? 依存配列(第2引数として渡す配列)を省略したら、マウント時に、そのあと再レンダーごとに実行される 依存配列に空配列を入れたら、マウント時に実行される 依存配列に値を入れると、マウント時と、値が変わるごとに実行される しかもクリーンアップ関数も絡んで来て、もっと複雑で覚えられない… …そのように考える必要はありません。 実は、useEffect の規則は至ってシンプルで、しかも UI ロジックの頻出の課題を洗練されたパターンに落とし込んで解決してくれます。 エフェクトとクリーンアップの実行タイミングは、以下のように論理的にシンプルな形で捉えることができます。 マウント時 に初回のエフェクトが発火され、アンマウント時 に最後のクリーンアップが実行される。 再レンダリング時 に、前回のエフェクトをクリーン

    React の useEffect とクリーンアップ関数の実行タイミングがこれだけで分かる
  • フロントエンドのテスト構成について考えてみた in 2023

    はじめに この記事では、 フロントエンドの開発において意義のあるテストはなにか? それらをコスパよく実現するためにはどうすればよいか? について考えて、作った構成を紹介します。 前提 下記の技術スタックを利用していますが、これ以外のスタックでも応用可能な仕組みが多いと思います。 Next.js Storybook playwright msw msw-snapshot (拙作) 注意事項 この記事の構成は、まだまだ実験的な機能だったり怪しい技術が一部採用されています。 msw-snapshot 拙作のライブラリであって、動作が怪しい可能性がめっちゃあります。 Next.js の testmode playwright + msw を実現するために必要でした。 まだまだ全然まともに動かないかもしれません。(サンプルリポジトリの単純なテストは動いた) サンプル 下記のリポジトリにサンプルを用意

    フロントエンドのテスト構成について考えてみた in 2023
  • 失敗から学ぶAPIファースト / API first learning from failure

    Presentation Slides for ServerlessDays Tokyo 2023 ( connpass) Session Title: 失敗から学ぶAPIファースト ~ 正しいデザインからはじめるアーキテクチャ選定、開発ライフサイクル&コラボレーション Session Video: [ServerlessDays Tokyo 2023] 失敗から学ぶAPIファースト / 川崎庸市 Date: 2023/09/23 Update history - 2023/09/24: fix typo - 2023/12/13: p19 表現を更新「APIファースト」→「APIファースト開発モデル」

    失敗から学ぶAPIファースト / API first learning from failure