並び順

ブックマーク数

期間指定

  • から
  • まで

201 - 240 件 / 605件

新着順 人気順

constの検索結果201 - 240 件 / 605件

  • GraphQL Code Generator で TypeScript の型を自動生成する - クックパッド開発者ブログ

    技術部の外村(@hokaccha)です。 レシピサービスのフロントエンドを Next.js と GraphQL のシステムに置き換えている話 - クックパッド開発者ブログ という記事を書きましたが、この中で詳しく説明しなかった GraphQL のスキーマやクエリから TypeScript の型定義を自動生成する仕組みについて紹介します。 なお、今回紹介したコードは以下で試せます。 https://github.com/hokaccha/graphql-codegen-example-for-techlife GraphQL Code Generator を使った型生成 GraphQL のスキーマから TypeScript の型を生成するためのライブラリはいくつかあります。 Apollo GraphQL Code Generator などが有名どころです。今回はシンプルさや拡張性を考えて G

      GraphQL Code Generator で TypeScript の型を自動生成する - クックパッド開発者ブログ
    • Next.jsを4年間使用してたどりついた、エンタープライズアプリケーションのフロントエンド開発・構築手法 | POSTD

      はじめに 目まぐるしく進化するフロントエンド開発の世界では、常に最新の知識や技術をいち早く取り入れることが、エンタープライズアプリケーションの開発を成功させる上で欠かせません。Tailwind CSS、TypeScript、Turborepo、ESLint、React Queryなどを含む強力なツールキットとNext.jsを4年間使用してきた結果、開発に役立つさまざまな知見やベストプラクティスが得られました。この記事では、大企業向けフロントエンドアプリケーションのパフォーマンス、保守性、拡張性を最大限に高める設計・構築手法を紹介したいと思います。 注記:ここに記載する内容はあくまでも個人的な見解であり、筆者が推奨する手法が必ずしも適さない場合もあります。 効果的なエンタープライズ向けフロントエンドアーキテクチャの基本原則 エンタープライズ規模のアプリケーション向けにフロントエンドソリューシ

        Next.jsを4年間使用してたどりついた、エンタープライズアプリケーションのフロントエンド開発・構築手法 | POSTD
      • Electron製アプリの起動速度を1,000ミリ秒速くする方法

        めっちゃダッシュするイヌさん英語で先に書いてから日本語訳しています ⇒ English version is available here. こんにちは、TAKUYAと申します。InkdropというMarkdownノートアプリを開発しています。このアプリはElectronで作っています。Electronは、NodeJSとChromium(ブラウザ)ベースでクロスプラットフォームなデスクトップアプリが開発できるフレームワークです。このフレームワークは基本的に素晴らしいです。なぜならあなたはネイティブ用のフレームワークを学ぶ必要がなく、JavaScript、HTMLとCSSでアプリが作れるからです。もしあなたがウェブデベロッパーだったら、手軽にアプリが作れるでしょう。一方で、多くの人がElectronの弱い点についても言及しています。それはアプリの起動速度が遅い傾向にある、という点です。僕のア

          Electron製アプリの起動速度を1,000ミリ秒速くする方法
        • リングフィットアドベンチャーの記録で友達と競える仕組みを作った

          🐣 はじめに おうちで気軽にフィットネスができる「リングフィットアドベンチャー」。 一人でがんばるのもいいけどみんなで競い合ったほうがもっと楽しいし継続できるよね!ってことで、そんな仕組みを作りました。 具体的には 運動結果のSlack通知(「今日もちゃんと運動して偉い!」) 運動結果データのログ保存(いつ・だれが・どれくらい運動したか) ログの集計・可視化・通知(「8月のカロリー部門1位は○さんでした!」) を自動化しています。 運動結果のスクショをTwitterに投稿するだけで参加できます。 この仕組みを作ってから、今では10人くらいでわちゃわちゃ楽しくやってます。 また後述しますが、すべて無料枠で運用しています。 主な機能 Twitterの投稿を検知してSlackに通知します。 毎週月曜日に進捗をお知らせします。 月初に前月のサマリーを投稿します。(テキストだけ人力🤫) 🎯 技

            リングフィットアドベンチャーの記録で友達と競える仕組みを作った
          • StorybookのUI Testing Handbookを読んだ

            フロントエンドLT会 - vol.5 #frontendlt の登壇資料です。 https://rakus.connpass.com/event/232039/ UI Testing Handbook https://storybook.js.org/tutorials/ui-testing-handbook/ サンプルリポジトリ https://github.com/zaki-yama-labs/ui-testing-handbook

              StorybookのUI Testing Handbookを読んだ
            • 世界のプログラミング言語(44) シンプルで現代的なZig言語、RustやC++が複雑すぎると嘆く人の福音となるか

              Zigは2015年に登場した新しいオープンソースのプログラミング言語です。Go言語やRust言語のように、C言語の置き換えを目標にしたコンパイラ言語です。その最大の特徴はシンプルであることです。確かに、マクロもプリプロセッサもありませんが、現代的な言語に仕上がっています。最近話題になることが増えてきたので試してみましょう。 ZigのWebサイト Zigとは Zigはアンドリュー・ケリー氏によって2015年に登場した新しいプログラミング言語です。コンパイラ基盤のLLVMを利用しており、幅広いOSに対応した実行ファイルを生成することができます。 Zigはシンプルをモットーとしています。Zigのマニュアルでは、C++やRust、D言語など多くの機能を持つ言語を挙げて、それらとは異なりシンプルであることを名言しています。 そして、その構文は、C言語と似ているのですが、遅延処理のdefer構文や型推

                世界のプログラミング言語(44) シンプルで現代的なZig言語、RustやC++が複雑すぎると嘆く人の福音となるか
              • フルスクラッチでSHA-256を作る

                ハッシュ値の利用者として中身のアルゴリズムを知っておきたいと思ったのでTypeScriptで1からSHA-256を作ろうと思います。SHA-256は名前そのまま、どんな長さのメッセージでも256bitsのハッシュ値を返す関数です。 完成版はこちら 前提知識 論理演算(論理積とか論理和とか排他的論理和とか)とシフト演算が分かっていれば大体いけます。 論理積はAND。数式上では\land、コードでは&で表します。 論理和はOR。数式上では\lor、コードでは|で表します。 排他的論理和はXOR。数式上では\oplus、コードでは^で表します。 左シフト演算はビット列を左にnビット動かすやつです。値は2^n倍になります。数式上では\ll、コードでは<<で表します。 右シフト演算はビット列を右にnビット動かすやつです。値は2^{-n}倍になります。数式上では\gg、コードでは符号なしの右シフト演算

                  フルスクラッチでSHA-256を作る
                • React Context を用いた簡易 Store

                  課題 redux を引っ張り出すと大仰になる。Context 下に共有ステートを持ってそこに setState できるだけでよい。 なので、次の 2 つを用意する 現在の state を参照する const appState = useAppState() 現在の state を更新する関数を返す const setAppState = useSetAppState() React.useState() と違って分割している理由は、主にパフォーマンス上の理由 大域な参照なので、可能な限りステートを参照したくない setState() の API は (prevState: State) => State も取れるので、状態更新用途に限ってはそもそも useAppState() せずに済むことが多い でも毎回書いてるけどボイラープレート感強い上に忘れるのでここにメモする 毎回書いてるボイラー

                    React Context を用いた簡易 Store
                  • From Node to Deno

                    From Node to Denoby aralroca on Sunday, May 17, 2020 • 10 min read Last week I published an article about Deno, and how to create a Chat app with Deno and Preact. Since then, many doubts have arisen. Mostly of them are about how to do the same thing we did in Node, but with the new Deno ecosystem. I've tried to collect some of the most used topics in Node, and looked for their alternative with Den

                      From Node to Deno
                    • マッチングアプリ強者を体験できる PWA 開発で、Web プッシュ通知を理解しよう - Qiita

                      どうも、親からもらったお年玉でマッチングアプリを始めるも、いいね 0 件のまま 3 ヶ月で退会した@sadnessOjisan です。 今日はタイトルの通り、マッチングアプリ強者を体験できる PWA を開発します。具体的には、いいね 通知がたくさん届くアプリを開発します。なおこのアプリは「通知止まらん www」を体験できるアプリを作ったの影響を深く受けました。ただし、これから作る push 通知体験アプリでは、通知の疑似体験ではなく本当に通知が届きます シンプルにプッシュを送るだけのコード: https://github.com/sadnessOjisan/simple-push マッチングアプリ っぽいUIがついたコード: https://github.com/sadnessOjisan/simple-push-ui 書いた動機 この記事では Firebase を使った web push

                        マッチングアプリ強者を体験できる PWA 開発で、Web プッシュ通知を理解しよう - Qiita
                      • Reactにおける再利用とテストを容易にする疎結合なUIを目指す3つのTips

                        はじめに コード上での問題を正確に認識しておかなければ、問題を繰り返すのです。Reactを使用したプロジェクトに参画したり、OSSプロジェクトのソースコードを散見すると複雑な仕様に立ち向かったUIに出会うことがあるでしょう。 複雑な仕様に立ち向かったUIは以下の特徴があると考えています。 bundle size が肥大している 保守や維持の管理が高い 他開発者にこのUIは何をやっているのか、質問をしなければならない。 質問の回答を聞いてもそのUIが実行していることが多様で理解しづらい。 再利用性が低い そのUIを利用するために満たさなければならない条件が多く、新しく似ているUIを実装することになる。 複雑なAPI 片手の指の数では溢れる props の数が存在している ユースケースを満たすために、既存の機能を使えば実装ができるのか、判断がしづらい 上記のようなUIを見かけた場合、どのような

                          Reactにおける再利用とテストを容易にする疎結合なUIを目指す3つのTips
                        • JavaScript にイミュータブルな配列操作メソッドを導入するプロポーザルについて

                          この記事では、現在 Stage 1 のプロポーザル Change Array by copy について解説する。 プロポーザルの詳細については、https://github.com/tc39/proposal-change-array-by-copy を参照してほしい。 また、ここで紹介した仕様に関しては今後更新されていく可能性がある。 概要 Change Array by copy は、簡単にいえばイミュータブルな配列操作メソッドを導入するプロポーザルである。 JavaScript の配列には多くのインスタンスメソッドがあり、それらを使って配列を操作できる。 配列のインスタンスメソッドには、ミュータブルなもの、つまりもとの配列を変更することによって配列を操作するタイプのものがいくつかある。 たとえば、Array.prototype.push や Array.prototype.pop、A

                            JavaScript にイミュータブルな配列操作メソッドを導入するプロポーザルについて
                          • Rails アプリケーションの不安定なテストを撲滅したい 〜system spec のデバッグ方法とテストを不安定にさせる要因〜

                            Rails アプリケーションの開発において、自分の変更に関係のないテストのせいで CI がコケるとストレスですよね?真っ先に直したくなりますよね?不安定なテストを直すのは大変な労力が要ると思ってませんか?実は、たいていのケースは簡単に再現確認ができるし、不安定になる要因もだいたい決まっているし、ログやスクリーンショットを見れば原因も簡単に特定できるんです! そんなわけで、日頃不安定なテストを潰している身として知見みたいなものをまとめてみました。 今回利用した環境は次のとおりです。 rails 6.0.0 capybara 3.29.0 selenium-webdriver 3.142.4 rspec-rails 3.8.2 Google Chrome 77.0.3865.75 (headless で使用) ChromeDriver 77.0.3865.40 (f484704e052e0b5

                              Rails アプリケーションの不安定なテストを撲滅したい 〜system spec のデバッグ方法とテストを不安定にさせる要因〜
                            • Playwrightも知らないで開発してる君たちへ - Qiita

                              重要なのはここで、 pw.webkit.launch() とするか pw.chromium.launch() とするかで 起動するブラウザが変わるだけです。 デバイスの設定も簡単 pw.devices に主な端末のviewport, UAの情報がまとめられています。 デバイスのリスト: https://github.com/microsoft/playwright/blob/master/src/deviceDescriptors.ts const pw = require('playwright'); // iPhone11のデバイス情報を取得 const iPhone11 = pw.devices['iPhone 11 Pro']; (async () => { const browser = await pw.webkit.launch(); const context = awai

                                Playwrightも知らないで開発してる君たちへ - Qiita
                              • 綺麗なReactコンポーネント設計でモノリシックなコンポーネントを爆殺する - Qiita

                                まずはじめに Reactはユーザインターフェース構築のためのJavaScriptライブラリです。 React は、インタラクティブなユーザインターフェイスの作成にともなう苦痛を取り除きます。アプリケーションの各状態に対応するシンプルな View を設計するだけで、React はデータの変更を検知し、関連するコンポーネントだけを効率的に更新、描画します。 - React公式より Reactのプロジェクトである程度規模が大きくなっていくと問題になっていくのは きちんと設計しないとビジネスロジック、コンポーネントのステート、表示 これらが入り混じって数百行の巨大なコンポーネント(モノリシックなコンポーネント)ができてしまう場合があることです。 確かにReactはユーザインタラクティブなViewの作成には強力な力を発揮しますが、 綺麗なコンポーネント設計に関しては利用者に委ねられています。 (Re

                                  綺麗なReactコンポーネント設計でモノリシックなコンポーネントを爆殺する - Qiita
                                • 変更に強いコンポーネント設計の方針と規約(Webフロントエンド) - Sansan Tech Blog

                                  技術本部 データ戦略部 Newsグループの木田です。 最近、初めて自作キーボードに挑戦しました。ちょうど2枚目のモニターも買ったので、モニター2台と自作キーボードで快適に記事を書いています。 予めお断りしておきますが、この記事は元々、社内向けに設計方針や規約・ツールなどについて共有するために書いたものでした。最近、他チームの参考資料として役立ったこともあり、社外向けに手を加えて公開する運びとなりました。 はじめに 機構改革・人事異動情報(β) とは ⚛️ Atomic Design に従う ⚛️ Atomic Design とは ⚛️ Molecules と Organisms の分け方 ⚛️ コンポーネントの設計方法 📝 規約 📝 Component と Container を分ける 📝 データの繋ぎ込みは Organisms 以上で行う 💡 Tips 💡 Atoms はタグ本

                                    変更に強いコンポーネント設計の方針と規約(Webフロントエンド) - Sansan Tech Blog
                                  • Node.js v16 の主な変更点 - 別にしんどくないブログ

                                    2021/04/20にリリースされたNode.js v16の主な変更点を紹介します。 nodejs.org M1 MacでもNode.jsが使えるようになります V8 v9.0 Atomics.waitAsync RegExp match indices Timers Promises APIが安定版になりました fs.rmdirのrecursiveオプションがDeprecatedになりました Node.js v15の機能がLTSとして使えるようになる 最後に 参考記事 変更履歴 M1 MacでもNode.jsが使えるようになります Node.js v16.0.0は、Apple Silicon、いわゆるM1チップと呼ばれるAppleの新しいチップに対応したNode.jsの実行ファイルが公式で配布される最初のバージョンになります。 v15.xでもソースコードからのビルドでM1 MacでもNo

                                      Node.js v16 の主な変更点 - 別にしんどくないブログ
                                    • Promise.allSettled と Promise.any | blog.jxck.io

                                      Intro Promise.allSettled() と Promise.any() の仕様策定が進んでいる。 両者は近いレイヤの仕様では有るが、作業の進捗には差がある。 Promise.allSettled は Stage 4 であり、 Chrome や Safari TP には実装もされている Promise.any は Stage 2 であり、実装はまだない ここでは、これらがあると何が嬉しいのかを Promise.all(), Promise.race() の特徴を踏まえて解説する。 Promise.all()/race() Promise.all(), Promise.race() は、いずれも複数の Promise をまとめて処理する Utility Method のようなものである。 all は全ての Promise が Resolve したら Resolve し、 race

                                        Promise.allSettled と Promise.any | blog.jxck.io
                                      • データフェッチはuseEffectの出番じゃないなら、結局何を使えばいいんだ

                                        ショートアンサー React 18 からのフックである、useSyncExternalStore を使えばいいようです。 ※ useEffect がまったくだめだというわけではありません。 ※ クライアントサイドレンダリングのみを考えています。サーバーサイドレンダリングを考慮すると違った答えになるかもしれません。 サンプルコード 次のような useData フックを作ってみます。 JSON API の GET レスポンスを返すシンプルなものです。 実験をしやすいように、リクエスト URL を変えるボタンを置いてあります。 import { useEffect, useState } from "react" export function SearchResults() { const [id, setID] = useState(1) const todo = useData(`http

                                          データフェッチはuseEffectの出番じゃないなら、結局何を使えばいいんだ
                                        • GitHub - facebook/lexical: Lexical is an extensible text editor framework that provides excellent reliability, accessibility and performance.

                                          import {$getRoot, $getSelection} from 'lexical'; import {useEffect} from 'react'; import {LexicalComposer} from '@lexical/react/LexicalComposer'; import {PlainTextPlugin} from '@lexical/react/LexicalPlainTextPlugin'; import {ContentEditable} from '@lexical/react/LexicalContentEditable'; import {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin'; import {OnChangePlugin} from '@lexical/react/

                                            GitHub - facebook/lexical: Lexical is an extensible text editor framework that provides excellent reliability, accessibility and performance.
                                          • フロントエンド x RTC界隈の最近とこれから - console.lealog();

                                            フロントエンドエンジニアからみる、この界隈で今どんなIssueが話題になってるのかと、この先どういう動きがありそうかについて。 そこまで自分に先見の明があるとも思ってないけど、アウトプットしておかないと忘れてしまいそうなので・・。 ちなみにここでいうフロントエンドは、いわゆるブラウザとかJavaScriptのAPIのことです。 プロトコル的な側面はそこまで詳しくないのであまり触れません。 WebRTC 1.0 GitHub - w3c/webrtc-pc: WebRTC 1.0 API まず、RTCといえばズバリのWebRTCから。 昨年末にWDからCRへ格上げということで、もうAPIが激変したりはしない・・はず。 実際のところ、ここ半年くらい大きな対応した覚えがないです。(WebRTCそのものを実装してる人は、地味にいろいろ対応してると思うけど) ガワのAPIという観点でいうと、最近はも

                                              フロントエンド x RTC界隈の最近とこれから - console.lealog();
                                            • JavaScriptでvarが非推奨な理由を整理してみた - Qiita

                                              はじめに 未経験からNode.jsの現場に配属された2019年新卒エンジニアが、学習の振り返りとしてJavaScriptの基礎の基礎をまとめます。 今回は、JavaScriptの変数宣言についてあらためて整理し、なぜ近年のJavaScriptではvarの使用が推奨されていないのかをまとめたいと思います。 こういう人に読んでもらいたい JavaScriptを勉強したてで、ひとまず変数にはvarを使ってる人 letやconstを使っているけど、改めて訊かれると理由を上手く説明できない人 JavaScriptにおける変数宣言をおさらい 本題に入る前に、まずJavaScriptの宣言に関する基本的な挙動を整理します。 宣言の種類は? 2019/12月現在、JavaScriptの変数宣言キーワードにはvar, let, constの3つがある。 元々はvarしかなかったところに、ECMAScript

                                                JavaScriptでvarが非推奨な理由を整理してみた - Qiita
                                              • 2022年の最新標準!Vue 3の新しい開発体験に触れよう - ICS MEDIA

                                                2021年のVue.jsは新しいVue 3のコアが安定し、開発環境からライブラリやコードの書き方まで、新しい発表の多い一年でした。ICSではすでに複数のプロジェクトでVue 3やVite等の新しいフレームワーク・ツールを使用していますが、まだまだ様子見という方も多いでしょう。 変化の大きいVue 3の周辺ですが、2021年11月のVueConf Toronto 2021(セッション動画)でようやく次の定番と言える構成がアナウンスされました。この記事では、Vite・cteate-vue・<script setup>・Piniaといった新しい推薦構成を紹介し、Vue 2時代から何が良くなるのかを比較します。 新しい構成は何が良くなる? メリットを確認 新しい構成ではプロジェクトを作成する際のコマンドラインツールからVS Codeの機能拡張やコードの書き方まで、さまざまな部分が変わっています。個

                                                  2022年の最新標準!Vue 3の新しい開発体験に触れよう - ICS MEDIA
                                                • top-level awaitがどのようにES Modulesに影響するのか完全に理解する - Qiita

                                                  先日、TypeScript 3.8 RCが公開されました。TypeScript 3.8はクラスのprivateフィールド(#nameみたいなやつ)を始めとして、ECMAScriptの新機能のサポートがいくつか追加されています。この記事で取り扱うtop-level awaitもその一つです。 この記事ではtop-level awaitに焦点を当てて、その意味や使い方について余すところなく解説します。top-level awaitは一見単純な機能に見えますが、実はモジュール (ES Modules) と深い関係があり、そこがtop-level awaitの特に難しい点です。そこで、この記事ではECMAScriptのモジュールについても詳しく解説します。この記事を読んでtop-level awaitを完全に理解して備えましょう。 ※ この記事は3分の1くらい読むと「まとめ」があり、残りはおまけで

                                                    top-level awaitがどのようにES Modulesに影響するのか完全に理解する - Qiita
                                                  • Chrome(Canary) の Native File System API で ローカルファイルの読み書きをする - mizchi's blog

                                                    ブラウザ上でローカルファイルの読み書きができる Native File System API が ChromeCanary で実装された。 前々から欲しかった機能なので、自分が作ってる markdown preview ツールに実装してみた。 Intent to ship https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/noan0cgEBGQ/t8DuK8_hDwAJ 仕様 http://wicg.github.io/native-file-system/ 動かすとこんな感じ https://mdbuf.netlify.com/ で Meta+O/Meta+S のキーバインドを振ってる。 有効化 https://www.google.com/intl/ja/chrome/canary/ をダウンロード chrom

                                                      Chrome(Canary) の Native File System API で ローカルファイルの読み書きをする - mizchi's blog
                                                    • eslint-plugin-import-accessではじめるディレクトリ単位カプセル化

                                                      こんにちは。この記事は筆者が製作した ESLint 向けプラグイン eslint-plugin-import-accessを紹介する記事です。 このプラグインにより TypeScript プログラムに擬似的なpackage-private exportの概念が生まれます。JSDoc で@packageとアノテートされたexport宣言は、そのファイルが属するディレクトリの外からインポートすることができなくなります。 従来、TypeScript で可能なカプセル化の最大の単位は「ファイル」であり、ファイルからエクスポートしない変数はそのファイル(モジュール)の中に閉じている一方で、一旦エクスポートしたものはプロジェクトのどこからでもインポート可能になります。これでは不都合な場合がありました。 最近の具体的な例としてはRecoilが挙げられます。筆者の以前の記事では、Atom や Select

                                                        eslint-plugin-import-accessではじめるディレクトリ単位カプセル化
                                                      • 【翻訳】Date and Times in JavaScript - from scratch

                                                        この記事は littledan から依頼を受けて、翻訳しています。広く Date and Times の JS プロポーザルについて意見がほしいとのことです。 意見は以下の場所にポストできます。 docs.google.com 原文: blogs.igalia.com tl;dr: Temporal のプロポーザルについてフィードバックを求めています。 Polyfill を試したら、サーベイの回答を送ってください、ただしまだ本番環境では使わないでもらいたいです。 JavaScript の Date クラスは壊れています、しかし Breaking the Web を起こさずに修正する方法はありません。風のうわさでは、 Date クラスは 10 日で作られた JS Engine のhackに含まれたもので、 java.util.Date に基づいたものと言われています。しかも java.uti

                                                          【翻訳】Date and Times in JavaScript - from scratch
                                                        • Googleスプレッドシートと自然言語処理AI「GPT-3」を組み合わせてデータ作成を効率化

                                                          2022年末に登場、一躍テクノロジー業界の話題を席巻したAIチャットボット「ChatGPT」 自然な文章で情報を提供するこの「ChatGPT」に対して、ビジネス、ブログ、プログラミング、など、様々な場での活用が期待されています。 OpenAIが開発、サービスを提供してるこの「ChatGPT」のベースとなっている技術が、同じくOpenAIが開発した、自然言語処理AI「GPT-3」です。 膨大なテキストデータを使った機械学習によって、生み出される「GPT-3」の文章は、人間が書いた物と判別できない程 そして、機械学習の訓練によって得た知識を元にして、質問に対し即座に答えを返してくれるので、知りたい事が有る度に、一々”ググる”必要も無い。 そこで一考、「GPT-3」とGoogleスプレッドシートを組み合わせたら、作業効率を向上できるんじゃないか。 本記事では、自然言語処理AI「GPT-3」をGo

                                                            Googleスプレッドシートと自然言語処理AI「GPT-3」を組み合わせてデータ作成を効率化
                                                          • Next.js + esa.io + VercelでJAMStackな爆速ブログを構築する - パンダのプログラミングブログ

                                                            追記: 本記事がesa.ioの公式Twitterに取り上げられました! esaに書いた記事をNext.jsで公開する Next.jsのバージョン9.3から、ビルド時に外部ソースからデータを取得するgetStaticPropsというAPIが公開されました。 ブログは静的なコンテンツです。ブログの内容はユーザーに応じて動的に変わるということはありません。そして、getStaticPropsは静的なページを構築するために最適なAPIです。 そこで、esaにmarkdownで書いた記事をNext.jsで表示するサイトを構築しました。 実際にサイトにアクセスして記事を開いてみてください。爆速で遷移するのが体験できます。Lighthouseの成績もバツグンです。(blog-starterをベースに利用したため、コンテンツはそのレポジトリの内容を踏襲しています) デモサイトのコードはGitHubにアップ

                                                              Next.js + esa.io + VercelでJAMStackな爆速ブログを構築する - パンダのプログラミングブログ
                                                            • 4KBのJavaScriptだけで動く可愛いアクションゲームを作ったのでソースと解説 - Qiita

                                                              年イチでちょっとしたブラウザゲームを作ってます(→ 去年)。今年はそこそこ遊べる可愛いアクションゲームを4KB以内で作ってみました。 🎉宣伝させてください! 🐱今年も無事、猫の日ゲームができました!https://t.co/XnDD8AXx4k 今年は可愛さはそのまま、限界までコードを削って4KBにおさめました。PCの方はソース表示して見てみてね pic.twitter.com/j0QqH6iSSn — ゆき (@yuneco) February 20, 2022 作ったもの:ブラウザで動く4KBのゆるかわアクション URL: https://yuneco.github.io/mezashi-4kb/ ソース: https://github.com/yuneco/mezashi-4kb つまりどういう...コト? index.htmlという名前のファイルを作って下のコードをコピペする

                                                                4KBのJavaScriptだけで動く可愛いアクションゲームを作ったのでソースと解説 - Qiita
                                                              • 画面キャプチャを仮想カメラとして扱えるようにするChrome拡張を作ってみる

                                                                この記事について 先日、@catnoseさんがカメラ映像の代わりに絵文字(Emoji)を配信するためのサービスを公開されました。凄く完成度が高くて良いサービスだと思ったので、さっそく使ってみたのですが、仮想カメラとして使用するためには OBS Studio が必要でした。[1] サービスを使うには全然申し分無いのですが、「 もっと簡単にできたらなぁ~ 」と思ってしまうのが私の悪い所で、すぐさまブラウザのみでどうにかできないかと調べてみると、色々な制約はありますが、Chrome 拡張を使うことで OBS Studio を使わずとも仮想カメラを使用できることが分かりました。 実装も簡単にできるので、 今回は Google Meet で、画面キャプチャを仮想カメラとして表示する Chrome 拡張を作って行こうと思います 💪 今回作るモノについて 今回この記事で作る Chrome 拡張は、上記

                                                                  画面キャプチャを仮想カメラとして扱えるようにするChrome拡張を作ってみる
                                                                • Next.js で始める GraphQL - 30歳からのプログラミング

                                                                  この記事では、GraphQL を利用したアプリを Next.js で構築していきながら、GraphQL の初歩について書いていく。 GraphQL のクライアントもサーバも、Apollo を用いる。 また、できるだけ型安全に開発したいので、graphql-codegenで型定義ファイルを生成する方法も扱う。 利用しているライブラリのバージョンは以下の通り。 @apollo/client@3.5.10 @graphql-codegen/cli@2.6.2 @graphql-codegen/typed-document-node@2.2.7 @graphql-codegen/typescript-operations@2.3.4 @graphql-codegen/typescript-resolvers@2.5.4 @graphql-codegen/typescript@2.4.7 @type

                                                                    Next.js で始める GraphQL - 30歳からのプログラミング
                                                                  • ABEMA Web で Polyfill のコードをモダンブラウザ向けに 99% 削減した話 | CyberAgent Developers Blog

                                                                    これらを踏まえて polyfill-library を使って Polyfill の出し分けをすることが最適解だと確信しました。 Polyfill の出し分けの実装方法 最初に実装したコードの全体像を見せると次の通りになります。それぞれの変数や関数についての説明は後ほどおこないます。 import crypto from "crypto"; import { Response, Request } from "express"; import { getPolyfillString } from "polyfill-library"; import polyfillLibraryPackageJson from "polyfill-library/package.json"; const FEATURES_OPTION = { flags: ["gated"] }; const FEATUR

                                                                      ABEMA Web で Polyfill のコードをモダンブラウザ向けに 99% 削減した話 | CyberAgent Developers Blog
                                                                    • 【LINE証券 FrontEnd】コンポーネントをカスタムフックで提供してみた

                                                                      こんにちは。フィナンシャル開発センターの鈴木です。LINE証券のフロントエンドを担当しています。 以前の記事でご紹介した通り、LINE証券ではReactを使用しています。React 16.8で導入されたフックの機能は非常に革新的で、特にカスタムフックの概念によってReactにおけるコンポーネント設計は大きく様変わりしました。我々もフック時代のコンポーネント設計を試行錯誤しており、その結果はLINE証券にも反映されています。 この記事では、その中でも我々が最近ハマっている「カスタムフックを通じてコンポーネントを提供する」という、いわば“render hooks”とも言うべき設計パターンを紹介します。 今回のお題 今回は、「いくつかのチェックボックスがあり、全部チェックを入れると次に進める」という典型的なパターンを題材にしましょう。次の画像では3つのチェックボックスと「次へ」ボタンが並んでおり

                                                                        【LINE証券 FrontEnd】コンポーネントをカスタムフックで提供してみた
                                                                      • REST API Design Best Practices Handbook – How to Build a REST API with JavaScript, Node.js, and Express.js

                                                                        I've created and consumed many API's over the past few years. During that time, I've come across good and bad practices and have experienced nasty situations when consuming and building API's. But there also have been great moments. There are helpful articles online which present many best practices, but many of them lack some practicality in my opinion. Knowing the theory with few examples is goo

                                                                          REST API Design Best Practices Handbook – How to Build a REST API with JavaScript, Node.js, and Express.js
                                                                        • 20日目: 正規表現が ReDoS 脆弱になる 3 つの経験則

                                                                          はじめに 皆さんこんにちは.3回生のらん(@hoshina350)です. 文字列マッチングに便利な正規表現ですが,テキトーに書くと脆弱になり得るという情報を耳にしてから色々と原因や対策を調べていました. しかし,多くの記事で紹介されていた対策方法は,「独自の正規表現を使用しないー」とか「 * や + などの繰り返し表現はなるべく使わないー」とかいう なんともふわっとしたものでした.これでは「いやぁ確かにそうなんかもしれんけど…そうゆう訳にはいかんやんか…」と納得できません. つまり,「本質的に何が問題」で,「具体的にどんな特徴のある正規表現が脆弱になり得るのか」を知りたい訳です. そこで,様々な文献を調査してみました.本記事では調査して溜まった知見を紹介していきます. 本記事は, Purdue大学のJames Davis教授による “The Regular Expression Denia

                                                                            20日目: 正規表現が ReDoS 脆弱になる 3 つの経験則
                                                                          • JavaScriptで始めるジェネラティブアート - 生物アルゴリズムの応用 - ICS MEDIA

                                                                            ジェネラティブアートという言葉をご存知でしょうか? アルゴリズムによって作られる芸術作品を指す名称です。Pinterestで「generative art」と検索すると静止画、動画ともにたくさんの作品を見ることができます。 無機質さを感じさせるものもあれば、まるで生きているように感じる作品もあります。創作者たちはどのようなところから着想を得ているのでしょうか? 彼らの中には数学的な幾何学模様や物理現象、果ては生物が織りなす複雑なパターンをコンピューターで再現することにより作品を作る者もいます。 本記事では特に「生物」に焦点を当てます。生物の複雑な営みを紐解いた背景や、それをアルゴリズムに落とし込むことで可能になった表現を紹介します。 本記事を読むことで日常に潜むあらゆる現象が芸術の種に見える喜びを感じていただければ幸いです。 サンプルはHTML CanvasとJavaScriptで作成して

                                                                              JavaScriptで始めるジェネラティブアート - 生物アルゴリズムの応用 - ICS MEDIA
                                                                            • Prettier のサイズを減らすテクニック

                                                                              実は先日リリースした Prettier 2.6 では前のバージョンである 2.5.1 と比べてバンドルサイズが 3MB ほど減っています。 Prettier 2.5.1 のサイズ(20.0MB) Prettier 2.6.0 のサイズ(16.9MB) リリースブログで言及したとおり Prettier 2.6 ではモジュールバンドラーを Rollup から esbuild に移行したので、その影響かと思われるかもしれませんが実はそれだけではありません。esbuild への移行によって減ったバンドルサイズはそれほど大きくはありませんでした。 バンドルサイズが 3 MB 減ったのは泥臭いチューニングをいくつか行った結果なのです。 この記事では Prettier 2.6 で実施したバンドルサイズを減らすテクニックを紹介します。 きっかけ ライブラリのサイズは大きいより小さい方が当然良いですが、その

                                                                                Prettier のサイズを減らすテクニック
                                                                              • Datadog と Lighthouse を利用した WebPerf の継続的計測

                                                                                こんにちは。ものづくり推進部、フロントエンドエンジニアの武田です。 今日は Datadog, Lighthouse を使ったクライアントパフォーマンス計測に取り組んでいる、というお話です。 mediba では webpagetest を使った定期実行と計測を以前から行っています。 DataStudioとGASでWebPagetestの計測結果をグラフ化するuknmr/gas-webpagetest紹介記事: gas-webpagetestでWebPagetestのパフォーマンス計測を自動化、可視化する1 での取り組みをベースにし、clasp で GAS のソースコード管理・デプロイを実現するための仕組みや webpagetest Lighthouse test と連携したメトリクスの取得まで網羅したものが 2 になります。 今回は少し webpagetest とは趣向を変えて Lighth

                                                                                  Datadog と Lighthouse を利用した WebPerf の継続的計測
                                                                                • HTMLコーディングでもReact+TypeScriptの開発体験を得る

                                                                                  前置き HTMLを納品する形式の仕事の際にEJSやpugではなくReact+TypeScriptを使ってHTMLを生成しつつ開発体験を高めてほしい。 ということで具体的にどのようなメリットがあるのかを伝えたくてまとめてみました。 開発環境 1から環境を作るのは大変なので今回はクラクさんのministaを拡張していきます。 ministaの紹介記事はこちら 必要な設定はTypeScript, ESLint, Prettier, Babel, エディター(今回はVSCode)になります。 webpack.config.js const path = require('path') const glob = require('glob') const HtmlWebpackPlugin = require('html-webpack-plugin') const webpackConfig =

                                                                                    HTMLコーディングでもReact+TypeScriptの開発体験を得る