タグ

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

  • TypeScript の変性(共変・反変)を 5 分で理解する

    type User = { name: string } type Admin = User & { permissions: string[] } const user: User = { name: "user", } const admin: Admin = { name: "admin", permissions: [], } User は名前だけを持つ型で、Admin は名前と権限を持つ型です。また、それぞれの型の変数も用意しています。 この後のコード例は極力シンプルにするため、やや不自然なコードになっていますがご了承ください[1]。 サブタイプとスーパータイプ Admin 型の変数は name プロパティを持ち、User 型の条件を満たしています。そのため、User 型の変数には Admin 型の変数を代入できます。 その逆は型エラーになります。User 型の変数には perm

    TypeScript の変性(共変・反変)を 5 分で理解する
  • フロントエンド監視の全体像と実現方法

    必要性 フロントエンドの監視はバックエンドやインフラのそれらと比べ、優先度が低くなりがちです。 バックエンドやインフラでの障害はサービス継続に直結するため、これは当然と言えば当然なのですが、別の理由もあると考えています。 それは計算リソースをサービス提供側が管理していないことです。 例えばアプリケーションがインフラとして AWS を利用しているなら、AWS のリソースを管理するのはサービス提供側です。 これは AWS 以外のクラウドサービスプロバイダやオンプレであっても同様です。 一方でフロントエンドはエンドユーザのブラウザ上で動作し、これを管理しているのはエンドユーザです。 フロントエンドはその性質上、監視の「盲点」になりがちです。 しかしフロントエンドはエンドユーザが直接触れるものであるため、そこで何が起きているかサービス提供側は正確に把握する必要があります。 マイルストーン フロント

    フロントエンド監視の全体像と実現方法
  • データベースを勉強したいあなたに送る技術書17冊(+11冊1講義7link)

    これはなに ども、レバテック開発部のもりたです。最近めっちゃ元気!! 今回は『データベースについて勉強したいあなたに送る技術書17冊(+11冊1講義7link)』として、もりたがここ半年くらいでわーっと集めたデータベース周りの書籍(とか)を紹介していきます。アプリケーションって結局はデータベースみたいなところがあると思うんですが、おれは長いことデータベースをどう学んだら良いのか分かりませんでした。同じような気持ちを抱えているITエンジニアの人もいると思うので、学習ロードマップと合わせて紹介していきます。 なお具体的な対象読者は業務でなんとなくSQL書いてるけど、ウィンドウ関数とか言われると分からんな……くらいの人です。 扱う領域と扱わない領域 扱う領域としてはだいたい以下 再入門 SQL 内部構造 論理設計 周辺知識 データベース理論 その他高度なもの モデリング、NoSQL、分散データ

    データベースを勉強したいあなたに送る技術書17冊(+11冊1講義7link)
  • GPT連携アプリ開発時の必須知識、RAGをゼロから解説する。概要&Pythonコード例

    こんにちは。わいけいです。 今回の記事では、生成AI界隈ではかなり浸透している RAG について改めて解説していきます。 「低予算で言語モデルを使ったアプリを開発したい」というときに真っ先に選択肢に上がるRAGですが、私自身もRAGを使ったアプリケーションの実装を業務の中で何度も行ってきました。 今回はその知見をシェア出来れば幸いです。 RAG(Retrieval-Augmented Generation)とは まず、 そもそもRAGとは何ぞや? というところから見ていきましょう。 RAG(Retrieval-Augmented Generation) は自然言語処理(NLP)と特に言語モデルの開発において使用される技術です。 この技術は、大規模な言語モデルが生成するテキストの品質と関連性を向上させるために、外部の情報源からの情報を取得(retrieval)して利用します。 要は、Chat

    GPT連携アプリ開発時の必須知識、RAGをゼロから解説する。概要&Pythonコード例
  • 駆け出し時代の自分に読ませたかった技術書18選 遠回りをしまくった自分に送りたい

    どうもお疲れ様です。MESIです。 これは私が駆け出しの新卒1年目の頃でしょうか。 ある社内のつよつよエンジニアからこう言われました。 「MESIよ。流行りのフレームワークの使い方を覚えるのではなく、土台を理解しなさい」 彼はそう言い残すと1冊のを残し会社を去っていきました。 これ。 託されたを読んでみたものの当時の私には難しすぎました。 理解ができないのですが、何が理解できないのかがわからない。そんな状態でした。 毎日このとにらめっこをしましたが、時間だけが過ぎていきました。 大学でコンピュータサイエンスを全く学んでいない状態で入社した当時の私には難しすぎたのです。 私は諦めずにOS関連の低レイヤーを読み出しました。そして以下のループにハマりました の内容が理解できない ↓ を理解するために別のを読む ↓ 理解できないのでまた別のを読む いきなり難しいにチャレンジをし

    駆け出し時代の自分に読ませたかった技術書18選 遠回りをしまくった自分に送りたい
  • Next.js + TypeScript + Tailwind CSS の開発環境をできるだけ丁寧に構築する【2024年】

    はじめに 最近、Next.jsTypeScriptTailwind CSSを使って技術ブログを立ち上げました。(まだあまり更新は進んでいませんが…) このプロジェクトを通じて構築した開発環境がわりと快適だったので、誰かの参考になるかもしれないと記事を書いてみることにしました。 できる限りわかりやすく詳細な説明を心がけましたが、その結果、記事のボリュームが大きくなってしまいました。長文ですが、興味のある方はぜひ読んでみてください🙏 また、この記事内で紹介した内容をセットアップしたリポジトリを公開しています。 Next.jsのボイラープレートとして活用可能ですので、興味のある方はぜひ覗いてみてください。

    Next.js + TypeScript + Tailwind CSS の開発環境をできるだけ丁寧に構築する【2024年】
  • ソフトウェアエンジニアとしての職務経歴書の書き方を考えました

    この前職務経歴書を書いたので、そのとき色々考えたり調べたりしたことを書きます。 一般的な転職活動の職務経歴書は微妙だった 僕の転職は二回目です。 一回目の転職のときは、リクルートエージェントのサービスを使って転職しました。 リクルートが公開している、一般的な職務経歴書のサンプルは↓こんな感じです。 Wordで表をつくって、編年体に、何をやってきたかを書くことで、自分の職務経歴を書きます。 ただ詳細はちょっと長くなるので、職務経歴書の冒頭に数行でサマリーが書いてあって、親切ですね。 一般的な日の職務経歴書というのは、このフォーマットで問題ありません。 実際一回目の転職のときは僕もこのフォーマットで転職しています。 二回目の転職活動も、この職務経歴書に二社目の経験を追記すればいいか、と思っていましたが、 見れば見るほどこのフォーマットで書いた自分の職務経歴書が微妙に感じてきました。 何が微妙

    ソフトウェアエンジニアとしての職務経歴書の書き方を考えました
  • 基本情報技術者を取得してから「見える世界」が変わった話をしようか

    どうもお疲れ様です。 MESIです。 皆さん基情報技術者は取得済みでしょうか? よくITエンジニアの免許と言われている資格ですよね。 私は一昨年の秋に取得しました。 ちょうどエンジニアとして就職して2年目の時でしたね。 それまでの私の知識は業務で必要とされる部分しか知識がなく、情報系の学科を出ているわけでもないので、ITエンジニアとしての土台が全くない状態でした。 時々、このままではいけないと技術書を買って読むのですが、土台がないので頭に全然入ってこないし、何が書いてあるのかわからない。。 そんな私が基情報を受験してから、見える世界が変わった件について話します。 『何をしている?早く基情報技術者を取るんだ!』 新卒1年目の自分に言いたいセリフNo1がこれです。 なぜ基情報を受験することになったのかといいますと、会社で半年に一度目標設定をするのですが、その一環としてです。 エンジニア

    基本情報技術者を取得してから「見える世界」が変わった話をしようか
    yk5656
    yk5656 2024/01/28
  • スイカゲームの作り方

    はじめに Go言語用のEbitengineというゲームエンジンに興味があったので、試しにスイカゲームもどきを作りってみました。Ebitengineを使うと意外と簡単にスイカゲームもどきを作る事ができたので、なるべく分かりやすく作り方を紹介してみようと思います。 まずは先に完成品をお見せします。ちなみにフルーツの回転は面倒くさいので実装しないことにしました。 ちなみにEbitengineはwasmでも普通に動きます。ビルドしたものをこちらに置いたのでブラウザから実際に動かす事ができます。 それではスイカゲームもどきを作って行きましょう。 描画する まず一番初めにフルーツの画像を作るところから始めます。これはリンゴ、オレンジ、ブドウ、パイナップル、メロン、スイカのつもりです。 続いてフルーツを定義します

    スイカゲームの作り方
  • JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった

    ASTをみてみよう この不思議な現象を調査するために、AST(Abstract Syntax Tree: 抽象構文木)の状態を見てみることにしました。ASTはソースコードを構文解析した結果をツリー構造にしたもので、AST Explorerを使うと簡単に見ることができます。 ({}) + "" のAST ({}) + "" のASTをみると、ひとつの ExpressionStatement となっているのがわかります。ExpressionStatement の leftは ObjectExpression 、 operator は + 、rightは Literal となっていて、たしかに Object と String の足し算になっています。これなら確かに"[object Object]" が返ってくるでしょう。 {} + ""のAST しかし、{} + "" のASTをみると、Bloc

    JavaScriptでObjectに空のStringを足すと0になる!?……わけではなかった
  • パスワードはおしまい! 認証はパスキーでやろう

    はじめに パスワードは古来より認証に良く使われる方法ですが、その運用の難しさからセキュリティの懸念とその対策としての運用の複雑さ(複雑で長い文字列、90日でパスワード変更など)が要求される大きく問題をもった仕組みです。 その根的な解決策としてFIDO Allianceを中心に推進されている 「パスワードレス」 が注目されています。これはPINや生体認証とデバイス認証を使ったMFAからなっており、フィッシングやパスワード流出に強い上に、ユーザも複雑なパスワードを覚えなくて良い、という大きなメリットがあります。最近はこの流れでPassKeyというものが登場し、Apple/MS/Googleのプラットフォーマが対応したことで、格運用に乗せれるフェーズになってきました。というわけで以下に解説動画を作ったのですが、動画中で時間の都合で触れきれなかったところや、JavaScriptによる実装のサン

    パスワードはおしまい! 認証はパスキーでやろう
  • CSRF 対策はいまだに Token が必須なのか?

    CSRF 対策は One Time Token を form なりに付与して、サーバ側でチェックすれば良い。 それをデフォルトでサポートしてるフレームワークなどもあるし、なくてもライブラリでいくらでも対応できる。 どうせ完全にステートレスなサービスはなかなかないので、サーバ側に redis や memcache を用意するのも別に大変じゃない。 なので、 CSRF 対策として Token を付与するのは、最も安全で推奨できる方式ではある。 っていうのを踏まえた上で、もう SameSite=Lax デフォルトだけど、今でも Token 必須なの?みたいなのがたびたび話に出るので、いい加減まとめる。 前提 この話は、スコープがどこなのかによって話が多少変わるので、そこを絞る。 今回は Passive ではなく Active に対策していく場合を考えるので、前提をこうする。 SameSite=l

    CSRF 対策はいまだに Token が必須なのか?
  • MySQLでUUIDv4をプライマリキーにするとパフォーマンス問題が起きるのはなぜ?(N回目)

    はじめに こんにちは、令和トラベルでバックエンドエンジニアをしている飯沼です。 MySQLでは、UUID (v4)などのランダム性の高いIDをプライマリキーに設定すると、パフォーマンスが低下すると言われています。私自身もこの問題については認識しておりアンチパターンとして避けて来ましたが、イマイチ理由を理解できず何度も調べていたので自分の理解を整理しました。 ※ この記事は令和トラベルのTech LT会で共有した内容を記事にしたものです。社外の方にもご参加いただけるTech LT会は connpass にて告知しています。 UUIDをプライマリキーにするユースケース そもそもUUIDをプライマリキーにするユースケースはどのようなものがあるのでしょうか? いくつかの観点から考えてみます。 パフォーマンス観点 大量の同時書き込みが発生するような状況でauto incrementを利用してIDを発

    MySQLでUUIDv4をプライマリキーにするとパフォーマンス問題が起きるのはなぜ?(N回目)
    yk5656
    yk5656 2024/01/18
  • Docker Desktop と代替ツールの機能検証まとめ

    はじめに こんにちは。今年クラウドエース株式会社に新卒入社し、現在 SRE をしている渋谷と申します。 自分の愛車は MAZDA の RX-8 という車なのですが、この車に搭載されているロータリーエンジン(おにぎりエンジン)にちなんで、自分が執筆する記事のアイキャッチは 🍙 にすることにしました。 さて、この記事では GUI を用いてコンテナを管理・操作する際に使用されるコンテナ管理ツールとして代表的な以下の 3つのツールを紹介し、機能検証を行います。 Docker Desktop Rancher Desktop Podman Desktop それぞれのコンテナ管理ツールのメリット・デメリットを解説し、最後に自分が選んだコンテナ管理ツールを紹介します。 自分の用途に合ったコンテナ管理ツールを選択することで、より快適に Docker を使用することができるようになると思いますので、ぜひ参考

    Docker Desktop と代替ツールの機能検証まとめ
  • Auth.js v5ではじめる本格認証入門

    Next.js 14 / Auth.js v5 / Prisma / Planet Scale / shadcn/ui / Tailwind CSS を用いた認証・認可をハンズオン形式で学びます。

    Auth.js v5ではじめる本格認証入門
  • TypeScriptで学ぶ!SOLID原則

    はじめに 皆さんこんにちは、株式会社エムアイ・ラボのエンジニアです! 今回はソフトウェア設計のSOLID原則について学習したので、弊社のメインの開発言語であるTypeScriptのサンプルコードを使って共有できればと思います。 SOLID原則は、オブジェクト思考プログラミングにおいて、ソフトウェアがメンテナンスしやすく、拡張や変更に強いソフトウェア設計を行うための原則です。 SOLID原則にはSOLIDの頭文字をそれぞれとった、5つの原則があります。 単一責任の原則(Single Responsibility Principle) 単一責任の原則とは、クラスが一つの機能や責任を持つべきで、クラスが変更される理由は一つであるべきというです。 クラスが一つの機能や責任のみを持つようにすることにより、コードは再利用可能でテストが容易になります。 単一責任の原則を遵守している例 以下のBirdクラ

    TypeScriptで学ぶ!SOLID原則
  • Python 3.8以降の型ヒント革命:DataclassとPydanticの徹底比較

    はじめに 📘 この記事は ラクスパートナーズ Advent Calendar 2023 の1日目の記事になります!! 社の ラクス Advent Calendar 2023 の7日目にも参加予定なのでそちらもよろしくお願い致します🥳 長い間 Python3.7 環境のプロジェクトに携わっていましたが、この度 Python3.10~ 環境のプロジェクトに携わることになりました。 そこでこの機会に python3.8 以降の最新の型ヒントやコード品質向上のテクニックについて、改めて情報をキャッチアップしながらまとめていきたいと思います。 この記事の対象者 🎯 Python の型ヒントについて学び直したい方 Python3.8 以降の型ヒントについて理解を深めたい方 python のドメインモデルクラスについて理解を深めたい方 型ヒントを使用したことがないが、興味がある方 なぜ型ヒントを

    Python 3.8以降の型ヒント革命:DataclassとPydanticの徹底比較
  • 【DDD入門】TypeScript × ドメイン駆動設計ハンズオン

    TypeScriptとドメイン駆動設計(DDD)を組み合わせ、APIを構築するハンズオンガイドです。このでは、DDDとは何かという基礎的なところからソフトウェア開発における戦略的設計、戦術的設計まで、包括的な知識を提供します。 戦略的設計では、ビジネスの要求に合わせたドメインモデルの設計をイベントストーミングを用いて行います。その後、戦術的設計では、具体的なコードの実装に関連するDDDの原則と実践を学びます。 TypeScriptを使ってコードを書きながら、DDDの概念を実際のプロジェクトに適用するヒントを紹介します。

    【DDD入門】TypeScript × ドメイン駆動設計ハンズオン
  • お気に入りのコマンドラインツールを淡々と紹介する

    めちゃくちゃ良い記事でした。 「OSS は使っていることを公言するだけでも貢献になる」と songmu さんが言っていたので、私も貢献したいと思います。 僕も貢献したいのでよく使うコマンドラインツールを紹介していきます。 特定のプログラミング言語等に依存するツールは省いています。 actionlint - GitHub Actions の Workflow ファイルの静的検査 GitHub Actions の Workflow ファイルの静的検査ツールです。 かなり精度が高く、色々な設定ミスを検知してくれます。 エラーメッセージも見やすくて助かります。 aicommits - コミットメッセージを自動生成 変更内容を元に自動でコミットメッセージを AI が生成してくれるツールです。 コミットをする前にちゃんと確認してくれるのも安心感があって良いです。 cLive - ターミナル操作を自動化

    お気に入りのコマンドラインツールを淡々と紹介する
  • はじめに|図解 DB インデックス

    はじめに|図解 DB インデックス
    yk5656
    yk5656 2024/01/09