プリザンターのソースをダウンロードしてデバッグしてみた!

プリザンターはGitHubでソースが公開されているOSSプロダクトで、誰でもソースをダウンロードしてデバッグすることができます。
※実際の利用に当たってはライセンスによる制約を受けますので、リポジトリに含まれるライセンスをご確認ください。

ソースコードのダウンロードしデバッグ環境を整え、デバッグ実行アイコンをクリックするまではすんなりと進みます。しかし、そこでデバッグ実行するとエラーが発生してしまいました。

発生したエラー

このログインで要求されたデータベース "Implem.Pleasanter" を開けません。ログインに失敗しました。
ユーザー 'Implem.Pleasanter_User' はログインできませんでした。

データベースにログインできない、と言われています。当然と言えば当然ですよね。まだデータベースを作っていません。

データベースを準備する

SQLServer はインストール済みであるとします。
データベースの準備について公式のマニュアルを見てみましょう。
リンク:プリザンターのデータベースを手動で構成する(公式マニュアル)

どうやらImplem.CodeDefiner.exeという実行ファイルを使えばいいようです。ここで、ダウンロードしたソースのソリューションを見てみると含まれている11個のプロジェクトの中に、Implem.CodeDefinerというプロジェクトがあります!これですね!

このプロジェクトのエントリーポイントを確認してみると以下のようになっています。

static void Main(string[] args)
{
    var argList = args.Select(o => o.Trim());
    ValidateArgs(argList);
    var argHash = new TextData(argList.Skip(1).Join(string.Empty), '/', 1);
    var action = args[0];
    var path = argHash.Get("p");
    var target = argHash.Get("t");
    Initializer.Initialize(
        path,
        assemblyVersion: Assembly.GetExecutingAssembly().GetName().Version.ToString(),
        codeDefiner: true,
        setSaPassword: argHash.ContainsKey("s"),
        setRandomPassword: argHash.ContainsKey("r"));
    Performances.Record(MethodBase.GetCurrentMethod().Name);
    DeleteTemporaryFiles();
    switch (action)
    {
        case "_rds":
            ConfigureDatabase();
            break;
        case "rds":
            ConfigureDatabase();
            CreateDefinitionAccessorCode();
            CreateMvcCode(target);
            break;
        case "_def":
            CreateDefinitionAccessorCode();
            break;
        case "def":
            CreateDefinitionAccessorCode();
            CreateMvcCode(target);
            break;
        case "mvc":
            CreateMvcCode(target);
            break;
        case "css":
            CreateCssCode();
            break;
        case "backup":
            CreateSolutionBackup();
            break;
        default:
            WriteErrorToConsole(args);
            break;
    }
    Performances.Record(MethodBase.GetCurrentMethod().Name);
    Performances.PerformanceCollection.Save(Directories.Logs());
    Consoles.Write(
        DisplayAccessor.Displays.Get("CodeDefinerCompleted"),
        Consoles.Types.Success);
    WaitConsole(args);
}

ConfigureDatabase();というデータベース設定を行ってくれそうなメソッドがあるようです。そしてこのメソッドを実行するには、_rdsという引数を与えて実行すれば良いようです。
やってみましょう。

ソリューションエクスプローラーでImplem.CodeDefinerプロジェクトを右クリックしプロパティを選択します。
f:id:imageinformationsystem:20181218180925j:plain
デバッグタブで開始オプションのコマンドライン引数に_rdsと入力します。これで実行時に引数として_rdsが与えられます。
f:id:imageinformationsystem:20181218180944j:plain 実行するにはソリューションエクスプローラーからImplem.CodeDefinerプロジェクトを右クリックしデバッグの新しいインスタンスを開始を選択します。
f:id:imageinformationsystem:20181218180953j:plain コマンドプロンプトが開いてテーブル名らしい文字が流れて行きます。
f:id:imageinformationsystem:20181218181004j:plain コマンドプロンプトが閉じたら、Implem.Pleasanterプロジェクトを実行します。すると今度はログイン画面が開きました!
f:id:imageinformationsystem:20181218181017j:plain

初期設定のIDとパスワードでログインを試みます。

  • ログインID -> administrator
  • パスワード -> pleasanter

ログイン成功! パスワードのポップアップが開くので新しいパスワードを設定します。
f:id:imageinformationsystem:20181218181041j:plain
トップの画面が表示されました。 f:id:imageinformationsystem:20181218181051j:plain

これで自由にデバッグを行うことができます。誰でもデバッグやソースの変更ができる点がOSSであるプリザンターの特徴です。
是非機能の変更や追加に挑戦してみてください。

「+読者になる」のお願い

C#によるWebアプリ開発IISの得意とする領域です。今後もプリザンターへのページ追加の研究を進めて行くつもりです。関心のある方、よかったらブログ上部の「+読者になる」をクリックをお願いします!

最後に

IISはプリザンターのカスタマイズの経験が豊富です。 プリザンター導入に際してカスタマイズをご検討されている方は是非ご相談ください! またご不明点やご質問などございましたら弊社までお問い合わせください。