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

  • RubyのPolarsでデータサイエンティスト協会の100本ノックやってみた — 1 ~ 15問

    記事の趣旨 記事では、Rust製の高速データフレームであるPolarsRuby版を利用して、データサイエンティスト協会の提供する「データサイエンス100ノック(構造化データ加工編)」をやってみることを目的にしています。 Polarsについては、下記の公式サイトを参照してください。 Ruby版のPolarsは、polars-dfというgem名で開発されています。 Rubyを使用したデータサイエンスライブラリをばりばり開発されているankane(Andrew Kane)さんによるgemです。 深層学習やデータフレーム、LightGBM、ベイズ推定など幅広い用途のRuby用データサイエンスライブラリを開発されているすごい方です。 また、記事では「データサイエンティスト協会スキル定義委員」の「データサイエンス100ノック(構造化データ加工編)」を利用しています。 実際のデータサイエンスの

    RubyのPolarsでデータサイエンティスト協会の100本ノックやってみた — 1 ~ 15問
  • Vercelで配信していた静的ページをVite + Cloudflare Pagesに置き換えた

    カウンターワークスで主にDevOpsなところでお手伝いしている@tchikubaです。ベンチャー企業のTech支援やアジャイルコーチ、エンジニア向け研修など複数社に関わってます。 この記事では、HTMLCSS主体の静的ページをVercelを使って配信していた構成を、Cloudflare Pages(以下Pages)で配信するように変更した話をお届けします。 歴史的経緯 そもそもなんで静的ページをVercelで配信してたん?ってところです。 課題感 もともと、動的なアプリケーションの構成が、フロントエンド = Next.jsVercel)、バックエンド = Ruby on RailsAWS)で、特にバックエンドとのAPI通信を必要としないページもフロントエンド環境に組み込まれていました。 1枚もののLPやよくあるフッター系のページ(ex. プライバシーポリシー)くらいならそのままでも良

    Vercelで配信していた静的ページをVite + Cloudflare Pagesに置き換えた
  • Go 言語だって minify されたい!「mingo」の紹介

    HTML/CSSJavaScript など、 Web フロントエンドにおいては配信時にファイルを minify することが一般的です。 ファイルを minify する = ファイルサイズを小さくすることでネットワークの通信量を削減し、結果として Web ページの読み込み速度を向上させることができます。 <!-- 例えばこれが --> <!DOCTYPE html> <html> <head> <title>Hello World Sample</title> </head> <body> <h1>Hello, World!</h1> <button id="button">Click</button> </body> <script> const button = document.getElementById("button"); button.addEventListener("

    Go 言語だって minify されたい!「mingo」の紹介
  • 処理時間が長いAPIをリクエストしたときのローディングUIについて

    こんにちは!@Ryo54388667です!☺️ 普段は都内でフロントエンドエンジニアとして業務をしてます! 主にTypeScriptNext.jsといった技術を触っています。 今回はレスポンスの遅いAPIをリクエストしたときのローディングUIを紹介したいと思います。 📌 作ろうと思った背景 きっかけは生成AIのエージェントAPIを利用するとき、レスポンスを待つ時間が非常に長かったからです。。😇 生成AIのプロダクトではプロンプトを解析したり、最適な問い合わせ先を判断したり、オリジンにリクエストするなど、さまざまな処理を行う(オーケストレーションレイヤー)関係でレスポンス時間が遅くなることがあります。これをなんとかしたいと思ったのがきっかけです。 昨今の開発では、UXをいかに上げるかが求められているように感じます。できることが格段に上がったとしても、UXが悪くて利用されなくなっては

    処理時間が長いAPIをリクエストしたときのローディングUIについて
  • KaggleのNLPコンペで初手に使える可視化 〜BERTopicを用いた文書クラスタリングと可視化〜

    BERTopic は、Transformersを用いて文書のトピックモデリングを行うためのPythonライブラリです。記事では、自分がKaggleコンペの初手EDAによく使うコードをまとめました。 入出力のイメージ 入力: 文章のリスト (例:["I am sure some bashers of Pens fans ...", "My brother is in the market for a high-performance video card that supports VESA local bus with 1-2MB RAM. Does anyone hav...", ...]) 出力: 各文書の関係性を表した2次元座標図 ソースコード 以下にもあります Github Google colab import pandas as pd from umap import UMA

    KaggleのNLPコンペで初手に使える可視化 〜BERTopicを用いた文書クラスタリングと可視化〜
  • Rails で PDF を作ったけど、時代遅れのやり方だったかもしれない

    (表内のデータ確認日:2024/03/21) スター数だけで言えば prawn が強いですし、歴史もあります。 しかし、コミットが現在もされているものの、最新バージョンのリリースが2020年12月から3年以上空いてしまったのは気がかりです。 wicked_pdfpdfkit は1年に1度以上は新バージョンのリリースがおこなわれているので、 この2つのどちらかが良さそうに思いました。 最終的には、README が充実していて使うまでのハードルが低そうな wicked_pdf を選びました。 1-1. WkHtmlToPDF 問題 wicked_pdfpdfkit には重大な問題があります。 これらの gem は WkHtmlToPDF という HTMLPDF に変換する CLI ツールによって支えられているのですが、 これのメンテナンスが 2022/6/29 のコミットを最

    Rails で PDF を作ったけど、時代遅れのやり方だったかもしれない
  • エンジニアからPdMになって半年で得た4つの気づき

    はじめに GENIEE SFA/CRM部署でプロダクト企画をしている増田といいます。 私は、入社してから5年間エンジニアとして働き、去年2023年の7月からプロダクトマネージャー(PdM)にロールを変更しました。現在は、GENIEE SFA/CRMAIチームとして、AIを活用した商品企画、プロトタイピング、そしてAIで解決できる顧客課題の発掘と提案を主に行なっています。 SFA/CRMというのは営業活動や顧客関係性の管理を支援するためのツールで、会社や商談情報、顧客との活動の履歴などをSFAに貯めて一元管理や可視化をすることで、日々の営業活動の効率化等に役立てることができます。 この記事では、PdMに異動してから半年間で得た気づきや学びとともに、プロダクト開発チームがどのような目標を持って開発を進めるべきか、エンジニアからPdMへの転職でどのような視点の変化があったか、そしてどのような思

    エンジニアからPdMになって半年で得た4つの気づき
  • Next.jsで素朴なフォームをシンプルに作る

    素朴なフォームを作る この記事では、素朴なフォームをNext.jsを使って簡単に(?)作る方法を順を追って解説します。これを読むことでNext.js AppRouterの新しい機能であるServer ActionsやuseFormStateなどの使い方理解が進むはずです。たぶん。 また、今回解説するServer Actionsを中心とした機能を用いれば、従来Reactでフォームを作る時のフロントエンドとバックエンド処理が煩雑になりがちなところを少しはシンプルに作ることができるようなります。ただし「素朴なフォーム」という前提ですが。 前提 Next.js v14.1 Next.js以外の外部ライブラリは使用していません HTMLのモックから まず素朴なフォームをHTMLから組み立てます。これ以上ないくらい素朴ですね。 素朴だ…(CSSのスタイル情報は記事上では消してます) export de

    Next.jsで素朴なフォームをシンプルに作る
  • TypeScript の条件型と分配法則、あるいはユニオン型の写像

    TypeScript の Extract について調べていたら、自分がユニオン型の分配法則について何も理解していなかったことに気づいたので、記事にまとめておく。 Extract の基的な使い方 // https://typescriptbook.jp/reference/type-reuse/utility-types/extract type Grade = "A" | "B" | "C" | "D" | "E"; type FailGrade = Extract<Grade, "D" | "E">; //=> "D" | "E" これは単に ("A" | "B" | "C" | "D" | "E") & ("D" | "E") のインターセクションを取ってるだけなのでは? と今まで考えていたが、全然違った。 Extract 型の TypeScript 上の定義はこうなっている。

    TypeScript の条件型と分配法則、あるいはユニオン型の写像
  • OpenRouterでOpenAIと同インターフェイスにしたClaude3をCursorで使う

    最新のCursorを確認してください。 今現在ははCursor標準でClaude使えます。なので、この方法は使わなくて良いかもしれません。 を使うとできます。OpenRouterはopenaiと同じAPI仕様で様々なモデルを利用できるサービスです。 Cursorの設定項目です。 これを以下の様に謀ればOKです。 OpenAI API Key: <YOUR_OPENROUTER_API_KEY> Override OpenAl Base URL: https://openrouter.ai/api/v1 New Model Name: anthropic/claude-3-opus OpenRouterの方のAPI KeyはSign Up後にメニューのKeyから作成してください。クレジットも購入してください。 他のモデルのモデル名は https://openrouter.ai/docs#mo

    OpenRouterでOpenAIと同インターフェイスにしたClaude3をCursorで使う
  • terraform state 理解してないのにterraform apply している人、危機感持った方が良いって

    terraform state 理解してない人、 俺、ガチで危機感持った方がいいと思う。 terraformerとして危機感持った方がいい それこそが、お前がどう足掻いたって、apply出来ない理由だと思う。 apply出来ないって、これまでに一度もterraform state向き合ってこなかったら、厳しいって、明らかな事実だと思う。 俺には俺は向いてないから理解力ないから、家に引きこもってる方が楽しいから、俺はゲームが好きだから、やばいって。 何がやばいかっていうと、terraformerとして成熟しないんだよね。 その人生の中で、なんかしらの競争をしてないと、terraformerとして成熟するためのパーツに欠けるんだよね。 お前最後にapplyしたのいつ?terraformに理不尽なエラー言われたのいつ?ないでしょ そういう経験ないと弱いって、絶対メンタル弱くなるって 勝負の世界に

    terraform state 理解してないのにterraform apply している人、危機感持った方が良いって
  • RustとDDDでAPIサーバーを構築する

    はじめに Rust と フレームワーク axum を使って、API サーバーを実装してみました。 対象読者 RustAPI サーバーを実装したい人 Rust で DDD を実装したい人 説明しないこと Rust の基的な文法 DDD の基的な考え方 使用クレートの使い方 依存の方向 今回の作成する、アーキテクチャの依存関係は、上記のようになります。 上記の依存関係を頭の片隅に置いて、記事を読み進めていただけると、理解が深まると思います。 インフラストラクチャレイヤーは、アプリケーションレイヤーと依存しないことが重要です。 いざ、実装 仕様を決める 今回は、大学が、サークルを管理するシステムを作ることにしました。 メンバーを追加できる 4 年生は、追加できない メンバーを削除できる オーナーは削除できない 4 年生は、卒業する サークルは最低 3 人以上でないと、活動できない サー

    RustとDDDでAPIサーバーを構築する
  • TiDBにおけるパフォーマンス検証の進め方とつまづきポイント

    TL;DR TiDBにおけるパフォーマンス検証をどうやって行ったか パフォーマンス検証を行ったときにつまづいた問題とその対応策 TiDBの仕様やアーキテクチャなどの話はありません 前提 対象のDBAmazon Auroraで稼働中 DBエンジンはMySQL TiDBに移行できないかPoCを実施 DB周りにいろんな課題があり、TiDBで解決できないか検証 TiDB Cloudで検証 番運用を想定してTiDB Dedicatedを利用 先にお伝えしたいこと TiDB導入したいとか言う前に、今使っているRDBで発生しているスロークエリとかIndex設計を見直した方が良いです笑 理由はこの記事を見てもらえるとわかると思いますw パフォーマンス検証の進め方 1. パフォーマンス検証に利用するクエリを洗い出す 観点としては以下の2つ 実行される頻度が高いSQL 実行速度が遅いSQL(スロークエリ)

    TiDBにおけるパフォーマンス検証の進め方とつまづきポイント
  • 12ヶ月で12個のサービスを立ち上げる挑戦をはじめました!

    こんにちは、ネットではウマたんというハンドルネームで活動していて普段はスタビジというメディアやスタアカという教育サービスを運営しています。主にAIデータサイエンスまわりの発信活動や事業を展開してます。 バックグラウンドはデータサイエンスなのですが、サービスやコンテンツなど、何か誰かの目に触れるもの・誰かに使ってもらえるもの・誰かの役に立つものを作ることが好きで、2024年は12ヶ月で12個のサービスを立ち上げる挑戦をしています。 また同時に2024年頭からジョージアという国に拠点を移して海外で挑戦してます。めちゃくちゃいい国なので興味のある方はぜひお越しください!案内します。 さて、12ヶ月で12個のサービスを立ち上げる挑戦って異常に思えるかもしれませんが、実は海外だとよくある挑戦なんです。 最初にはじめたのは超有名なオランダ人の個人開発者「ピーターレベルズ」。 代表的なサービスは以下。

    12ヶ月で12個のサービスを立ち上げる挑戦をはじめました!
  • PostgreSQL LISTEN/NOTIFY, Goを利用したリアルタイム配信

    はじめに 記事では、PostgreSQLのLISTEN/NOTIFY機能とGoを組み合わせた、メッセージをリアルタイム配信するための仕組み・実装を紹介します。 私たちが開発しているMiROHA eConsentでは記事で紹介する仕組みを利用して、ユーザが見ている文書のページをリアルタイムに知らせる機能をリリースしました。 MiROHA eConsentは、治験業務支援サービス MiROHAのシステムの一部で 、治験の同意取得プロセスをオンラインのみで完結させることができるプロダクトです。医師とCRC[1]・被験者が同じルームに入室し、ビデオ通話を繋ぎながら治験に関する説明から同意署名、署名した文書のダウンロードまで一気通貫で行うことができます。 MiROHAシステムの全体図。医師/CRCと被験者の間で同意取得ができる機能を提供しているのがMiROHA eConsentになります。 プロ

    PostgreSQL LISTEN/NOTIFY, Goを利用したリアルタイム配信
  • 実例で理解するベクトル検索。YouTubeの関連動画検索をつくってみた

    生成AIの隆盛に伴い、ベクトル検索やベクトルデータベースが注目されています。 ベクトルについてより理解するために簡単なデモサービスを作ってみました。 この記事では作ったサービスをもとにベクトルについて説明し、後半では生成AIとベクトルの関連について紹介します。 つくったもの 「しもふりサーチ」 - お笑いコンビ「霜降り明星」のYouTubeチャンネル、「しもふりチューブ」の過去動画を検索できるサービスです。 このサービスには以下の2つの機能があります。 1. 文章での動画検索 文章で動画を検索する 「粗品さんがクイズを出題する回」 や 「せいやさんがギターを弾く回」 など、自然言語で動画を検索できます。 2. 関連動画レコメンド 内容の近い動画をレコメンドする 動画を選ぶと、過去動画の中から内容の近い動画をレコメンドします。 これらの機能はベクトル検索で実現されています。詳細を説明していき

    実例で理解するベクトル検索。YouTubeの関連動画検索をつくってみた
  • Next.jsのlayout.tsxで認証チェックすると情報漏洩するかも

    Next.jsの認証チェックどこでするか問題 基的には middleware.ts で行うと思うのですが、肥大化を避けたり、ちょっとした共通処理は layout.tsx に書くこともあるでしょう。今回は layout.tsx で認証チェックをした場合に、実装によっては意図せず認証ユーザにしか表示したくない情報が漏洩してしまうかもしれないケースを紹介します。 問題のあるコード import { redirect } from "next/navigation"; export const dynamic = 'force-dynamic'; function currentUser() { // ここでセッションデータから認証ユーザ情報を取得する関数 // デモ用にログインしていないユーザを再現したいのでfalseを返す return false; } export default fun

    Next.jsのlayout.tsxで認証チェックすると情報漏洩するかも
  • Firebase Authのリダイレクトログインを使っている人は今年の6月までに対応しないと大変ですよという注意喚起

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

    Firebase Authのリダイレクトログインを使っている人は今年の6月までに対応しないと大変ですよという注意喚起
  • ターミナルから離れたくない…Tmux(&Neovim)の設定例🖊

    この記事の概要 tmuxneovimを組み合わせている様子… こんにちは!パン🍞と申します🏜 普段はフロントエンドを中心にパソコンをカタカタしている者です💻 私は普段のコーディング時のメインエディタとして、ターミナル環境下で、Neovimを用いています。 (Neo)Vimは、その独特な操作体系ゆえ慣れるまでがちょっぴり大変ですが、一度習熟すると非常に効率よくテキスト操作を行えるため、日々愛用しています。 また、開発作業の過程では、複数の画面を都度切り替えながらコーディングをしたり、複数のシェルを用いてコマンド操作を実行したくなる機会が多々あります。 例えば、 Viteでフロント開発環境を立ち上げてリアルタイムでコード変更を確認したい docker composeで複数のコンテナを立ち上げつつターミナルでログを確認したい それはそれとしてNeovimも並行して使いたい といった具合

    ターミナルから離れたくない…Tmux(&Neovim)の設定例🖊
  • 自宅のネットワーク環境を改善してみた

    背景 自宅はリビングから自分の部屋までが遠くて、今までWi-Fiは障害物に強い2.4GHz帯を使用していましたが、他の家電製品との干渉が酷く、最大通信速度も54Mbpsと低速です。 なので、これを機に自宅のネットワーク環境を見直してみることにしました。 題 とりあえず、プロバイダーに電話をして2Gbpsのプランに変更しました。 2GbpsのプランだとONU光回線終端装置)が、ルーターと一体型になっているものに交換することになると言われ、今回は自前でルーターを用意したかったので、なんとかならないかと頼んだところ、 「ONUのLANポートが1Gbpsの対応なので、2つのLANポートに1Gbpsずつ(計2Gbps)で設定することは可能です」 と言われました。 2Gbps対応のLANポート搭載のONUくらい取り扱っておいてよ...と思いましたが、仕方ありません。 リンクアグリケーション機能のあ

    自宅のネットワーク環境を改善してみた