[ruby-list:50286] NeuronCheck 0.1.0 リリース

From: Dice <tetradice@...>
Date: 2016-03-13 12:30:21 UTC
List: ruby-list #50286
Diceです。

新しいRubyライブラリ NeuronCheck をリリースしました。



■ドキュメント

http://ruby.morphball.net/neuroncheck/doc/



■概要

NeuronCheckは、下記の2つの機能を、宣言的な文法で実現するRubyライブラリです。

 1. メソッドの引数や戻り値のチェック
 2. メソッド実行前後の簡単な条件チェック(事前条件、事後条件)

簡単な記述でさまざまな種類のチェックが行えることと
プロダクション環境のパフォーマンスに、ほとんど悪影響を与えずに
導入できることの2つが大きな特徴です。

また、メソッドの実行時にチェックを行う以外にも
他ライブラリに組み込む形で、チェック機能を単体で使用することもできます。

NeuronCheckは、EiffelやD言語の契約プログラミングの考え方、およびRubype gemに
インスパイアされて作られており
「実行可能なドキュメントの形で、型情報や事前条件などを記述し、その記述に応じた
チェックを行えるようにする」ことを目指しています。



■サンプルコード

  require 'neuroncheck'

  class Converter
    # Converterクラス内でNeuronCheckを使用可能にする
    extend NeuronCheck

    # NeuronCheckのチェック宣言部
    ndecl {
      # メソッドに3つの引数があり、順に
      # 「文字列」「eachメソッドを持つ任意のオブジェクト」「数値 or nil」
      # であることをチェック
      args String, respondable(:each), [Numeric, nil]

      # selfを返すメソッドであることをチェック
      returns :self

      # 事前条件のチェック。
      # メソッドの呼び出し時に、引数 threshold が0以上 (非負数) でなければ
      # エラーを発生させる
      precond do
        assert{ threshold >= 0 }
      end
    }

    # 実際のメソッド定義。呼び出し時に上で宣言したチェックが行われる
    def convert(text, keywords, threshold = nil)
      # (メイン処理)
    end
  end

  conv = Converter.new
  conv.convert('text', ['Blog', 'Learning'], 0.5)
  # => エラーにならず、正常に実行できる

  conv.convert(100, ['Blog', 'Learning'], 0.5)

  # => 下記の例外が発生する
  #    script.rb:34:in `<main>': 1st argument `text' of
`Converter#convert' must be String, but was 100 (NeuronCheckError)
  #             got: 100
  #       signature: Converter#convert(text:String,
keywords:respondable(:each), threshold:[Numeric, nil]) -> self
  #     declared at: script.rb:11:in `block in <class:Converter>'




■必要環境

Ruby 2.0.0以降が必要です。

また、一部機能(NeuronCheckSyntax)ではRefinementを使用しているため
その機能を使いたい場合には、Ruby 2.1.0以降が必要になります。



■インストール

コマンドライン端末から、下記のコマンドを打ち込むことでインストールが可能です。

% gem install neuroncheck



■その他

- NeuronCheckはまだ生まれたばかりのライブラリです。
  記法や実装について、ご意見やご指摘、もしくは
  「こうしたほうがより良いライブラリになるのではないか」
  といったご提案がありましたら、ぜひメールやWebサイトへのコメント等で
 ご連絡をお願いいたします。

- ソースコードはgithubで公開しております。
  https://github.com/tetradice/neuroncheck




それでは、失礼します。



--
Dice
tetradice@gmail.com
twitter: @tetradice_ruby

In This Thread

Prev Next