タグ

ブックマーク / zenn.dev (408)

  • メール送信サービスのResendが日本でもまともに使えるようになったので紹介したい

    API経由でメール送信をするためのサービスといえば、SendGrid, Amazon SES, Postmarkのような名前が出てくるかと思います。 そんな中、弊社(トラストハブ)でも利用しているResendというサービスがとても使いやすいので紹介します。また、記事後半でResendを日で使うにあたり重要なアップデートがあったので、どんな点が変わったかを紹介します。 そもそもResendとはどんなサービスか Resendは後発サービスなだけあり、開発体験の良さに主眼が置かれて開発されています。テストでメールが送信できていることを確認する機能や、ログを確認する機能など、細かいところが使い勝手が良いなと感じています。 SDK・設定がシンプル 公式でたくさんの言語のSDKが用意されています。また、フレームワークごとに組み込むためのドキュメントも充実しています。 Knowledge Baseを見

    メール送信サービスのResendが日本でもまともに使えるようになったので紹介したい
  • フルリモートで相手に気持ちよく仕事をしてもらうためのコツあれこれ

    社内のプチ発表に使った資料です。 文章のコツ 前置き フルリモートでは、文章でのやり取りがメインになる。 なので、文章がヒドいと「この人と仕事するのキツイ」と思われちゃう😢 そう思われないための色々思ったことを自戒メモ。 なるべく箇条書きにする

    フルリモートで相手に気持ちよく仕事をしてもらうためのコツあれこれ
  • UUIDとULIDを理解していない方は見た方がいい記事

    Auto increment(自動採番)型を採用したくない場合 Auto Incrementは、データベースにおいて自動的に一意の識別子を生成するメカニズムです。通常、数値型の列が対象となり、新しいレコードが挿入されるたびにその列の値が自動的にインクリメントされます。典型的なIDですかね。 ここでは一意性の確保の話や、データ移行やバックアップのデメリットには言及せず、セキュリティとプライバシーの懸念にフォーカスして考えます。 予測可能性 Auto Increment型のIDは連番であるため、次に生成されるIDが容易に予測可能です。これにより、攻撃者がシステムの内部構造を推測し、不正アクセスを試みるリスクが高まります。 情報漏洩のリスク 連番のIDはデータベースの挿入順序を反映しているため、公開されることで企業の活動パターンやデータ生成の頻度が漏洩する可能性があります。 例) 競合他社は、公

    UUIDとULIDを理解していない方は見た方がいい記事
  • GitHub Actionsにおける脅威と対策まとめ

    はじめに こんにちは、サイボウズ24卒の@yuasaです。 サイボウズでは開発・運用系チームに所属する予定の新卒社員が研修の一環として、2週間を1タームとして3チームの体験に行きます。新卒社員の私が生産性向上チームの体験に行った際に、チーム内でGitHub Actionsを利用する際の脅威と対策について調査を行い、ドキュメント化した上で社内への共有を行いました。記事では、そのドキュメントの一部を公開します。 対象読者 記事の主な対象読者としては、以下のような方を想定しています。 GitHub Actionsを組織で利用しているが、特にセキュリティ対策を実施していない方 GitHub Actionsを組織で利用しており、部分的にセキュリティ対策を実施しているが、対策が十分かどうか分からない方 記事がGitHub Actionsのセキュリティ対策を検討する上で参考になれば幸いです。

    GitHub Actionsにおける脅威と対策まとめ
  • ユニットテストってもう言わない! CI/CD時代のテスト分類に最適なテストサイズという考え方

    はじめに 以前からユニットテスト/単体テストという言葉は使いづらい、と感じており今回も旧Twitterで「テストを実行時間ベースで分類する良い言葉ないかなー」と呟いていたところ、「テストサイズのSMLって考え方があるよ」と教えて戴きました。 だいたいは教えてもらったt_wadaさんの記事にすべて書いてあるのですが、自分の整理も含めて動画にしたので、その補完記事となります。 TL;DR 単体テストのバベルの塔は既に崩壊 CI/CDでの継続的テストには時間ベースのテスト分類が重要 UT/IT/E2EではなくSMLによるテストサイズがCI/CDには合う それは単体テストか結合テストなのか? 自動テスト、手動テストに関わらずテストの分類として単体テストと結合テストという言葉は一般的です。 ITQBではTest Levelsという言葉で定義されていますし、以下のようなV字モデルの対応表はみんな知って

    ユニットテストってもう言わない! CI/CD時代のテスト分類に最適なテストサイズという考え方
  • プログラマ視点での生成AIとの付き合い方

    プログラミングについて、最近考えてることについてのポエム。 基的に、 GPT-4 と Claude-3-Opus を使った経験を念頭に置いて話をする。機械学習エンジニアではないので、あくまで利用者に徹した視点での話。仕事で生成AIを使ったパイプラインを作ったりはしている。 生成AIの進化速度を予測しておく 今大事なことは、今AIがどの程度の性能かという定点の話ではなく、その進化の速度を認識すること。 コード生成というタスクにおいて、生成AIモデルを人間に当てはめると、こんな感じの人物像を自分は持っている。 GPT-4: プログラミング経験2年目の大学2年生 Claude-3-Opus: プログラミング経験3年目の大学3年生 ここでいうn年目は、業務経験ではなく、プログラミングの単位がある大学での、教育課程としての経験年数。今のひたすら学習量を増やす方式だと、単に1年に1年分ぐらい賢くなっ

    プログラマ視点での生成AIとの付き合い方
  • クラウド時代のデータベースを理解するために①

    最近、分散データベースとかNewSQLとかサーバレスなデータベースとか色々聞きますよね。 でも、専門ではない人たちにとって、「何が違うの?」「自分たちに必要なDBはどれなの?」という点が分かりづらいと思います。 私も良く聞かれます。 AuroraはNewSQLですか? NewSQLってサーバレスなんですか? スケールできないDBとか聞きますけど、リードレプリカ増やせますよね? などなど。この辺に基的なところから答えられるように、順を追って解説していきましょう。 「コンピュートとストレージは別であれ」 と神が言うと、コンピュートとストレージは分離された。 と言うのは冗談ですが、まずはここからスタートしましょう。 クラウド以前のデータベースを使っていた人にはお馴染みのように、それまでデータベースは大きな1つの箱でした。 過去に私は下図でデータベース(厳密にはRDBMS)のコンポーネントを解説

    クラウド時代のデータベースを理解するために①
  • 個人開発OSSが世界に勝てなかった話

    ゆーすけべー氏の「OSSで世界と戦うために」にインスパイアされました。5年間pyserdeというOSSのライブラリを開発・メンテしてきた筆者が、ちょっとだけ世界と戦ってみたけど全然勝てなかったという話です。Honoとはプロダクトの規模も開発にかける情熱も全然違うけど、単純にポストモーテムは読み物として面白いかなと思ったので書いてみます。また、5年間の開発で学んだやってよかったことや失敗などもシェアできればと思います。 pyserde pyserdeは筆者が2019年から開発メンテナンスしているOSSで、RustのserdeというライブラリにインスパイアされたPython用のシリアライゼーションフレームワークです。 以下のようにクラスを定義すると、型アノテーションに基づいたデータ変換やバリデーションのコードが内部的に生成され、強い型付けのクラスを生成することができます。強い型付けのクラスはラ

    個人開発OSSが世界に勝てなかった話
  • M1MacでOllamaを試したら爆速で驚いた

    はじめに いつもNVIDIAが載っているWindowsで楽しくLLMを動かしたり生成AIライフを楽しんでいますが、今回はMacOSでOllamaを入れてLlama3を動かしてみました。 スペック: Apple M1 Pro(16 GB) 少し前だとCUDAのないMacでは推論は難しい感じだったと思いますが、今ではOllamaのおかげでMacでもLLMが動くと口コミを見かけるようになりました。 ずっと気になっていたのでついに私のM1 Macでも動くかどうかやってみました! 結論、爆速で推論できていたのでとても驚きました。OSS開発に感謝です! Ollamaとは OllamaとはローカルでLLMを動かすことができるアプリケーションです。 以下からダウンロードできます。 MacOSLinuxで使うことができます。Windowsもプレビュー版があるみたいです。 #いざ推論 ダウロードができたらシ

    M1MacでOllamaを試したら爆速で驚いた
  • 令和のHTML / CSS / JavaScriptの書き方50選

    Web制作技術は日々進化しており、会社やプロジェクトによっては昨今の環境に適さない書き方をしているケースも時折見受けられます。 そこで今回は「2024年のWeb制作ではこのようにコードを書いてほしい!」という内容をまとめました。 質より量で、まずは「こんな書き方があるんだ」をこの記事で伝えたかったので、コードの詳細はあまり解説していません。なので、具体的な仕様などを確認したい方は参考記事を読んだりご自身で調べていただけると幸いです。 1. HTML 画像周りはサイトパフォーマンスに直結するので、まずはそこだけでも取り入れていただきたいです。また、コアウェブバイタルやアクセシビリティも併せて理解しておきたい内容です。 Lazy loading <img>にloading="lazy"属性を付けると画像が遅延読み込みになり、サイトの読み込み時間が早くなります。

    令和のHTML / CSS / JavaScriptの書き方50選
  • Aurora MySQLのメモリ不足の原因を特定する

    シンプルフォーム株式会社でインフラエンジニアをしている守屋です。 記事では Aurora MySQL の OOM(メモリ不足)エラーについて、原因となるクエリを特定するために役立つ Tips を弊社での実例を交えてご紹介します。 発端 突如 Slack に鳴り響く不吉な通知。 「パターン青!障害です!!」 どうやら番環境の Aurora クラスターがフェイルオーバーしてアプリケーションが DB コネクションエラーを引き起こした模様です。幸いインスタンスは冗長化していて Aurora のフェイルオーバーは高速であるため、ユーザー目線では瞬断が発生した程度の比較的影響が小さめな障害に留まりました。しかしインフラエンジニアとしては捨ておけない状況です!早速原因の調査を始めました。 フェイルオーバーの原因 結論から言うとメモリ使用量がスパイクして OOM エラーが発生したことが原因でした。根拠

    Aurora MySQLのメモリ不足の原因を特定する
  • LLMをWebフレームワークにしたら、未来が見えた #2024

    最近、LLMにWeb Backendを書かせて遊ぶ、Hanabiというサービスを作っています。その開発過程で、前に試したLLMをAPIとして振る舞わせるアプローチを再検討したので、記事としてまとめました。 一年ちょっと前、私はChatGPTをWebフレームワークにしようと試みました...が、残念ながら全く実用的ではありませんでした。しかし、あれから一年、LLMは目覚ましい進歩で進化を遂げました。価格は下がり、速度も上がり、記憶容量の増加やRAGの発展など、もはや別物レベルで進化しています。 いまならもうちょっと実用的なヤツが作れるんじゃねってことで、色々な手法を面白がった再検討したまとめです。 余談ですが、一年前はLLM=ChatGPTという状況でしたね...懐かしい。ちょうどvicuna13Bが出た頃ですかね? ↓去年の記事(できれば読んでほしい)↓ 出来たもの 全部プロンプトに入れちゃ

    LLMをWebフレームワークにしたら、未来が見えた #2024
  • 強化学習未経験者がテトリスの AI を作ってみた話

    はじめに この度、強化学習によるテトリスの AI を作成してみました。想像以上にうまくいき、最終的には半永久的にラインを消してくれる AI に成長してくれたので、今回はその記録として AI を作成した過程をここに記していきます! 今回の AI の概要 今回作成したテトリス AI の概要は以下の通りです。 特定のゲームの状態から可能な行動パターンを全てシミュレーションする 行動後の状態を入力情報として Neural Network に今後の報酬の期待値を推測させる 今後の報酬の期待値が一番高くなる行動を実際の行動として選択して遷移する (貪欲方策) Game Over になるまで 1 ~ 3 を繰り返す Tetris AI を可視化した図 何も知らない頃は『AI ってどうやって動いてるんだ?』と自分は思っていたんですが、動作原理は非常にシンプルです。強化学習とは、この今後の報酬の期待値を推測

    強化学習未経験者がテトリスの AI を作ってみた話
  • SOLID原則完全に理解した!になるための本

    SOLID原則を学び、完全に理解した!になるための

    SOLID原則完全に理解した!になるための本
  • 全ITエンジニア必読書である「世界一流エンジニアの思考法」を要約してみた

    エンジニアの間では発売から瞬く間に広まった書ですが、まだ読んでない方々向けに記事を書いてみました。要約なので、ここは重要だなと感じたポイントに絞って記事に記載します✏️ 概要 まず結論からいうと、仕事の進めかたや捉え方という点でとても学びのある良書です。すでに多くのエンジニアには知れ渡っていますが、もっともっと知れ渡って欲しいです。 内容としては、著者の牛尾さんがアメリカMicrosoft社(Azure開発)で得た経験がそのままに書かれています。最初はアメリカエンジニアに劣等感を感じていたようですが、その理由を言語化して、実際にどうすれば彼らと肩を並べるエンジニアになれるかが書かれています。 また全体的にアメリカエンジニア思想を爆推ししているので、こっち系の思想が好きな人は一瞬でハマると思います。私もどちらかと言えば圧倒的にこっちのタイプですが、読むときには偏らないように中立

    全ITエンジニア必読書である「世界一流エンジニアの思考法」を要約してみた
  • MySQLのインデックスの貼っていいとき悪いときを原理から理解したいよ😭

    今回答えを出したい問いはこちら!! インデックスはどのような仕組みを以て、何を実現したいものなのか それを踏まえたとき、インデックスはどういう場合になぜ貼る方が良いのか。また、どういう場合になぜ貼らない方が良いのか 大体分かっているよって人はサヨナラって感じのおさらい記事だぜ!!!!それじゃいってみよー🎉 あと、おれは今回MySQLにしぼっていくぜ👶 ってわけでOracleとかに興味があるやつは引き返しな! indexの概要 公式の見解としては「where句を使ったselectクエリの実行速度を向上させるために実装されている、各行へのポインターのような振る舞いをする仕組み」って感じ👶 The best way to improve the performance of SELECT operations is to create indexes on one or more of t

    MySQLのインデックスの貼っていいとき悪いときを原理から理解したいよ😭
  • はじめてのプロジェクトマネジメントでやりたい放題した結果

    株式会社プラハは2022年、株式会社アガルートによるM&Aで子会社となりました。 この変化の一環として、アガルート社長自らがプロダクトオーナーのひとりとして参加する新規プロダクト開発が始まりました。プロダクトの開発はプラハの私たちが担当し、私も「開発チームのリーダー」としてそのチームに加わることになりました。 私はこれまで開発メンバーとしての経験しかありませんでしたが、エクストリームプログラミングとかレガシーコードからの脱却とかめっちゃ好きで、で学んだプラクティスをリーダーとして実践できる機会が与えられて最高にハッピーでした。しかも、プロダクトオーナーの一人として参加するアガルート社長はこれまで伝統的な開発手法しか経験したことがないとのことで、新たな開発の進め方を経験してもらう絶好の機会でもありました。 やったこと 「欲しい機能一覧」を受け取ったが、いったん白紙に戻した プロジェクトが始

    はじめてのプロジェクトマネジメントでやりたい放題した結果
  • MySQLでIn句に大量の要素を渡すとまずい理由

    概要 MySQLでIN句を使用する時はIN句に渡す要素数に注意する必要があるとよく先輩エンジニアの方から聞いていたのですが、実際に大量の要素を渡すと何がまずいのかはっきり分かっていなかったので調べてみました。 この記事で伝えたいこと MySQLでIn句に大量の要素を渡すとまずい理由 まずい状況を回避するために気をつけるべきポイント 先に結論 MySQLでIN句に大量の要素を渡すとインデックスを貼っていたカラムだとしてもフルスキャンが発生しスロークエリになる可能性があります。 フルスキャンが発生してしまう条件はテーブルに設定してあるインデックスの内容とrange_optimizer_max_mem_size の設定値に依存しており、MySQL8でデフォルトの設定値 & シンプルなテーブルであってもおおよそ数万件の要素数をIN句に渡すとフルスキャンが発生する可能性があると考えられます。 検証環

    MySQLでIn句に大量の要素を渡すとまずい理由
  • 100秒で理解するCDN

    はじめに この記事の内容は、以下の動画でも解説しているので、ぜひ見てみてください。他にもフロントエンドに関する解説動画を投稿しているので、良ければチャンネル登録よろしくお願いします! CDNとは CDNとは、「Content Delivery Network」の略で、インターネット上でコンテンツを効率よくユーザーに配信するためのネットワークのことです。 CDN(Content Delivery Network)とは、Web上で送受信されるコンテンツを効率的に配送するために構築されたネットワーク IT用語辞典 - CDN 例えば、日からアメリカのサーバーでホスティングされているWebサイトにアクセスする場合を考えてみましょう。 日アメリカのサーバー間では、物理的な距離が遠いため、日でホスティングされているWebサイトにアクセスする場合に比べて、Webページを表示するスピードが遅くなっ

    100秒で理解するCDN
  • 「ミニPCガチャ」で、Windowsがボリュームライセンス外れを引いた時の作業メモ

    N100の格安ミニPCがほしかった(昨今、大体二〜三万くらいで買える) Windowsのライセンスがボリュームライセンスだった、闇とはいえ、キレそう 色々操作すると「組織に許可されてねーわ」的なことを言われたりもする (ここから題) 回復ドライブつくって全消し再インストールしたら、Microsoft Storeがはいってなかった というか、ほとんどのWindowsアプリがはいってなかった メロスは激怒した ライセンスチェック ダイアログが開き、どのようなライセンスなのか確認できる。 ボリュームライセンスだとガチャ外れ。なお、半外れがあるらしい(再インストールで復活するケースがあるとか??)。 大手だと、OEMとしてPCのハードウェアにシリアルが焼かれており、それを利用できるのでチェックするとよい なんとなくググってると MAK…? とかでないと、どうやら外れらしい(たぶん、KMSが全外れ

    「ミニPCガチャ」で、Windowsがボリュームライセンス外れを引いた時の作業メモ