TIM Labs

2011年5月アーカイブ

発端

モナドの正体が分かると、 次はモナドを実装してみたくなるものです。

前回は試しに Python でモナドを実装してみましたが、他の言語でも実装できないことはありません。 ただクロージャや部分適用が簡単に使えない言語では本質的でないところで苦労する羽目になるので、前回は Python を使いました。

という訳で今回は "エディター界のPHP" でお馴染みの Vim script でモナドを実装することにしましょう。

なお、今回作成した Vim script によるモナドの実装は GitHub で公開中です。

ちょっと足を伸ばして yokohama.pm で Sphinx と blockdiag の話をしてきました。

最近自分でも Sphinx + blockdiag の組み合わせで使い始めていて、
このスライドに書いたようなスピードを感じています。
実際に使うと Sphinx が魔法のツールと呼ばれている理由が分かりますよ!

発端

モナドの正体が分かると、 次はモナドを実装してみたくなるものです。

という訳で試しに Python でモナドを実装してみましょう。 別にどんな言語でも構わないのですが、 クロージャや部分適用が簡単に使えない言語では本質的でないところで苦労する羽目になるので、 今回は Python を使うことにしました。

なお、今回作成した Python によるモナドの実装は GitHub で公開中です。

あらすじ

あなたはとある業務用アプリケーションの開発・保守を任されています。 このアプリケーションはC#で記述されており、 とある企業におけるプロジェクト(Project)の管理を主目的としています。 プロジェクトには何名かの社員がアサインされており(AssignedStaffs)、 プロジェクト内には必ずマネージャーが1名存在します(ManagerStaffId)。 大まかなイメージとしては以下のようなコードになっています:

public class Staff
{
    public String Id {get; set;}
    public String Name {get; set;}
    ...
}

public class Project
{
    public ArrayList AssignedStaffs {get; set;}
    public String ManagerStaffId {get; set;}
    ...

    public Project()
    {
        this.AssignedStaffs = ...;
    }
}

さて、とある事情により、プロジェクトのマネージャーの名前を使う場面があちこちで出てきました。 現状の構成ではマネージャーの名前を得ることにも一苦労しそうです。 なのでマネージャーの名前を返す Project.GetManagerName を追加することにしましょう。

public String GetManagerName()
{
    // TODO: 実装する。
    return "";
}

これは簡単なタスクです。 せっかくなので、改修作業の一連の流れを把握してもらうための例題として、 このタスクは新しく開発チームに加わったメンバーに担当してもらうことにしました。

30分後 ──

このアーカイブについて

このページには、2011年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年4月です。

次のアーカイブは2011年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。