ブックマーク / zenn.dev (3,069)

  • フロントエンドの真実

    起源 まだフロントエンドという言葉が生まれる前。 古代のプログラマー達はサーバーで一画面ずつ丁寧にHTMLを構築していた。 ところがあるとき一人のプログラマーがブラウザ上で動的にHTMLを書き換えることに成功する。 これに多くのプログラマーが続いた。 次第に勢力を増していった彼らはサーバーを離れ、自らをフロントエンドエンジニアと名乗り、サーバーに残ったもの達をバックエンドエンジニアと呼ぶようになった。 きっかけ 先日こんな投稿がとある掲示板(ここではXと呼ぶことにしよう)に寄せられた。 たしかに、Server Actionsを使って書くReactと、いにしえのPHPは非常によく似ている。 ふと10年近く前の出来事を思い出した。 それは次のような同僚との会話だった。 👨🏻‍💻「React触ってみました。」 👨🏻‍💼「え、どんな感じやった?」 👨🏻‍💻「なんかPHPに近い感じ

    フロントエンドの真実
  • Blue/Green デプロイを使用した、RDS MySQL/PostgreSQLのアップグレード

    TL;DR RDS の メジャーバージョンアップグレード を行なった PostgreSQL 11.6 -> 15.5 MySQL 5.7.44 -> 8.0.36 PostgreSQLAWS CDK を利用した、自前での手動切り替えをベースにした Blue/Green デプロイによるアップグレードを行なった MySQLAWS コンソールから AWSが提供している機能である RDS Blue/Green Deployments による MySQL のアップグレードを行なった nginx の ngx_http_proxy_module を活用してサービスのダウンタイムを防止した はじめに 初めまして。株式会社ジーニーの GENIEE CHAT開発チームのマネージャーを担当しています。 今回は、データベースのメジャーアップグレードを行った際の手順やポイントなどを書いていこうと思います

    Blue/Green デプロイを使用した、RDS MySQL/PostgreSQLのアップグレード
  • Vimmer のための 括弧編集入門

    Vimmer のための 括弧編集入門 プログラミングにおいて、もっともよくに入力する文字種はなんだろうか。 そう、括弧である。括弧を効率良く編集することは、どんなプログラミング言語をつかう人にとっても有益である。 その信念のもと、僕が使っている括弧編集の種々を紹介したい。 括弧の挿入と削除 1 ドア、箱、ノートパソココン、どんなものも開いたら閉じます。括弧だってそうです。 どうせ閉じることがわかっているのであれば、開き括弧が入力された段階で閉じ括弧も入力したいですね。 vim なら innoremap を使うことで実現できます。 上記は挿入モードで開き括弧が入力されたら自動で閉じ括弧も入力してくれる機能です。 一番簡単に閉じ括弧を自動入力する機能です。 括弧の挿入と削除 2 https://github.com/eraserhd/parinfer-rust https://github.c

    Vimmer のための 括弧編集入門
  • Reactを学習できるサービスmosya Reactの技術的な紹介

    2024年3月15日の一粒万倍日に、mosya ReactというReactを学習できるサービスをリリースしました。 こちら1年間の開発期間を経て、ようやくリリースできました! mosyaの開発期間と合わせると約2年間の開発期間を経てのリリースとなります。 いやー、長かった! 良かったら下のリンクから試してみてください! どんなサービスか mosya ReactReactをオンライン上で学習できるサービスです。 エディターに書いたコードがリアルタイムにプレビューできるようになっていて環境構築なしでReactを学習できます! 採点機能が搭載されているのでReactを自学習したい方におすすめです! このサービスの開発で特に頑張ったのが以下の特徴です! 最新の技術にキャッチアップしている ライブラリの型がエディター上で確認できる Biomeを動かしていてリントエラーがエディター上で確認できる 最

    Reactを学習できるサービスmosya Reactの技術的な紹介
  • 荒廃したテックブログの再生

    これは『2023年度を数字で振り返る「技術広報LT大会」』の登壇内容について、 口頭で話したことを補足しつつ、その他話せなかったこと含めてドキュメントにまとめたものです。 LT大会は楽しいですね、各社の発表も有益情報が多かったので、また行こうと思います。 TL;DR テックブログの投稿数が94倍、PV数が39倍に。 まずは、定石に則りアンチパターンを潰す。 自社の風土に合わせてローカライズしてアウトプットを継続する工夫を。 書きたいものを書いてもらった上で、「できる限り読まれる努力」は運営の責任。 当ドキュメントは色々私が書いてますが、全て編集長がやったことです。 荒廃したテックブログの再生 荒廃してました! レバテック開発部としては、年2しかテックブログを書いていませんでした。 荒廃の定義にもよりますが、私はこれを荒廃と見てました。 技術広報を促進していくタイミングで、まずはここから

    荒廃したテックブログの再生
  • 世界初?Claude3を使った動画解析 - claude3-video-analyzer

    こちらの記事はもちろんClaude3Opusによる生成が80%を占めています。 はじめに こんにちは!今日は、私が最近作成したPythonプロジェクト「claude3-video-analyzer」 について紹介したいと思います。 このプロジェクトは、Anthropic社のClaude-3モデルのマルチモーダル機能を利用して、MP4形式の動画をプロンプトに基づいて解析するものです。 世界初? Claude-3はまだリリースされたばかりの最新のAIモデルですが、そのマルチモーダル機能を活用した動画解析の実装は、おそらく世界初ではないでしょうか。 私が知る限り、他に同様のプロジェクトを見たことがありません。 このプロジェクトはGPT4Visionのように動画を解析でき、Claude-3の可能性を探る一つの試みであり、今後の発展に期待が持てます。 使用例 prompt この画像シーリズは、日

    世界初?Claude3を使った動画解析 - claude3-video-analyzer
  • 25000行超えのAPIドキュメントを分割した話

    はじめに COUNTERWORKSバックエンドエンジニアの伊藤です。 この記事ではAPIドキュメント分割の知見を紹介します。 弊社では OpenAPI を使用したスキーマ駆動開発を採用しています。 1ファイルで管理していたところ、25000行を超える行数となり管理コストが高くなっていました。 そこで分割作業を実施したのですが、どのような方針でどう対応したかを紹介します。 1ファイルで運用するデメリット そもそもどんなデメリットが発生していたのかを記載します。 全体の構造が把握しづらく、新規参画者への認知負荷が高い 行数が多すぎるため、RubyMine など IDE やエディタのパフォーマンスが落ちる 1ファイルの内部で複数の箇所を参照しているが、それぞれCommand fで該当部分を探す必要がある。そのため、見ているコードの箇所が頻繁に飛んで情報が追いづらい 実際にやったこと 方針 チーム

    25000行超えのAPIドキュメントを分割した話
  • Claude3にプロジェクト全体をぶち込むためのプロジェクトの構造とファイル内容を自動でまとめるPythonスクリプト

    はじめに Claude3Opusはものすごい能力で、手動で作成するのは面倒なプロジェクトのドキュメンテーションなどを一撃で生成してくれます。 しかし、プロジェクト全体の内容をWebのCladeには投入できないし、ファイルを1個ずつコピペするのもかなり時間を要します。 頼みのCursorもClaudeは対応していないので@Codebase機能が利用できません・・・ そこで、Pythonスクリプトを使ってプロジェクトのフォルダ構造とファイルの内容を自動的にまとめるスクリプトを作成したので紹介します! このスクリプトを使うことで、プロジェクトを200kトークンまでの単一のテキストにまとめ、Claude3Opusに簡単に投入できるようになります。 スクリプトの機能と使い方 このPythonスクリプトは以下のような機能を持っています: プロジェクトのフォルダ構造をMarkdown形式で生成。※当は

    Claude3にプロジェクト全体をぶち込むためのプロジェクトの構造とファイル内容を自動でまとめるPythonスクリプト
  • 似た文書をベクトル検索で探し出したい ~SentenceTransformersとFaissで効率的にベクトル検索~

    はじめに この記事では、ベクトル検索で似た文書を検索するコードを解説します。具体的には、Sentence Transformersライブラリを用いてベクトル化、Faissという近似最近傍探索ライブラリを用いて高速な検索を行います。 用語説明 ベクトル検索 ... 文書の検索にベクトルを使用する方法。例えば、文書に映画に関する内容が 10 %、音楽が 2 %、俳優が30%含まれていた時、シンプルにそれを表すと [0.1, 0.02, 0.3]というベクトルを作ることができる。Googleの説明が詳しい。 Sentence Transformers ... ベクトル検索に必要なベクトル化を行うためのライブラリ Faiss ... ベクトル同士の類似度を高速に検索してくれるライブラリ。以下のHakkyさんのページが詳しい。 コード 入力:検索したい文字のリスト、検索される文字のリスト 出力:どの

    似た文書をベクトル検索で探し出したい ~SentenceTransformersとFaissで効率的にベクトル検索~
  • 【OpenTelemetry】オブザーバビリティバックエンド8種食べ比べ

    sumirenです。 技術顧問やSREをしています。 背景 2024年現在、OpenTelemetryが盛り上がっており、ベンダへの依存度を下げてテレメトリを収集・送信することがトレンドになってきているように思います。多くの企業様で、OpenTelemetry対応のオブザーバビリティバックエンドを選定されているのではないでしょうか。 一方で、E2E自動テストツールなどもそうですが、デベロッパーツールは画面やUXの情報がパブリックな情報として出回ることが少ないように思います。オブザーバビリティバックエンドの場合、シグナル3種に関してOpenTelemetryベースでもフルに機能が活用できるのかという疑問もあります。 そうしたこともあり、オブザーバビリティバックエンドは実際にトライアルしてみないと選定しづらいです。監視など狭義のオブザーバビリティ外の機能や、OpenTelemetryの範囲外の

    【OpenTelemetry】オブザーバビリティバックエンド8種食べ比べ
  • E2EテストでNextAuth認証(OAuthなど)を突破する方法

    NextAuth (Auth.js) で認証させているWebアプリをPlaywrightなどでE2Eテストする際に、認証をどうやってさせるか、あるいは回避するかが悩ましい部分です。 もし採用している認証方式が、単純なID/パスワード認証であればテストユーザを作成し、Playwrightにパスワードを入力させれば認証できるので問題はありません。 しかし、Google認証などの外部のプロバイダを経由するような場合は、E2Eテストをすることが難しくなります。そこでこの記事では、NextAuthの認証済み状態をPlaywrightで再現させる方法を紹介します。 やり方は大きく2つ NextAuthの設定に依存してやり方は大きく2つあります。 セッションデータを database で管理している場合 セッションデータを jwt で管理している場合 データベースの場合 セッションデータをデータベースに

    E2EテストでNextAuth認証(OAuthなど)を突破する方法
  • サバイバルTypeScriptのGPTsを作成・公開しました

    サバイバルTypeScriptは有志で執筆を進めているTypeScriptのOSSドキュメントです。 今回、サバイバルTypeScriptのドキュメントをベースにTypeScriptに関する質問に答えてくれるGPTsを作成・公開しました✨ この記事ではGPTs公開の背景や作成手順、現状の課題などをまとめています。 GPTs公開の背景 LLMによるドキュメント検索は近い将来(既に?)一般的になると思い、サバイバルTypeScriptでも実験的にチャットボットでの情報アクセスを作成・公開しました。 ドキュメントの情報アクセスの課題 ドキュメントが多くなると、目次やサイトマップ、サイト内検索だけでは必要な情報にアクセスするのが困難になる。 チャットボットのメリット 雑な質問でも意図を汲んで、知りたい情報にアクセスしやすい 内容を要約して説明してくれるので、手軽に情報にアクセスできる 回答の信頼性

    サバイバルTypeScriptのGPTsを作成・公開しました
  • Prettierを使わない理由

    この記事はPrettierを使用している人を非難したり、脱Prettierを推奨する事を目的としていません。 こういった考え方もあるということをひとつの意見としてご覧いただければ幸いです。 勘違いしている人が多そうなので追記します。 Prettierを使わないというのは私が独断で決めた事ではないです。 チームが発足する際の技術選定で合意は取れていますし、私が関与していない別のチームでも同様にPrettier無しで開発しています。 私達のチームはメンバー同士を互いに信頼していますし、細いスタイルで喧嘩を始めるようなメンバーは居ないので安心してください。 はじめに Prettierはコードフォーマッターとして広く使われているツールです。 コードスタイルに関する議論をなくすことを目的としており、ESLintとは異なりデフォルト設定のままですぐに使えるのが特徴です。 さらに、PrettierはJS

    Prettierを使わない理由
  • Cloudflare PagesでURL短縮サービスをつくる!

    Cloudflare PagesでURL短縮サービスを作ってみましょう!これを作ることであなたは以下を体験することができるしょう。 HonoでWebページをつくること Cloudflare KVをアプリケーションの中で使うこと アプリケーションをCloudflare Pagesへデプロイすること アプリケーションの特徴 今回作ってもらうアプリケーションはこのような特徴があります。 Viteを使って開発 UI付き JSXを使ってHTMLを書ける メインのコードは100行以下! Zodを使ったバリデーション バリデーションエラーも表示 簡易なCSRF対策 デモ 完成品を使っている様子です。 完成品 完成済みのコードは以下にあります。 アカウント 今回、アプリケーションを作ってCloudflare PagesへデプロイするにはCloudflareのアカウントが必要です。無料の範囲で遊べるので、も

    Cloudflare PagesでURL短縮サービスをつくる!
  • BitNetから始める量子化入門

    はじめに BitNet、最近話題になっていますね。 そもそも量子化って何?という方もいると思うので、この記事は DeepLearning の量子化から入り、その上で BitNet の触りについて見ていこうと思います。色々とわかってないことがあり、誤読してそうなところはそう書いてるのでご了承ください。 図を作るのは面倒だったので、様々な偉大な先人様方の図やスライドを引用させていただきます。 量子化 DeepLearning における量子化 DeepLearning の学習・推論は基 float32 で行います。これを int8 や Nbit に離散化することを量子化といいます。 計算に使う値は、モデルの重み、アクティベーション(ReLUとか通した後)、重みの勾配等があります。 学習時については一旦置いておいて、この記事では推論における量子化について焦点をあてます。推論時に量子化の対象となる

    BitNetから始める量子化入門
  • はじめてのインタープリター

    インタープリターを書いたことがない方向けに、四則演算といった簡単なものから始め、少しずつ機能を足しながら言語を拡張していくようなです。

    はじめてのインタープリター
  • [Next.js] 開発中のページを開発環境でのみ表示し、本番環境のビルドには含めないようにする

    はじめに この記事について こんにちは、 @zomysan(Twitter) です。この記事では、Next.js で開発をしているWebアプリケーションのフロントエンドを対象に、開発途中のページをどう扱うかということについて書きます。 新しい機能やリニューアルのための開発を始めてあたらしいページを追加したものの、まだ途中なのでユーザーに見せられる状態ではない、ということはよくあると思います。ユーザーには見せたくないけど、開発環境やステージング環境では確認したい。でも番環境には出したくない。そういうときどうしたら良いのでしょうか? この記事の対象 この記事は以下のような人を対象としています。 Next.js で Web アプリケーションを実装している 開発中のページを番環境に露出したくない まとめ 今回、私は以下のように実現してみました。 開発中のページについて、拡張子を .page.d

    [Next.js] 開発中のページを開発環境でのみ表示し、本番環境のビルドには含めないようにする
  • リンクの入れ子は subgrid が最適解かもしれない

    はじめに リンクの入れ子とは何かというと、以下のようなデザインです。 カード全体がリンクでクリッカブルになっていて、中のタグやカテゴリーもそれぞれがリンクになっています。ニュースやブログの投稿などでよく見るデザインだと思います。 しかし、以下のようにマークアップすることはできません。 <a href="https://example.com/posts/hello-world/"> <h2>Hello, World!</h2> <p>...</p> <a href="https://example.com/tag/hello/">#hello</a> <a href="https://example.com/tag/world/">#world</a> </a> HTML のルール的に <a> の入れ子はダメだからです。 Subgrid を使った方法 Subgrid がまだない時代からいろ

    リンクの入れ子は subgrid が最適解かもしれない
  • めざせコントリビューター【完全攻略本】

    ああ あこがれの コントリビューターに なりたいな ならなきゃ ゼッタイなってやるーッ! 「はじめまして! プログラミングの せかいへ ようこそ!」 「わたしの なまえは ヤマダ」 「ひごろは Yamada UI Next.js Chakra UI Mantine Refine のコントリビューターをして おるよ」 改めまして、『まだマサラタウンにいるプログラマーのみなさん』こんにちは。プログラマーを始めて3年目の山田です。 今回は、みんなが憧れるOSSのコントリビューターになる、『1番道路』へ踏み入れるための完全攻略です。そして、日で大注目されている(はず)のYamada UIを題材にして進めていこうと思います。 また、この完全攻略では以下の内容は省略しています。 OSSとは OSSに貢献することのメリット GitHubの使い方 Gitの使い方 理由は、この攻略を見ているあなたは

    めざせコントリビューター【完全攻略本】
  • ポスト資本主義におけるソフトウェアエンジニア

    1. はじめに 企業に務めるソフトウェアエンジニアにとって、生産性向上というフレーズは聞かない日がないほど身近なものです。私自身も日々の仕事が、チームや組織の生産性向上に寄与するかどうか、意識しながら働いています。そもそもソフトウェアエンジニアという仕事は、人を機械に置き換えるという性質上、生産性向上とは切っても切り離せないという関係性を超え、生産性を向上させる営みそのものと言っても差し支えありません。 では私たちソフトウェアエンジニアのDNAである生産性向上の出自は何処かと探っていくと、どうやら資主義と共に拡大してきたイデオロギーであることが分かります。資主義は無限の成長を志向するエンジンを内蔵しており、現在先進国に住まう私たちの生活の豊かさは疑いなく資主義の恩恵に依拠しています。その一方で、200年以上稼働し続けるこの資主義というシステムについて、昨今多くの学者と有識者がその綻

    ポスト資本主義におけるソフトウェアエンジニア