分12(1)はこちら,(2)はこちらから。前節までで,Perlで動的な型制約を導入する方法の基本は紹介し終えました。本節では,動的な型制約をアプリケーションで応用した例を紹介します。アプリケーションの仕様を型として定義するアプリケーションには,満たすべき仕様があります。ユーザー名は3文字以上100文字以内である必要がある,ブログの状態は公開か非公開のどちらかであるなどです。Webアプリケーションとしてユーザーから入力を受け付けるときも,開発者がコマンドラインを使いデータを入れるときも,どんなときでも仕様を満たさない不整合なデータを作りたくありません。そのためには,たとえばデータベースレベルで制限をかけるなど,さまざまな方法が考えられます。簡単な仕様なら,これまで紹介した動的な型制約を利用して実現できます。リスト3は,ブログアプリケーションの仕様を型として定義し,制約をかけることでチェックしている例です。(1)でブログのタイトルは3文字以上100文字以内という仕様を型として定義しています。(2)はブログの状態は公開を表すpublicか非公開を表すprivateのどちらかであると定義しています。(3)はブログデータを更新するメソッドで,定義したBlog::TitleやBlog::Statusを利用して引数に制約をかけています。これで,update_blogに変なデータを渡したとしても,仕様を満たさないデータが作られることはありません。┛この例のように,定義した型とSmart::Argsを使ってロジックの関数の引数に型制約をかけておけば,単純な仕様であれば引数を間違えて不整合なデータを作ってしまうことを防げます。ユーザーの入力を受け付ける場合,そのまま関数に渡すとユーザーにとって意味のないSmart::Argsのエラーが表示されるため,ユーザーを混乱させてしまいます。そのため使いやすさの観点からは,関数に渡す前にユーザーの入力が正しいかどうかをチェックし,誤っていた場合は適切なフィードバックを返すということを別に行う必要があります。型制約でユーザーの入力を制限する先ほど,使いやすさの観点からは,関数に渡す前にユーザーの入力が正しいかどうかをチェックし,誤っていた場合は適切なフィードバックを返すということを別に行う必要があると説明しました。返すべきフィードバックが単純なものであれば,型制約を用いてチェックする方法もあります。ユーザーから受け取った入力が型制約を満たすかをチェックし,満たさない場合にフィードバックを返すという方法です。型制約を満たすかどうかを真偽値で取得できれば,このようなチェックを行えるはずです。この方法を実現するには,Mouse::Util::TypeConstraintsを利用します。Mouse::Util::TypeConstraintsにはfind_type_constraintという型を取得するユーティリティがあり,これを用いると型のオブジェクトを取得できます。そのオブジェクトからcheckメソッドを呼ぶと,型制約を満たすかを真偽値で返してくれます。次のコードは,前項で定義したBlog::Title型とfind_type_constraintを利用して,ユーザーの入力をチェックする例です。ユーザーにエラーメッセージを返す}(1)のように呼び出せば,$inputがBlog::Title型を満たすなら真が,満たさないなら偽が$is_validに代入されます。偽の場合にユーザーにフィードバックを返せば,最低限のユーザー入力のチェックを行えます。著者プロフィール柴崎優季(しばざきゆうき)1989年福井県生まれ。Webアプリケーションエンジニアとして,はてなブログなどのWebサービスの開発に携わってきた。そこにはヒットメーカーの極意があった噂の超高速分析データベースを試してみよう~ログ解析,機械学習なんでもござれ~ワールドワイドで3,500社以上が活用しているビッグデータ高速分析用のデータベース「Vertica」。クエリ性能を簡単に数百倍にする術をご紹介します。「JIRA」をはじめとするアトラシアンのツール群。多くのオープンソースソフトウェアを継続して提供する支えとなっている使い易さを探ってみます。Cloud」が,いよいよ日本でのサービスを本格的に開始します。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。