タグ

JavaScriptに関するdorapon2000のブックマーク (28)

  • GitHub - antfu/eslint-plugin-format: Format various languages with formatters in ESLint

    dorapon2000
    dorapon2000 2025/04/22
    "Format various languages with formatters in ESLint. Supports Prettier and dprint. Side-effects-free and fully configurable."
  • GitHub - thepassle/eslint-plugin-barrel-files

  • Speeding up the JavaScript ecosystem - The barrel file debacle

    Let's imagine you are working on a big project with many files. You add a new file to work on a new feature and import a function from another directory into your code. import { foo } from "./some/other-file"; export function myCoolCode() { // Pretend that this is super smart code :) const result = foo(); return result; } Excited about finishing your feature, you run the code and realize that it t

    Speeding up the JavaScript ecosystem - The barrel file debacle
    dorapon2000
    dorapon2000 2025/04/14
    “Barrel files are files that only export other files and contain no code themselves.”
  • ライブラリ依存せずyyyy-MM-ddの日付文字列を取得する最短のJavaScriptコード - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    ライブラリ依存せずyyyy-MM-ddの日付文字列を取得する最短のJavaScriptコード - Qiita
    dorapon2000
    dorapon2000 2025/04/04
    “sv-SEはスウェーデンの国コードで、それの日付フォーマットはyyyy-MM-ddである。”
  • mapbox-gl-js で複雑な表示のアイコンを作る場合や描画順序を変更する場合の工夫 - Mobile Factory Tech Blog

    はじめに 駅メモ!チームでエンジニアをしている id:wgg00sh です。 この記事では、駅メモ!内で地図クライアントとして使用している mapbox-gl-js を使うにあたって工夫した点などを紹介していきます。 【✨新機能リリース✨】 6/1 12時頃より、アプリ版駅メモ!にて「タイムラインと地図の切替機能」をリリースしました🎉 機能では地図を見ながらチェックインが行えたり、 地図上でレーダーの対象駅や駅の属性等を確認することができます💪 詳細はお知らせよりご確認ください♪#駅メモ #駅メモ10周年 pic.twitter.com/vneZv27AVU— 駅メモ!公式 (@ekimemo) June 1, 2024 駅メモ!では、2024 年 6 月に、「タイムラインと地図の切替機能」(以降:タイムライン地図、機能)をリリースしました。 機能の実現にあたって、苦労した点やそ

    mapbox-gl-js で複雑な表示のアイコンを作る場合や描画順序を変更する場合の工夫 - Mobile Factory Tech Blog
    dorapon2000
    dorapon2000 2025/01/30
    “1 つのアイコンには 1 つの画像までしか利用することができません。 そのため「駅属性・アクセス状況それぞれに対応する画像を用意し、それら 2 つの画像の組み合わせを用いて 1 つのアイコンを描画する」といったこ”
  • 乱立したpackage.jsonのエントリーポイントフィールド

    この記事は夏のブログリレー17日目の記事です。 こんにちは、19Bの翠(sappi_red)です。普段はSysAd班で活動しています。Viteのチームメンバーだったりもします。 npmからインストールしたパッケージをモジュールバンドラーで使えないことに遭遇したことのある人は少なくないでしょう。 この記事ではそれが発生する要因の一つである、package.jsonのエントリーポイント用フィールドについて書いていきます。 モジュールバンドラーとトランスパイラは意味が異なるものですが、モジュール形式の変換においては境界線が非常に曖昧になるため、この記事ではまとめてバンドラーと呼ぶことにします。 モジュール形式 話を進める前に、前提となるモジュール形式という概念について説明しておきます。 JavaScriptでは元々、プログラムを複数のモジュールに分割する標準仕様が存在しませんでした。そのため、標

    乱立したpackage.jsonのエントリーポイントフィールド
  • フロントエンドにおける「単体テストの考え方/使い方」

    稿における「単体テスト」とは自動テストにおける単体テストを指します。手動テストのことではないので、ご了承ください。 単体テストの考え方/使い方というを読みました。筆者自身、「単体テストはプロダクションコードの付属」という意識がどこかにありました。このを読んで、単体テストについてあまりに何もわかってなかったことに気付かされ、単体テストの設計はプロダクションコードの設計と同じくらい重要という意識に変わりました。何のために単体テストをやるのか、いいテストとは、「単体」とは、など多くの点で学びを得られ、また、多くのプラクティスとアンチパターンを知ることができました。 稿はこのを読んで得られた学びを、フロントエンド開発、特にコンポーネント開発に適用することを試みた際のまとめです。より詳細な解説を求む方にはを手に取ってもらう前提で、できるだけポイントを抑えられるようにまとめることを目指しま

    フロントエンドにおける「単体テストの考え方/使い方」
    dorapon2000
    dorapon2000 2024/12/26
    “一方で、Assertは安易に共通化すると結果何を検証しているのかわからなくなることはよくあるので、基本的にAssertの共通化は避けるべきだと考えられます。”
  • フロントエンドの段階的モダナイズ、のための自走設計 (株式会社スタディスト様)

    株式会社スタディスト様の依頼で、フロントエンド傭兵として、Rails 内の巨大SPA の段階的なモダナイズの提案を行った事例紹介です。 いつもはパフォーマンス視点で仕事にかかるのですが、今回はマクロな設計視点でソースコードを読んでいきます。一旦は中期ゴールを提案しつつ、その作業の必要性を通して、なぜその変更が必要なのかという解説をしていきました。 コスパが良い部分からやりたいですね。でもコスパ感覚は人それぞれです。あくまでフロントエンド専門家の自分が優先度付けるなら、という観点でやっていきます。 今回の仕事にあたっていくつかの技術的な課題を取り上げますが、それはスタディスト様に問題があるという話ではありません。むしろ問題を修正しようという意思が強く、実際1ヶ月の期間中にいくつかの修正をマージすることもできています。 以下、敬称略。注意点として、今回の内容は中の人達が見返すための記述が多いの

    フロントエンドの段階的モダナイズ、のための自走設計 (株式会社スタディスト様)
  • TypeScript/JavaScript Array完全攻略2024 | フューチャー技術ブログ

    TypeScriptアドベントカレンダーの12/5のエントリーです。昨日は@nanasi-1さんの【TypeScript】ジェネレーターによる遅延評価でフィボナッチ数列を生成するでした。 イマドキのJavaScriptの書き方2018というのを以前書いたのだけど、配列周りはかなり変わっているな、というのを思ったので、そこの部分だけアップデートするつもりで書いてみました。 実環境で使えるECMAScriptバージョン今時のブラウザは常に最新に更新されるはずなのでECMAScript 2024の機能もフルに使えるはずですが、おそらくNode.jsのLTSが一番古いJavaScriptエンジンということになるのかな、と思います。記事執筆時点でサポート中のバージョンは以下の4つです。軽くメソッドを調べたりした感じ、こんな感じかと。202x年の11月ぐらいになると、ES202xがLTSバージョンで

    TypeScript/JavaScript Array完全攻略2024 | フューチャー技術ブログ
    dorapon2000
    dorapon2000 2024/12/05
    “軽く検証したところ、最速のforと比べてChromeでfor...ofの処理時間が20%増し、forEach()が135%増しでした。”
  • ソースマップのことを何もわかっていなかったので調べた | nabeliwo blog

    仕事でソースマップのことをちゃんと調べなきゃいけない状況になったので調べることにしたのでその調査メモです。 発端 Next.jsSentry を導入するということをやっている。 導入自体はとても簡単で、@sentry/nextjs というパッケージを使うことで実現できる。 @sentry/nextjs には withSentryConfig という関数があり、これによって next.config.js を拡張できる。そしてその設定の中に、hideSourceMaps という設定があり、これを有効化することで Sentry 側にソースマップを渡しつつも番環境ではソースマップが見えないようにできる。 hideSourceMaps オプションの公式サイトの説明を読んでみると、このオプションを有効にすると Webpack の hidden-source-map を有効にした状態になるみたい

    ソースマップのことを何もわかっていなかったので調べた | nabeliwo blog
    dorapon2000
    dorapon2000 2024/10/30
    “普通にソースマップを見れば元のファイルがわかってしまうので悪意のある人がそれを見て何か穴を探そうとする行為ができてしまうので、やはり結局ビルドフローの中で .map ファイルは消す必要があった。”
  • Javascript で簡単に group by ができるようになったってマジ?

    はじめに 先日、フロントエンドの開発中に、配列をグルーピングする必要が出てきたので、サンプルコードを探すためにJavascript groupbyで検索をかけていました。[1] 検索結果を見て驚いたことに、いつの間にかJavascript自体にgroup byが実装されていたのです!! 感動が薄れる前に、記事にさせていただきます🙌 対象読者 何かしらの言語で配列のgroup byを知っている(SQLは除く) Javascriptの基的な言語知識がある JavascpritTypescript)で手軽にgroup byができなくて悩ましい これが Javascript の groupBy まずは実際にJavascriptのgroupByを見ていきましょう。 JavascriptにはgroupByが2種類あるので、それぞれ紹介します。 Object.groupBy まずは、Object.

    Javascript で簡単に group by ができるようになったってマジ?
    dorapon2000
    dorapon2000 2024/10/16
    “つづいて、Map.groupByです。”
  • 便利なJavaScriptライブラリが登場! CSSのプロパティの値の変更を検出できる -CSSStyleObserver

    DOMツリーに加えられた変更を検出する機能としてMutationObserverが便利ですが、CSSのプロパティの値は検出できません。 最近ではCSSアニメーションを使用したWebサイトやスマホアプリも増え、プロパティ値の変更に応じてコールバックを実行する必要があるかもしれません。CSSのプロパティの値の変更を検出するための新しいライブラリを紹介します。 Introducing @bramus/style-observer, a MutationObserver for CSS by Bramus! 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 はじめに ライブラリのデモ ライブラリのインストール ライブラリの使い方 ライブラリの仕組み ライブラリのサポートブラウザ カスタムプロパティのトランジションに関する注意事項 はじめに

    便利なJavaScriptライブラリが登場! CSSのプロパティの値の変更を検出できる -CSSStyleObserver
    dorapon2000
    dorapon2000 2024/10/09
    “ドキュメント(あらゆる場所)をクリックする度にbackground-colorがランダムなカラーに変更されます。@bramus/style-observerでは、各変更に応じてコールバックが実行されます”
  • すぐ消えてしまう要素をDevToolsで確認するTips集

    はじめに こんばんは! 皆さんは以下のようなすぐ消えてしまう要素をDevToolsで確認したいときはどうしますか? 常に表示されるようにわざわざコードを修正してから、DevToolsで要素を確認したりしていませんか?DevToolsをうまく使うことで、わざわざコードの修正をせずとも簡単に要素の確認をできるのでそのちょっとしたTipsのご紹介です! ① CSSイベントでの確認方法 まずはCSSイベントで要素の表示制御を行っているパターンでの確認方法です。以下のようにCSSイベントのhoverで表示制御をしている要素を例にDevToolsで確認する方法を見ていきましょう! import "./style.css"; export const Index = () => { return ( <div> <button className="myButton">Button</button> <

    すぐ消えてしまう要素をDevToolsで確認するTips集
  • Zag.js が良いかもしれない

    Zag.js を調べた背景 私は Chakra UI ユーザーなのですが、Chakra UI はスタイリング部分でランタイム CSS-in-JS(= emotion)を使用しているため、レンダリング時のパフォーマンス影響を考えると、どこかで移行するタイミングがありそうだと思っています。もちろん、Chakra UI がランタイム CSS-in-JS を捨ててくれれば移行は必要ありませんが、Chakra UI のロードマップを見たところ、明確にスケジューリングされていません(未来のどこかで移行はされそう)。そのため、移行先を探していたのですが、Chakra UI の作成者のアデバヨさんが作った Zag.js はとりあえず見とかないといけないよな、という感じで見始めました。 Zag.js が作られた背景 Chakra UI が抱えている技術的課題は先述の通り、ランタイム CSS-in-JS が内

    Zag.js が良いかもしれない
    dorapon2000
    dorapon2000 2024/09/14
    “の実装は React のステート管理機能を使っているので、フレームワークに依存している実装です。Zag.js はこの部分をフレームワーク非依存で実装しています。”
  • PESPA と Remix が魅せる次世代のフロントエンド環境 | 株式会社i-Vinci

    大規模な環境に合わせた技術選定をするなら「React」という認識が生まれていますが、Next.js まで使うのかと言われると状況によるのかなと思います。 そこで Next.js とは異なるアプローチのフレームワーク「Remix」に触れていきます。また、 Remix が推している PESPA の理解を得ましょう。 Remix とはRemix Remix の公式サイトをスクロールしていくと、特徴が分かるのと同時にミームのようないろんな小ネタが仕込まれています。 Remix は、クライアントサイドとサーバーサイドのレンダリングを組み合わせ、高速なパフォーマンスを実現します。また、Remix は、リッチなプリロード機能、キャッシュ制御、ネットワークレベルのストレージ、データフェッチのための自動的なコード分割などの機能を提供しています。 ちなみに Remix は React Router の制作者が

    dorapon2000
    dorapon2000 2024/09/13
    “app/routes 配下にファイルを置くことで、ファイル名に対応した URL ルートが作成されます。これを Nested Routing と呼びます。Nested Routing とは、親子関係を持つページ構造を作成する際に使用されるルーティング手法です。”
  • 次世代のWebプラットフォームSWCを学ぶ - Qiita

    はじめに SWCは多くのライブラリやランタイムで利用されています。 Next.js11.1のブログによるとBabelやTerserで行っていた処理をパフォーマンス改善のためにSWCを利用していると書かれています。 他にもDenoTypescriptやTSX、JSXをJavaScriptに変換する際に利用されています。 最近ではVite4.0がリリースされ、Reactの環境として開発中にSWCを用いるプラグインを新たに公開しました。 この記事ではそんなさまざまな主要ライブラリ、ランタイムで利用されているSWCについて紹介します。 SWCとは SWCはRustをベースに作成された高速で拡張が可能なWebプラットフォームで、JavaScriptTypeScriptのコンパイルとバンドルをマルチコアで行うことが出来ます。シングルコアでもBabelの20倍高速で、4コア使用すると70倍も高速にな

    次世代のWebプラットフォームSWCを学ぶ - Qiita
    dorapon2000
    dorapon2000 2024/09/13
    “JavaScriptとTypeScriptのコンパイルとバンドルをマルチコアで行うことが出来ます。シングルコアでもBabelの20倍高速で、4コア使用すると70倍も高速になるみたいです。”
  • JavaScriptを記号だけに(関数名やキーワードも)変換するプログラム - Qiita

    _= ({}+[])[-~-~-~-~-~[]]+({}+[])[-~[]]+([]['']+[])[-~[]]+(![]+[])[-~-~-~[]]+(!![]+[])[+[]]+(!![]+[])[-~[]]+([]['']+[])[+[]]+({}+[])[-~-~-~-~-~[]]+(!![]+[])[+[]]+({}+[])[-~[]]+(!![]+[])[-~[]];__= (!![]+[])[-~[]]+({}+[])[-~-~-~-~[]]+(!![]+[])[+[]]+([]['']+[])[+[]]+(!![]+[])[-~[]]+([]['']+[])[-~[]];[][_][_]((![]+[])[-~[]]+(![]+[])[-~-~[]]+(!![] + [])[-~-~-~[]]+(!![] + [])[-~[]]+(!![] + [])[+[]]+'('+"

    JavaScriptを記号だけに(関数名やキーワードも)変換するプログラム - Qiita
    dorapon2000
    dorapon2000 2024/09/09
    おもしろい
  • axiosやfetchに替わるKyのススメ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Kyとは Kyは、Sindre Sorhusが開発したJavaScript向けの軽量かつ多機能なHTTPクライアントです。ネーミングの意図はよくわかりませんが、AxiosやネイティブのFetch APIに代わる、より効率的で使いやすい選択肢として設計されています。 Kyの利点 軽量で効率的: Kyのコアは非常に小さく(約2 KB)、パフォーマンスが重要なアプリケーションにとっては特に大きなメリットとなります。 Promiseベース: Fetch APIと同様に、KyはPromiseを基盤としており、async/await構文との組み合わ

    axiosやfetchに替わるKyのススメ - Qiita
    dorapon2000
    dorapon2000 2024/08/20
    “KyはAxiosよりもかなり小さく(約半分)、バンドルサイズや読み込み時間に対する影響が少ない”
  • ブラウザの履歴を操作して「戻る」ボタンで広告を出すやつについて - コーヒーサーバは香炉である

    2023年後半頃から、ブラウザの「戻る」ボタンを押すと、訪問したおぼえのないページが表示されることが増えた。そういうページは大抵、記事風の広告やサイト内の記事へのリンクが大量に並ぶという構成になっている。こんなレイアウトになってることが多い。 この手法はブラウザバック広告とかブラウザバックレコメンド (あるいはレコメンデーション) とか呼ばれており、国内外の複数のWeb広告会社がこれを提供しているようだ。 たとえば、こちらはGMOアドマーケティングの “TAXEL” が提供しているブラウザバックレコメンド。 【新たな収益・回遊源が誕生!】ブラウザバックレコメンド サイトから離れてしまうユーザーに対し、広告やレコメンド記事を表示させることで、収益化や内部回遊に繋げることを目的としているフォーマットになります。 ……というのがセールスポイントらしいのだが、サイトから離れる人は、サイトから離れた

    ブラウザの履歴を操作して「戻る」ボタンで広告を出すやつについて - コーヒーサーバは香炉である
    dorapon2000
    dorapon2000 2024/08/15
    “Safariは、濫用防止のため、クリックやタップなどのユーザインタラクションに起因する場合のみhistory.pushStateが有効に機能する仕組みになっている。”
  • 仕組みと嬉しさから理解するeslint FlatConfig対応

    重い腰を上げて FlatConfig 対応をした ESLint が新しい設定形式として FlatConfig を導入してから随分と経ち、最新バージョンの v9 では FlatConfig がデフォルトになりました。一方で利用者の多い plugin でもなかなか対応が進まず、周りでは思ったよりも FlatConfig への移行が進んでいない印象を受けます。 とはいえ次のバージョンである v10 では FlatConfig しかサポートしないことが予定されており、今まで移行を見送ってきた方も「さすがにそろそろ移行するか...」と思っているのではないでしょうか。自身の所属チームで管理している ESLint の rule セット : @cybozu/eslint-config でも遅ればせながら FlatConfig 対応を進めています。(現在はアルファ版で提供中です) そんな @cybozu/e

    仕組みと嬉しさから理解するeslint FlatConfig対応
    dorapon2000
    dorapon2000 2024/08/04
    “上記の 2 つの大きな変更点に共通するのはどちらも「今まで独自に構築・実行してきた仕組みを JavaScript の標準的な仕組みに乗せ直す取り組み」であったことです。”