タグ

ブックマーク / qiita.com (257)

  • t-wadaさんと学ぶレガシーコード改善ワークショップのつくり方~虎の巻~ - Qiita

    昨年、テスト駆動開発のエバンジェリストである和田卓人(t-wada)さんと共同で、社内で2回のレガシーコード改善ワークショップを開催しました。概要については、以下の記事に詳しく書かれています。 このワークショップの最大の特徴は、実際の製品のソースコードを対象に自動テストの作成やリファクタリングを行うことです。 題材となるコードを探す作業から始めるため、準備には手間がかかりますが、開発チームがレガシーコードに向き合うスキル・マインドを育成するために非常に有効な手法だと感じています。このため、今年も他の製品開発チームを対象に同様のワークショップを計画しています。 この記事では、今後の開催に向けてこれまで運営として取り組んできたことをまとめ、「レガシーコード改善ワークショップの良いところ」と「ワークショップ開催の具体的な流れ」として説明します。 レガシーコード改善ワークショップの良いところ 参加

    t-wadaさんと学ぶレガシーコード改善ワークショップのつくり方~虎の巻~ - Qiita
    t-wada
    t-wada 2024/02/05
    最近行っている、実際の製品のソースコードを対象に行う「レガシーコード改善ワークショップ」の良いところと開催の具体的な流れについて具体的に説明いただいています。ありがとうございます!
  • なぜJestのmockライブラリに混乱してしまうのか? - Qiita

    はじめに JavaScriptのモックライブラリでは、 sinon などが有名であるが、テスティングフレームワークに Jest を使ってるならば Jest組み込みのモックライブラリで済ませたほうが学習コスト少なくて済むだろうと思える。 しかし、 sinon の感覚でJestのモックライブラリを使おうとすると違和感というのか、モックへの考え方の違いに気づかされる。 ということで今回は、Jestのモックライブラリの考え方と使い方を整理していきたいと思う。 モックの用語整理とJestモックライブラリの位置づけ モックと一言でいっても、それが指す内容は微妙に異なる。 ここでは、モックを 広義のMock Object と 狭義のMock Object と分けて整理してくれているテスト駆動開発を参考に用語を整理する。 テスト駆動開発では、モック用語を、下図のとおり、テストダブルとそのサブクラスとして

    なぜJestのmockライブラリに混乱してしまうのか? - Qiita
    t-wada
    t-wada 2022/12/29
    テストダブル関係のライブラリや自動テストの語彙について知っていればいるほど、Jestの語彙のズレに混乱しがちな理由がうまく説明されているエントリ
  • t_wadaさんによるTDD研修をワードクラウド・名言5選で振り返ってみた - Qiita

    始めに リンクアンドモチベーションでQAエンジニアをしています、代慶と申します。 先日のレガシーコード改善のワークショップに引き続き、和田卓人(t_wada)さんにTDDに関してワークショップを開催してもらいました。 記事では、t_wadaさんが研修の中で頻度高く発言していた言葉や名言と共に、当日の研修での学びの概要を伝えていきたいと思います! 当日の流れ 当日は、10人のエンジニアが10時から16時まで研修を受講しました。 前半は、座学メインで、適宜質問にも答えていただきました。 後半は、実習メインで、TDDの実践を行い、t_wadaさんとの公開1on1の時間を設けていただきました。 ※今回の講義は、前もってTDD Boot Campの動画の視聴も行い、よりTDDの理解を深めることができました。 TDDの概要 TDD(テスト駆動開発)とは・・・Red ⇒ Green ⇒ Refacto

    t_wadaさんによるTDD研修をワードクラウド・名言5選で振り返ってみた - Qiita
    t-wada
    t-wada 2022/12/27
    株式会社リンクアンドモチベーションにお招きいただきTDD研修を行いました。録画が残ればWhisper等で文字起こしと内容分析が出来て、社内展開に活かせる時代になりましたね。レポート記事ありがとうございます!
  • なぜ、ソフトウェアプロジェクトは人数を増やしても上手くいかないのか - Qiita

    はじめに ソフトウェアプロジェクトには不思議な性質があります。現状のスケジュールに課題を感じて、短くするために人員を投下しても、なかなか思い通りに短くならない。それどころか悪化してしまうことがあります。場合によってはプロジェクト自体が破綻して失敗してしまうことすらあります。 今回は、このようなソフトウェアプロジェクトに潜む直感に反する性質を数理的なモデルを介して理解していく試みです。ある種の思考実験としてお楽しみください。 宣伝 Qiitaさんとコラボ企画でアドベントカレンダーをつくりました。 DXをめちゃくちゃ改善した話を募集しています。 https://qiita.com/advent-calendar/2021/dx-improvement 10人の妊婦がいても1ヶ月で一人の子供は生まれない これは誰かの技術力やプロジェクトマネジメント力に欠陥があるのではなく、「人月の神話」で有名な

    なぜ、ソフトウェアプロジェクトは人数を増やしても上手くいかないのか - Qiita
    t-wada
    t-wada 2021/11/02
    スケールメリットが必要なら、コミュニケーションコストの低い組織とプロダクトの実現が重要。コストパフォーマンスが必要なら、大人数の大型プロジェクトではなく小プロジェクトに分解しながら進めることが重要。
  • 鬼滅の概念モデリング - Qiita

    はじめに 概念モデリングとは、システムのドメインを構成する概念を発見しその属性・振る舞い・関連を定義する活動である。例えば、段階的に理解する O/R マッピングで実例として挙げたシンプルな課題管理システムにはプロジェクト・課題・コメントの 3 概念が登場するが、これらを概念モデルとして表すと以下のようになる。 来、概念モデリングは DDD の主要な活動の一つである。DDD の Whirlpool プロセスの図を見てみよう。Model は Code Probe と Scenario に挟まれた中心概念であり、常時フィードバックを受けて更新されることが想定されている。 にもかかわらず、日での DDD 関連の議論においては、概念モデリングが語られることは少なく、レイヤ分割やクラス類型といったアーキテクチャ的側面への偏りが見られる。パターンカタログを眺めればわかる通り、それらの要素は DDD

    鬼滅の概念モデリング - Qiita
    t-wada
    t-wada 2021/09/04
    "日本での DDD 関連の議論においては、概念モデリングが語られることは少なく、レイヤ分割やクラス類型といったアーキテクチャ的側面への偏りが見られる。それらの要素は DDD の実践のうちごく一部を占めるに過ぎない"
  • 【PHP8.1】PHP8.1の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2021/11/26にリリースされました 2021/07/20、PHP8.1がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2021/11/25にPHP8.1.0がリリースされる予定です。 というわけでPHP8.1で実装されるRFCを見てみましょう。 RFC Fibers 賛成50反対14で受理。 Fiberです。 PHPで非同期コードを書けるようになります。 $fiber = new Fiber(function (): void { $value = Fiber::suspend('fiber'); echo "レジュームした。$value: ", $value, "\n"; }); $value = $fiber

    【PHP8.1】PHP8.1の新機能 - Qiita
    t-wada
    t-wada 2021/07/27
    PHPに Fiber, 交差型、列挙型、 readonly プロパティ(一度だけ初期化可能)、 final クラス定数などが入る。相変わらず良い意味で貪欲に進化しているし、より堅牢なコードを書けるようにも進化している
  • 『LeanとDevOpsの科学』まとめ - Qiita

    以前からAmazonの欲しいものリストにはあったのですが、なかなか読みたい気持ちにならずリストを整理するときに削除しちゃっていたのですが 2月ぐらいからTwitterでこのについての言及が増えたし、ちょうどそのころ開発生産性とは何か、について一考していたこともあったので、読んでみました。 LeanとDevOpsの科学 一旦さらっと読んで、面白いなー、やっぱデリバリ大事だなーと思って読了したんですが 先日texta.fmでこののことが取り上げられており、あー、そんな読み方があったかーと思って改めてちゃんと読み直してみました。 構成 第一部: 調査結果から見えてきたもの(パフォーマンスを向上させるケイパビリティとは何かの話。特にデリバリを中心に多面的に検討している) 第二部: 調査・分析方法 第三部: 改善努力の実際(いろんな会社の取り組みの事例) 読み方 常に付録Aの図A.1を開いてお

    『LeanとDevOpsの科学』まとめ - Qiita
    t-wada
    t-wada 2021/04/30
    "長らくエンジニアリングの現場では「なんとなくそうだろうな」と思っていたことが客観的な数字によって強い相関関係があることが証明されたということが画期的" 『LeanとDevOpsの科学』の重要性が一言でわかる
  • ウォーターフォールを世に広めたとされる米軍がアジャイルに移行中という話 - Qiita

    また、この図の説明においては理想的なケースにおいても1つ前の工程に戻る事が述べられています。 " Hopefully, the iterative interaction between the various phases is confined to successive steps. " (投稿者訳) 理想的には、各段階において工程が前後する範囲は直近の工程に限られる。 理想的でない場合はどうかというと、テストから設計まで工程が戻りうると示唆しています。 "The testing phase which occurs at the end of the development cycle is the first event for which timing, storage, input/output transfers, etc., are experienced as dist

    ウォーターフォールを世に広めたとされる米軍がアジャイルに移行中という話 - Qiita
    t-wada
    t-wada 2021/03/18
    Royceの論文には後戻りできるとあったのに最初の図がひとり歩きして後のWaterfallになり、近年米軍で数々のソフトウェア開発プロジェクト失敗が問題視され、アジャイルの導入を法律で義務付けられるまでの歴史。面白い。
  • The Rails Doctrine(日本語訳) - Qiita

    (訳者注: 原文は https://rubyonrails.org/doctrine/ です。しばらく寝かして問題なさそうであれば家に投げようかと思っています。おかしいところがあればコメント・編集リクエストをお待ちしております。) The Rails Doctrine By David Heinemeier Hansson in January, 2016 Ruby on Railsの驚異的な台頭は、斬新な技術とタイミングによるところが少なからずあります。しかし、技術的な優位性は時間の経過とともに失われていきますし、タイミングの良さだけでは長期にわたってムーブメントを維持できません。そのため、Railsがどのようにして現役であり続けることができたのかだけでなく、どのようにしてそのインパクトとコミュニティを成長させてきたのかについて、より広範な説明が求められています。私が提唱するのは、永続

    The Rails Doctrine(日本語訳) - Qiita
    t-wada
    t-wada 2021/03/12
    Ruby on Rails の価値観、思想、信条を作者 DHH 本人が記した文章「The Rails Doctrine」の翻訳。設計思想や価値観の表明という点でとても重要な文章だし、その訳も素晴らしい。
  • Eventual Consistencyまでの一貫性図解大全 - Qiita

    TL;DR; Eventual Consistencyとか言いながらどうせもっとまともな一貫性実装してることはよくあるんだからみんな適切な名前を使おうぜ。 なぜこの記事を書くのか NoSQLの文脈においてスケーラビリティとのトレードオフでEventual Consistencyという用語は結構な頻度で出てくる。 ACIDに対抗してBASE(Basicaly Avalilable, Soft state, Eventual consistency)なんて言葉が出てきたり、CAP定理の中のAとPだと言ってみたり、分散システムのスケーラビリティを高めるために人類は一貫性を諦めることに余念がない。 その一方で、諦められた一貫性に関しては雑な分類論で語られる事が多く実はもっと適切な言葉があるのに「Eventual Consistencyです」なんて言われる事が良くある。そこで、この記事では過去に並行

    Eventual Consistencyまでの一貫性図解大全 - Qiita
    t-wada
    t-wada 2020/08/27
    強い一貫性である Linearizability(線形化可能性) から弱い Eventual Consistency に至るまで一貫性モデルはこんなに細かく分類されていたのかと驚く。図もわかりやすく、情報量が多い。
  • 2020年現在のNewSQLについて - Qiita

    Disclaimer 当記事はNewSQL開発ベンダの技術ブログや各種論文、その他ニュースサイト等の内容を個人的にまとめたものです。 そのため、理解不足等に起因する誤解・誤認を含む可能性があります。更なる理解が必要な方はリファレンスに挙げた各種文献を直接参照下さい。技術的な指摘は可能であれば取り込み修正しますが、迅速な対応はお約束できません。 NewSQLの解説は二部構成 当記事は前編でNewSQLの概要編となる。 全体の目次は下記である。 NewSQLとは何か NewSQLのアーキテクチャ NewSQLとこれまでのデータベースの比較 NewSQLのコンポーネント詳解 1章から3章までの内容を当記事で解説する。 4章はさらに詳細な技術的解説となり、後編の「NewSQLのコンポーネント詳解」で記述している。 こちらも合わせて一読いただきたい。 1. NewSQLとは何か NewSQLとは、海

    2020年現在のNewSQLについて - Qiita
    t-wada
    t-wada 2020/02/28
    RDBMSやNoSQLの課題を克服し「強い整合性を持ち、ACIDトランザクションをサポートする、(地球規模の)分散型のSQLデータベース」を実現する NewSQL という流れについて。非常に面白い。
  • IT業界で働く者の基礎知識となるクラウドネイティブ とは? - Qiita

    クラウドネイティブを推進する約500団体が参画する CNCF (Cloud Native Computing Foundation)に、クラウドネイティブの定義が公開されている。これは、IT業界で働く者の基礎知識であると言えるので、クラウドネイティブの定義を詳細に調べた結果を以下にまとめる。 CNCFとは CNCFは2015年7月に発表され、約50社が集まり2016年1月に正式発足した。最初の発表から4年後2019年11月のメンバーは約500団体で、大手クラウド事業者、ミドルウェア企業、ハードウェア製造企業、オープンソース・ソフトウェア企業、大学、その他非営利団体などが加入している。 CNCFは、The Linux Foundationの下で運営され、クラウドとコンテナに関連する横並びの活動として、Cloud Foundry Foundation、Xen Project, Open Con

    IT業界で働く者の基礎知識となるクラウドネイティブ とは? - Qiita
    t-wada
    t-wada 2019/11/21
    回復性、管理力、および可観測性のある疎結合システムと堅牢な自動化とを組み合わせることで、インパクトのある変更を最小限の労力で頻繁かつ予測どおりに行えるようになる。よくまとまっている。
  • ウワサのBlawnを触ってみた - Qiita

    program = block block = lines lines = line | lines line line = line_content EOF | line_content END | definition | import import = "import" STRING_LITERAL EOL line_content = expression definition = function_definition | class_definition | c_type_definition | global_definition | c_function_declaration function_definition = "function" identifier arguments EOL block return_value EOL | "function" ident

    ウワサのBlawnを触ってみた - Qiita
    t-wada
    t-wada 2019/10/24
    "言語自作は知らない人には魔法のようで、少し齧った人には簡単で、真面目に取り組んだ人にはとてつもない偉業に見えるでしょう" "一朝一夕ではできない芸当"
  • 至高のDockerイメージ生成を求めて -2019年版- - Qiita

    この記事は@yugui氏の書いた至高のDockerイメージ生成を求めてに感謝しつつ、記事が投稿された当時には無かったさまざまな事情を組み込んで再度まとめたものである。 良いDockerイメージ 良いDockerイメージとは何だろうか。Dockerの利点は次のようなものだから、それを活かすイメージが良いものであるに違いない。 ビルドしたイメージはどこでも動く 適切にインストールされ、設定されたアプリケーションをそのままどこにでも持っていける。 コンテナ同士が干渉し合うことはないので、任意のイメージを互いに配慮することなく柔軟に配備し実行できる 必要のないサービスがコンテナ内で走っていないので、セキュリティの向上に資する イメージの転送が効率的である ベースイメージ部分は一度送ればいちいち再転送する必要がないので、ベースイメージを共有する複数のイメージを効率的に転送できる 標準のレジストリAP

    至高のDockerイメージ生成を求めて -2019年版- - Qiita
    t-wada
    t-wada 2019/10/21
    Multi-stage build や BuildKit など、 yugui さんの「至高のDockerイメージ生成を求めて」後に Docker が改善された点に言及されていてとても良い
  • 現在時刻が関わるコードを関数型で書いてテスタビリティを見てみた - Qiita

    最近、現在時刻が関わるプログラムを題材に、高テスタビリティなプログラミング作法を解説した素晴らしい記事が復刻されて、感想などがTLに流れてきたので、自分もそのお題を関数型プログラミングで解いてみた記事。 はじめに 最近、こんな引用ツイートをした。 関数型界隈だと、参照透過な部分とそうでない部分(現在時刻, 乱数, etc.)を分離しといて使うところで合成する作法が尊重されてて、simplicity と composability の結果として、テスタビリティや柔軟性が高くなる(低くならない)ということがよく謳われている。あとで自分もFPでお題解いてみよう。 https://t.co/00TwqXmtC7 — yasuabe (@yasuabe2613) September 30, 2019 元記事は、t-wadaさんの『現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ 』で、めち

    現在時刻が関わるコードを関数型で書いてテスタビリティを見てみた - Qiita
    t-wada
    t-wada 2019/10/03
    お題を関数プログラミングの知見から3つの観点に分解して設計 "1. 時刻の集合から挨拶の集合への写像。参照透過な全関数。 2.参照透過性が成立しない「現在」という文脈に依存する時刻。3. 1,2の合成" すばらしい
  • Rails Developers Meetup 2018 スライドまとめ - Qiita

    Rails Developers Meetup 2018 スライド まとめ 補足 勝手にまとめました。  問題等あればコメントをお願いします。 登壇者ご人のブログ等が見つかった場合は、そちらを優先しています。 表を書くのを簡略化するために全てリンク形式で書きました。スライドを見つけられなかったものもリンク形式になってます。 抜け漏れ等あると思いますが、随時更新させていただきます。 Day 1 時間 トラックA トラックB 11:10〜 安全かつ高速に進めるマイクロサービス化 Rails on Kubernetes on AWS 11:50〜 Microservices on “Rails “ - Wantedly のマイクロサービス事例 学校をより良くするために、エンジニアができるたった一つのこと 12:30〜 MySQL/InnoDB の裏側 ノンデザイナーのためのコンセプト & ロゴ

    Rails Developers Meetup 2018 スライドまとめ - Qiita
    t-wada
    t-wada 2018/03/26
    Rails Developers Meetup 2018 登壇報告ブログや講演資料へのリンク集。 タイムテーブル形式でまとまっていて読みやすい。
  • Go & Versioning(vgo)を読んで大きな変更が入ったなと思った - Qiita

    Help us understand the problem. What is going on with this article?

    Go & Versioning(vgo)を読んで大きな変更が入ったなと思った - Qiita
    t-wada
    t-wada 2018/02/28
    "バージョンは常にセマンティックバージョニングで表します" "バージョン管理機能が追加されたgoコマンドは、depやglideなどの依存管理ツールとは別のアプローチでバージョンを管理します" go に semver が来るのか
  • React Redux の SPA を運用して得られた知見と実装例、開発フローもあるよ! - Qiita

    Facebook が開発したUI ライブラリ 旧来の DOM 操作による状態管理を props や state で抽象化 パーツをコンポーネントごとに管理するのが得意 https://reactjs.org/ から、ライブデモを試せます。 SPAなどの複雑化する React のステート(状態)管理を、ルール(哲学)に従って書かせることで、フロントエンドの動きを追いやすくするためのライブラリ (*個人的解釈です) もともとは Flux と言う、データの流れを一方向に制限することで、流れを追いやすくするという、オブザーバーパターンの亜種から、さらに転じた考え方。 Redux と言う名前は 「Reducer」 + 「Flux」 で 「Redux」だそうです。array.reduce と同じような役割を Reducer が担います。詳しく知りたい方は作者の発表をご覧ください Dan Abramov

    React Redux の SPA を運用して得られた知見と実装例、開発フローもあるよ! - Qiita
    t-wada
    t-wada 2018/02/08
    良い知見だ
  • 今さらProtocol Buffersと、手に馴染む道具の話 - Qiita

    Protocol Buffersは別に新しい技術ではない。同時にそれは、未だ知られざる、未だに可能性を秘めた先端のソフトウェア技術基盤である。 新しくないのは事実で、GoogleがProtocol Buffersをオープンソース化したのは2008年のことだし、オープンソース化前に社内で使われ出したのは更に昔に遡るだろう。たぶん。 デザイン的にもJSON対応は後付けで、将来JSONが隆盛を極めることなんか全然想定していなかったのが透けて見えて古くさい。 しかし、同時にどうも情報に聡い人であってもなかなかその真価を実感し得ておらず、ある意味で未知の技術であるらしい。ならば、Protobuf (Protocol Buffersの略)を解説した文書は幾多あれども、それに1を加えるのもやぶさかではない。 Protocol Buffersとは Protobufはスキーマ言語だ! 一般的にはProtob

    今さらProtocol Buffersと、手に馴染む道具の話 - Qiita
    t-wada
    t-wada 2018/02/08
    Protobuf は実質的にはシリアライゼーション形式ではなくスキーマ言語であり、ゴテゴテしがちなスキーマ言語の中で、欲張りすぎていないデザインが手に馴染むという話
  • 【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita

    はじめに 今まで commit message を「なんとなく」書いていたが、プレフィックスをつけることで、コミットメッセージに対する考え方が変わった。 そのおかげで開発効率が上がったので、その内容をシェア。 プレフィックスをつけるってどういうこと? 以下のようにコミットメッセージの先頭に、なんらかの文字をつけること。 feat: xxx という機能を追加 fix: yyy で発生するバグを修正 refactor: zzz の機能をリファクタ のように feat, fix, refactor などがプレフィックスです。 最近 OSS の Contribution Guide などでよく見かけます。 導入したプレフィックスルール Angular.js/DEVELOPERS.md Angular.js の開発者ガイドに書いてあるメッセージを参考にしました。 以前のコミットメッセージ(例 ちなみ

    【今日からできる】コミットメッセージに 「プレフィックス」 をつけるだけで、開発効率が上がった話 - Qiita
    t-wada
    t-wada 2018/01/24
    3年半くらいこのルールでコミットログを書いていて、とても自分にフィットしていると感じています。conventional-changelogでCHANGELOGを生成できるのも便利です。