Ruby/Rubyの基礎知識

minitestを使ったコードのテスト方法とTDD(テスト駆動開発)(4ページ目)

前回のRSpecに続き、minitestを使ったコードのテスト方法を解説します。また、TDD(テスト駆動開発)という開発手法を簡単に紹介します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

フィボナッチ数計算の効率化

さて、前ページで作成した再帰的なfibonacciメソッドは効率が悪く、40番目のフィボナッチ数を求めるだけで筆者の環境では約20秒かかってしまいます(計算結果をメモ化することで多少速くなりますが)。そこで、ループで回して先端値を更新していき、nに達したら止めるロジックに変更します。

テストを書いていると、安心して実装をごっそりリファクタリングすることができます。

こうすれば必要な回数分だけloopを回してcurrent(とprev)を更新していくだけで済むので、使用するメモリが爆発することもありません。テストが通ることを確認します。

無事通過しました。n = 40まで含まれるテストケースがわずか0.001秒で終了しており、速度が改善されたことがわかります。このアルゴリズムなら、n = 100000 程度までなら1秒以内に結果が返ってきます。

以上

以上で今回の記事は終わりです。最後にTDDを紹介しましたが、テストコードによって正しいことが保証されながらプログラムが組み上がって行く様子を見るのは、なかなか爽快です。

前回のRSpec記事、今回のminitest記事でテストの概念に触れた初学者で「テストするようなコード書いてないし…」という人は、ちょっとしたプログラムをTDDで作ってみると新しい発見があるかもしれません。

【編集部おすすめの購入サイト】
Amazonで Ruby 関連の書籍をチェック!楽天市場で Ruby 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます