kanda_kのブックマーク (199)

  • 【翻訳】テスト駆動開発の定義 - t-wadaのブログ

    このブログエントリでは、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent BeckがTDDの定義を改めて明確化した文章を、許可を得たうえで翻訳し、訳者の考察を沿えています。 きっかけ 2023年の年末、テスト駆動開発(TDD: Test-Driven Development)の考案者Kent Beckは、substackにTDDに関するポストを連投して論戦を繰り広げていました。TDDはその誕生から20年以上が経ち、その間に「意味の希薄化」が発生して議論が噛み合わなくなっていました。意味の希薄化(Semantic Diffusion)とは、新しく作り出された用語が広まる際に来の意味や定義が弱まって伝わる現象です。 私(和田)はTDDと関わりの深いキャリアを歩んできました。Kent Beckの著書『テスト駆動開発』の翻訳者であることもあり、TDDの正

    【翻訳】テスト駆動開発の定義 - t-wadaのブログ
  • Notionでのスクラム運用の現状報告

    前書き どうも、スマートショッピングでプログラマーをやっている桑島です。 昨年末頃からスクラム運用にNotionを使い始めました。まだまだ試行錯誤中ですが、現在の利用方法などについて社内共有もかねて記事としてまとめたいと思います。 弊チームのスクラムのすすめかたについて 社内でもチームごとにスクラムの進め方がちがうので、私のいるチームが普段どうスクラム開発を行っているかまず説明します。 社内のエンジニアチームですが、いわゆるSaaSのロードマップ開発を行っているチームが3つ、ハードと組み込みソフトウェアを開発しているチームが1つ、あとSREチームが存在しています。 その中で私はマッハ(Mach)というロードマップ開発を行うチームに所属しています。 チームメンバーはエンジニアが3人、PdM、デザイナーとなっており、PdMとデザイナーは他チームとの兼任になっています。 開発の流れですが、基

    Notionでのスクラム運用の現状報告
  • 高校入試の出願システム、Gmailにメール届かず……神奈川県、受験生に「@gmail.com以外のアドレス使って」

    神奈川県教育委員会が2024年1月4日にリリースした、公立高校入試のインターネット出願システムで、「@gmail.com」ドメインのアドレスにシステムからのメールが届かず、受験生が出願用アカウントを作成できない問題が起きている。 15日夜時点でも解消しておらず、県教委は受験生に対して、「@gmail.com以外のメールアドレスで登録してほしい」と呼び掛けている。 このシステムは、公立高校の2月入試に出願する受験生などが利用する。中学校で受け取った書類に書かれたURLから出願サイトにアクセスし、メールアドレスなどを登録して「志願者アカウント」を作成すると、出願サイトへのログインに必要な「登録番号」がメールで届く、という流れだ。 だが、登録したメールアドレスが「@gmail.com」の場合、登録番号入りのメールが届かない不具合が起きているという。 新システムによる出願は1月4日に受付スタート。

    高校入試の出願システム、Gmailにメール届かず……神奈川県、受験生に「@gmail.com以外のアドレス使って」
    kanda_k
    kanda_k 2024/01/16
  • チームの機能と配備を考えるための7つのチーム責務定義ガイドライン - mtx2s’s blog

    前回の記事ではチーム中心の組織づくりの設計原則について書いた。今回は、それらの原則に基づくチームをソフトウェアプロダクト組織内にどう配備し、どのような機能を持たせるかについて考える。これは言わば、チームの責務を定義することに他ならない。記事ではこれを、7つのガイドラインとして書き出してみることにした。 前回の記事:『チーム中心の組織作りのための6つのチーム設計原則 - mtx2s’s blog』 mtx2s.hatenablog.com 1. ストリームアラインド 2. オーナーシップ制 3. バリエーション分割 4. 技術横断型 5. DevOps 6. 機能横断型 7. マルチスキル 組織設計とはアーキテクティングである 1. ストリームアラインド ソフトウェアプロダクト組織の開発フローは、ユーザーや市場の観察をもとにアイデアを生み出すことから始まる。そのアイデアを仮説として、それを

    チームの機能と配備を考えるための7つのチーム責務定義ガイドライン - mtx2s’s blog
  • 良いコメントが良い設計を導く

    要旨 コメントを適切に記述することは、特にインターフェイス(クラスやメソッド)において重要です。これにより、直感性が高まり、抽象化が十分に行われているかを確認する手助けになります。そのため、コメントはソフトウェア設計プロセスの重要な一部と位置づけられます。 2種類のコメントタイプ まず、コメントを2種類に分類します。 1️⃣ コードをより詳細化するコメント(lower-level comment) 2️⃣ コードをより抽象化するコメント(higher-level comment) どちらも必要なコメントとしつつ、書では後者のコメントをより重視しています。 1️⃣ コードを詳細化するコメント(lower-level comment) 変数名などに残すタイプのコメントで、宣言した対象の単位や境界値、null許容などの詳細を明示することで、コードの正確性を高めます。こちらのタイプのコメントも必

    良いコメントが良い設計を導く
  • AIはどこまで無断で学習できるのか。~文化庁の生成AI論点整理(ガイドラインの素案)を読んで - フジイユウジ::ドットネット

    今日、文化庁は生成AIと著作権保護についてのガイドラインとなる素案を提示しました。(2023/12/20時点。その後の状況については追記をお読みください。) 生成AIでなにが合法でどんなとき違法になるべきか、クリエイターや開発者、ビジネス系のひとなどが議論していますが、多くの生成AI周辺にいる人たち全員に関係あるガイドラインがいままさに検討されているわけです。 朝日新聞ではこう報じています。 文化庁は20日、文化審議会著作権分科会の法制度小委員会に、生成AI人工知能)によるコンテンツの無断学習は、著作権法で著作権者の許諾が不要とされる「非享受目的」にあたらない場合があるとする「AIと著作権に関する考え方」の素案を示した。生成AIが記事や画像データなどを無断で利用する「ただ乗り」(フリーライド)に懸念の声が上がる中、現行法を厳格に解釈し、歯止めをかけたい考えだ。 朝日新聞デジタルより引用

    AIはどこまで無断で学習できるのか。~文化庁の生成AI論点整理(ガイドラインの素案)を読んで - フジイユウジ::ドットネット
  • DBアーキテクチャの比較と選択

    Database Engineering Meetup #1 DBアーキテクチャの比較と選択 Cloud-native storage service for bulk load & random lookup workload https://scalar.connpass.com/event/298887/

    DBアーキテクチャの比較と選択
  • マイクロサービスアーキテクチャへのIntegration Test導入のすゝめ

    こんにちは、バックエンドを中心に開発をしています、野島といいます。 ソフトウェアテスト自動化カンファレンス2023に「マイクロサービスアーキテクチャへのIntegration Test導入のすゝめ」というお題で登壇しました。 そちらで発表した内容を記事にしつつ、当日話しきれなかった内容についても書きます。 発表は下記の内容を話しました。 Integration Testの導入を決意した背景にあった課題 Integration Testの導入/運用での工夫 Integration Testを導入して得られたメリット まとめ 記事では、Integration Testを以下の定義で扱います。 マイクロサービスが依存する外部コンポーネントをモック化せずに行うAPIテスト。 外部コンポーネントとは、具体的にはデータストア、外部サービス、テスト対象が依存するマイクロサービス、などを指します。 テス

    マイクロサービスアーキテクチャへのIntegration Test導入のすゝめ
  • 2023年に読んでよかった技術書

    おそらく 2023 年に Zenn で出す最後の記事になるかと思います。 タイトルの通り、2023 年に読んだの中で、特に素晴らしかったものをご紹介します。 とはいえあまり今年は技術書を読んだ印象がなく… というのも、特定の xx(例えば Next.js、Ktor)といった部類に関しては公式のドキュメントを読むことがほとんどになり、書籍に求めるのは公式ドキュメントに書かれていない何かや誰かの経験・ノウハウになったからだと思います。 この記事を書くにあたって今年読んだを振り返ってみても、やはり十数冊程度(それでも月に 1 冊は読んでた)のでインプット:アウトプットの割合的には良いバランスではないかと思っています。 ただ、先に述べた通り公式ドキュメントに書かれていないなにかを売っているというのはどれも当の意味で価値があるものであり、皆さんにも当に意味のある情報にお金を使っていただける

    2023年に読んでよかった技術書
  • APIの自動テストとモックAPIを駆使してTDD風に開発する

    こんにちは、バックエンドを中心に開発をしている野島と申します。 最近下記の流れで開発をしており、とても開発しやすいと感じているので共有します。 APIの自動テストの作成 モックAPIの作成 APIの処理の実装 TDDは下記の順序で行いますが、それを拡張してAPI開発にあてはめたようなスタイルです。 レッド:動作しない、おそらく最初のうちはコンパイルも通らないテストを1つ書く。 グリーン:そのテストを迅速に動作させる。このステップでは罪を犯してもよい。 リファクタリング:テストを通すために発生した重複をすべて除去する。 テスト駆動開発 p.ⅹより引用。 それでは、内容に入っていきます。 0. 前提 Go言語でAPI開発し、テストツールにはscenarigoを利用するとします。 scenarigoYAML でテストシナリオを記述するAPIテストツールです。簡潔に記載できるので、どのような

    APIの自動テストとモックAPIを駆使してTDD風に開発する
  • CSSで句読点括弧のカーニングができるようになるぞ! 日本語が読みやすくなる最近サポートされた・近日サポートされるCSSの機能のまとめ

    CSSのこの機能を待っていた人も多いと思います! CSSで、句読点括弧のカーニングが自動でできたり、フレーズの途中で改行されないようにしたり、日語と英語が混在したテキストでスペーシングが自動調整されたり、10px以下でも指定サイズ通りに表示されたりなど、日語が読みやすくなる最近サポートされた・近日サポートされるCSSの機能を紹介します。 Introducing four new international features in CSS by Jack J 下記は各ポイントを意訳したものです。 ※元サイト様のライセンスに基づいて翻訳しています。基づいてというのは、貢献部分に関して同ライセンスも含みます。 はじめに word-break: auto-phrase;によるフレーズで自動改行 text-autospaceによる文字間のスペーシング text-spacing-trimによる句読

    CSSで句読点括弧のカーニングができるようになるぞ! 日本語が読みやすくなる最近サポートされた・近日サポートされるCSSの機能のまとめ
  • 開発生産性を改善するためにやったこと

    こんにちは、株式会社スマートショッピングでエンジニアリングマネージャーを担当しているleafです 先日開催された Findy Team+ Award 2023 にて組織別部門(50人未満の組織規模)とチーム別部門(レビューリードタイムが早い)を受賞することができましたので、Findy Team+ 導入から今までに取り組んだこと、今後の取り組みについてご紹介させていただきます 初めにやったこと 初期に取り組んだことは2点で、正確な現状把握と目標設定です 運用中のリポジトリに計測を導入したため、放置されたPRなどが残っており、開発状況に関係なく数値が上下することがありました そのため、対象リポジトリの放置PRなどを全て棚卸しし、どうしても制御できないPR(自動生成されるものや隣接チームの依存が大きいもの)に関してはタグを設定し除外することでようやく現状が把握できる状態となりました 目標設定に関

    開発生産性を改善するためにやったこと
  • 関数型プログラミングと型システムのメンタルモデル

    Qiita Conference 2023 Autumun での発表資料です 発表時間の見積もりが下手で後半全然説明できませんでした、すみません! 実際のプロダクト開発ではどうすればいいのか? というケースは以下のスライドを参照してください。 (スライドは、こちらのプロダクト開発の経験をベースに基礎を再整理したものになります) https://speakerdeck.com/naoya/typescript-niyoru-graphql-batukuendokai-fa-75b3dab7-90a8-4169-a4dc-d1e7410b9dbd

    関数型プログラミングと型システムのメンタルモデル
    kanda_k
    kanda_k 2023/10/27
  • Slack Botによるヘルプページの情報参照:LLMを組み合わせたRAGの実装

    はじめに 株式会社スマートショッピングで SRE をしているbiosugar0です。 先日、2023 年 10 月 23 日に行われた Amazon Bedrock Prototyping Camp というイベントに参加してきました。 そこでは Bedrock の紹介から始まり、Claude のハンズオン、実際にプロダクト反映を目指したプロトタイピングを行うという内容でした。 今回はその中で検証、実装した社内用の Slack bot に弊社ヘルプページを参照させる事例を紹介します。 Retrieval Augmented Generation (RAG) Retrieval Augmented Generation (RAG)は、LLM を用いた処理において、外部のデータベースや文書と連携してより精度の高い回答を生成するためのテクニックです。 GPT-4 のような LLM は、学習に使用さ

    Slack Botによるヘルプページの情報参照:LLMを組み合わせたRAGの実装
  • Go言語による各種データ構造の扱い方(やや競プロer向け)

    こんにちは株式会社スマートショッピング ソフトウェアエンジニアの葛西伸樹です。 今年の1月ごろから競技プログラミングのコンテスト(AtCoder)にGo言語で参加し始めたのですが、使用人口も少なく情報が見つからずなかなか苦戦しましたので現在わかっている範囲でGo言語による各種データ構造の扱い方についてまとめました。 指摘やコメントがあればぜひお願いします! この記事で説明すること/しないこと この記事では競技プログラミングでよく使われるデータ構造のGo言語による扱い方とおおよその実行速度について説明していきます。 今回説明するデータ構造は以下の通りです。 配列 動的配列 キュー/スタック 優先度付きキュー HashMap/HashSet TreeMap/TreeSet また 各種データ構造自体の説明 各種データ構造を使用した具体的なアルゴリズム については説明を省略します。 早速各データ構

    Go言語による各種データ構造の扱い方(やや競プロer向け)
  • MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]

    株式会社ラクーンホールディングスのエンジニア/デザイナーから技術情報をはじめ、世の中のためになることや社内のことなどを発信してます。 bashパフォーマンスMySQLInnoDBDB設計インデックス こんにちは、羽山です。 今回は MySQL のプライマリキーに UUID を採用する場合に起きるパフォーマンスの問題を仕組みから解説します。 MySQL(InnoDB) & UUID のパフォーマンスについては各所でさんざん議論・検証されていますが、論理的に解説した記事が少なかったり一部には誤解を招くようなものもあるため、しっかりと理由から理解するための情報として役立つことができればと思っています。 UUID と比較される古き良き昇順/降順のプライマリキーはというと、 MySQL の InnoDB において良いパフォーマンスを出すために縁の下の力持ちのような働きをしてくれているケースが実は少な

    MySQLでプライマリキーをUUIDにする前に知っておいて欲しいこと | Raccoon Tech Blog [株式会社ラクーンホールディングス 技術戦略部ブログ]
  • ドメイン駆動設計は何を解決する手法なのか - stmn tech blog

    こんにちは、リファクタリング大好きなミノ駆動です。 株式会社スタメンでは、企業エンゲージメント構築サービスTUNAG(ツナグ)の技術的負債解消と今後の持続的成長のため、ドメイン駆動設計(DDD)の導入を検討しています。 ところでDDDはとかく理解しづらく、何のためのDDDなんだという議論になりがちです。この記事では、DDDの真の主人公コアドメインを中心に、DDDが何を解決するものなのか、全体像を改めて整理します。 この記事で扱う内容 DDDが解決したい課題と解決方法の全体像。 この記事では扱わない内容 設計パターンの実例などの実装詳細。 大事な前提 〜利益を得るためのサービス開発 会社でのサービス開発は、趣味や道楽でやるものでしょうか。違いますね。ビジネスとして、企業活動としてサービス開発しています。当たり前の話ですが、利益を得られるように開発しなければなりません。 ドメイン駆動設計は、継

    ドメイン駆動設計は何を解決する手法なのか - stmn tech blog
  • DevTools の 5つのTips

    こんにちは、株式会社スマートショッピングでエンジニアをしているrobjamです。 デベロッパーツール(DevTools)には便利な機能が盛り沢山です。今回はその中から一部の機能をご紹介したいと思います。今回は主にChromeのDevToolsを使いますが、他のbrowserでも同じような機能が提供されております。 簡単な例文をローカルで試せるようにrepoを準備しました。 こちらをcloneしてセットアップいただければと思います。 1. タブの並べ替え タブの並び替えは、キラーフィチャーではないかもしれませんが、ご存知の方が少ないかもと思って共有します。タブの並び替えができます!動画をみていただければイメージがつかめると思います。 2. xhrリクエストの再送信 たまにプログラム的にリクエストを送信したい時があります。例えば、体験のrepoにあるcounterのエンドポイントを20回送信し

    DevTools の 5つのTips
  • SRE成熟度評価におけるポストモーテムLv.3ガイドライン

    ポストモーテムLT会!「SRE成熟度評価」「社内共有会」カルチャーを醸成するためにやったこと https://findy.connpass.com/event/294084/ □ Slide内資料リンク SRG Portal https://ca-srg.dev/ Developer Experts制度 https://www.cyberagent.co.jp/techinfo/info/detail/id=23823 データで見るサイバーエージェントグループのSREと横断的なSRE推進の取り組み https://speakerdeck.com/shotatsuge/ca-sre-promotion SRE Technology Map https://www.cyberagent.co.jp/techinfo/info/detail/id=28998 サイバーエージェントグループ エンジ

    SRE成熟度評価におけるポストモーテムLv.3ガイドライン
  • 【Go】Mapの内部構造とO(1)のメカニズム

    はじめに こんにちは、株式会社スマートショッピング エンジニアのhi6okuniです。 フロントエンドエンジニアとして主にReactを用いた開発に従事してきましたが、この半年間は幸運にも自社のバックエンドをGoで開発する機会に恵まれました。Goらしいコードを書く技術も日々学習中ですが、最近ではデータ構造そのものにも興味が湧いてきました。そこで今回、GoMapの内部構造がどのように作られているのかを深堀りしてみることにしました。主な焦点はruntime/map.gomapassign関数の解析になります。 ざっくり理解 始めにruntime/map.goファイルのMapのコメントを読んでみましょう。データ構造/仕組みが記載されています。 A map is just a hash table. The data is arranged into an array of buckets. E

    【Go】Mapの内部構造とO(1)のメカニズム
    kanda_k
    kanda_k 2023/09/15