純規の暇人趣味ブログ

首を突っ込んで足を洗う

シンプルなタスク管理ソフト作った

      HimaJyun

タイトル通りです、作りました。

自分用に作った小物なので人によっては機能不足かも知れませんが、とりあえず紹介しておきます。

BusyDays

その名もBusyDays、BusyなDaysで忙しい日々。嫌な名前ですね。

所謂TODOリストです、というかTODOの管理しか出来ません。そういう風に作ったので。

シンプル

なんたってシンプルです。

忙しいからタスク管理ソフトを導入するのに、そのタスク管理ソフトの使い方が複雑で操作方法を調べるのに時間が掛かる、なんて嫌でしょう?

複雑だというのは、それだけ気が散りやすいって事です。はい。

(アカウントを作るところから始めないといけないなんて信じられない!メールアドレスを入力して……私はBotではありません、なに?標識が含まれるタイルを選べ?この若干かすってるのって含まれてる扱いなのか分かんねーよ……確認メールのURLをクリックして……パスワードは……秘密の質問を設定しましょう、「はじめての恋人の名前は?」居ねえよクソが!……なになに?「使い方を学ぶツアーを開始しましょう」だと?……Oh,Shiiiiiiiiiiiiiiiiiit!!)

(標識を若干かすってるタイルってのはこれの事、更に言うと一番左下のプレート左半分が入ったタイルって看板扱いなのか?)

直感的

直感的に操作出来ます、というか最小限の機能しか搭載していないので必然的にそうなります。

ボタンがあり、ボタンを押せば押した通りの機能が動く、それだけです。

出来る事

単純でシンプルなタスクの管理が出来ます。

「見ればわかる」で説明を終えたいくらいです、こんな感じ、見ればわかる。

とにかく「これをやる、これもやらなきゃ」とやる事をぶち込んで順番に処理していく使い方にベストです。

時間の概念はありません、やらなければならない事はどの道やらなければならないのです。

「〇時にアレやらなきゃ」「〇日はパーティーだ」なんて機能はないので、それはスマホのカレンダーでも使ってください。(私はそうしています)

使い方

  1. BusyDaysをダウンロード
  2. 起動する
  3. タスクを放り込む

インストールやアンインストールは必要ありません、レジストリも使用していません。

解凍して使う、要らなくなったらゴミ箱にシュートしてファイナルかめはめ波でぶっ飛ばせば良いです。

動作環境

.NET Framework 4.6.1以上が必要です。多分それ以外は必要ありません。

大抵の場合はWindows Updateとかで自動に入ってます。

もし、それっぽいエラーが出て起動しない場合は、Microsoftより「.NET Framework 4.6.1」をダウンロードしてインストールしてください。

コツ

覚えなくても使えますが覚えると少し操作が楽になる機能です。

1. 一部の操作はキーボードで出来ます。

Insertキーでタスク追加、Deleteキーでタスク削除は覚えておくと(多分)便利です。

2. 「現在のタスク」と「タスクリスト」はサイズ変更できます。

真ん中の老眼だと見えなさそうな薄い線にマウスを合わせてドラッグすると出来ます。

3. コピペ出来ます。

タスクリストのタスクはコピペ可能です、右クリックメニューかCtrl+C/Ctrl+Vが使えます。

クリップボードの1行目がタイトル、2行目以降が説明となります。

4. タスクを保存するファイルを指定する事が出来ます。

保存するファイルをドラッグアンドドロップでBusyDays.exeに放り込むとそれを開きます。

ショートカットを作成して「リンク先」で指定しても良いです。(例:「BusyDays.exe 欲しい物.tsv」)

例えば「やる事」と「買う物」を別のファイルで管理するとか便利だと思う。

とりあえずはCtrl+C/Ctrl+V/Insert/Deleteが出来れば十分だと思います。(他は私も使っていないので……)

技術的なの

ソースコードはGitHub(HimaJyun/BusyDays)で公開しています。

ライセンスはMITです、お好きにどうぞ。

TSVの処理

このセクションではうざいくらいのTSVの優位性語りが含まれます、あなたの母親がCSVの場合はブラウザバックを推奨しましょう。

まず最初に、今回のような用途では「タスク」がリストとしてあります、つまりC#的に言うと保存すべきデータがIEnumerableです。

IEnumerable的な物は(何らかのライブラリに依存せずに)シリアライズするのが案外面倒です、という訳でIEnumerableな物を容易く扱える方法が必要です。

そこで出て来るのが、1行1オブジェクトで扱えるCSV……なのですがカンマ区切りCSVはクソです。TSVの方が圧倒的に優れています。

(きっと、カンマ区切りCSVを考案した人のPCにはTabキーがなかったのでしょう)

TSVというのはカンマ(,)の代わりにタブ文字を区切り文字として採用したCSVの一種です。

カンマ区切りCSVでは、文章中にカンマが出てきた時の処理が面倒です。

例えば\,みたいにしてエスケープしたり、"で囲った所で「,」という文字がフィールド中に出て来る問題は解決できません。(\commaみたいにしますか?良い案だとは思えません、テキストエディタで開いたときに1,000,000が1\comma000\comma000になったものを見なければなりません)

つまり、言語標準のStringクラスについているSplitメソッドが使えないのです、これはクソです。

TSVであればその心配はありません、Splitしてそのままforeachに突っ込めます。

また、TSVであればテキストエディタで開いた際にある程度見やすく整って表示されるというメリットもあります。

次に、改行やタブ文字が出た場合の扱いですが、これはReadLine()でforeachしたかったので\tや\r\nに変換する事にしました、つまり\t、\r、\n、\\を使う。

\t、\r、\n、\\をきちんと変換/復元出来るだけでTSVが扱えるようになります、CSVみたいなゴミに比べたらマシです。

それとは別に、C#のStringConverterがnullを空文字にしてしまうので、文字全体を""で囲むことにしました(""なら空文字、何もなければnull)、数値なら1、文字なら"1"、nullなら(なにもなし)、人が読んでも分かりやすい。

手間は殆ど変わりません、先頭に"を付けたり消したりするだけ。

だいぶTSVの優位性をぶっ壊してしまった気がしますが、それいてなお手間はCSVをキチンと処理する場合と同じか、それよりも簡単です。

ある程度整って見えるというメリットがあるので、総合的に見てTSVの方が優秀なのは明白でしょうね。

という訳で、使い回せるようにTsvSerializerを作成しました。プログラム本体はMITですが、このソースコードはzlibライセンスなので自由に使えます。

太らせるなりダイエットさせるなり勝手にどうぞ。

WPF使ってみた

WinFormはMicrosoftに殺されそうなのでWPFを使ってみました。

UWPはストアに登録しなきゃならないので却下、ストアに登録すると「機能が少ない、☆1」とか言い出すバカが湧きそう+好きな時にリリース出来ない+そもそも自分用ツールに星を付けられるのが嫌なので。(サイドローディング?邪道すぎる、デスクトップOSにUWPみたいなストアが搭載される意味って?最近のMSは迷走しすぎでは?)

バインディングは便利ですけど、MVVMのお作法はクソだと思います。

人脈がないのでXamarinが辛かったです。

 - コンピューター