B-Teck!

お仕事からゲームまで幅広く

【Java/Kotlin】resourcesディレクトリにあるファイルを読む

ルートからの絶対パスで指定したリソースファイルを取得するスニペット。
IOExceptionはそのまま外に投げているので必要があればcatchしてリカバリーまで書くこと。

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;

public class JavaResource {
    public String javaResourceAccess(String fileName) throws IOException {
        final InputStream someStream = this.getClass().getClassLoader().getResourceAsStream(fileName);
        if (someStream == null) return null;

        try (BufferedReader br = new BufferedReader(new InputStreamReader(someStream, StandardCharsets.UTF_8))) {
            // Kotlin版のBufferedReader.readText()がsuffixに"\n"が付与されているため、合わせてつけている
            // 通常利用の場合は `Collectors.joining("\n")` でもよい
            return br.lines().collect(Collectors.joining("\n", "", "\n"));
        }
    }
}

Kotlin

class KotlinResource {
    @Throws(IOException::class)
    fun kotlinResourceAccess(fileName : String) = this.javaClass
        .classLoader
        .getResourceAsStream(fileName)
        ?.bufferedReader()
        ?.use { it.readText() }
}

【タスク管理】Todoist、Kanbanist、(+Toggl)を利用して快適にタスク管理をする

※Todoistの有料プランで利用できる機能を前提とした記事です。

私は基本的に日常のタスクをTodoistで管理しています。
f:id:beatdjam:20200530182159p:plain:w300

Todoistは一覧性の高さがある一方で、タスクの状態管理が難しいという問題がありました。
とはいえ、Trello等複数のツールを並行利用するのは、気が進みません。

調べてみたところ、Todoistのタスクをカンバン形式にできるツールを発見しました。
それがKanbanistです。 このツールを一ヶ月ほど運用してみたところ、使い勝手が良かったので紹介しようというのが本記事です。

Kanbanistでできること

タスクの表示

Kanbanistは、Todoistのタスクを直接カンバン上に表示できます。

↓は冒頭のタスクをKanbanistに表示させたものです
f:id:beatdjam:20200530183521p:plain:w300

レーンの作成

Kanbanistにおけるレーンは、Todoistのラベル機能(有料機能)を利用したものです。
これが冒頭でTodoistの有料プランで利用できる機能と書いたものです。

このように、タスクに紐づくラベルを付与すると、Kanbanistに対応するレーンが作成されます。 f:id:beatdjam:20200530184205p:plain   f:id:beatdjam:20200530184237p:plain:w300

表示するラベルも絞り込みができるので、普段からタスク管理にラベルを利用していても安心して利用できます。
f:id:beatdjam:20200530184709p:plain:w150

タスクのフィルタリング

Kanbanistは、タスクを様々な形でフィルタリングして表示することができます。
f:id:beatdjam:20200530185351p:plain

左から

  • 先述したリスト(ラベル)の絞り込み
  • Todoistのプロジェクト単位での絞り込み
  • TodoistのPriorityでの絞り込み
  • 日付での絞り込み
    f:id:beatdjam:20200530185609p:plain:w150
  • 自分にアサインされたタスクの絞り込み

となっています

タスクの登録

[タスク名] [#Project] [date] を入力することで、新しいタスクをKanbanist上からも登録できます。
補完等が出ないので、私はあまり使いませんが…
f:id:beatdjam:20200530190003p:plain
f:id:beatdjam:20200530190028p:plain:w200   f:id:beatdjam:20200530190132p:plain

Kanbanistの利用方法

Todoistと Kanbanistの連携

Todoistの[設定画面-連携機能]から、 連携用のAPIトークンを取得します。
f:id:beatdjam:20200530190708p:plain:w300

Kanbanistを開いて、連携用トークン入力画面を開きます
f:id:beatdjam:20200530191019p:plain:w300

先程取得したトークンを入力してLoginすれば利用開始できます。
f:id:beatdjam:20200530191043p:plain:w300

KanbanistとTogglの連携

KanbanistはTogglのChrome拡張機能に対応しています。
連携することで、TogglのタイムトラッキングをKanbanist上から開始できて便利です。

Tooglの拡張機能の[設定画面-Integrations]で、Kanbanist上でのToggl Buttonを利用可能にします。
f:id:beatdjam:20200530191337p:plain:w300

このようにKanbanist上のタスクにToggl Buttonのアイコンが表示され、トラッキングが開始できます。
f:id:beatdjam:20200530191644p:plain   f:id:beatdjam:20200530191652p:plain:w300

おわりに

KanbanistはOSSとして開発されています。気になる挙動や追加して欲しい機能があればIssue立てたりしてもいいかもしれないです。
GitHub - mwakerman/kanbanist: The missing kanban board for Todoist

私の運用では、予定入力や一週間、一ヶ月などのタスクの確認・整理を行うときはTodoistを、当日のタスク管理はすべてKanbanistを利用する形で棲み分けをするといい感じでした。
非常に便利なツールですので、利用できる方はぜひ触ってみてください。

【雑記】30歳になりました。

前置き

去年の誕生日の記事(【雑記】29歳になりました。 - B-Teck!) を踏襲して適当に書こうと思います。

30代に突入しました。 この文章を書いているのはまだ前日なのでタイトルはある意味嘘なんですが。
ひとまずのところ30代を無事に迎えることができていそうです。

近況報告

昨年度末に大きなプロジェクトを終わらせてから、どこか消化不良な感覚を持ったまま暮らしています。
何がいいとか悪いとかではなく、仕事があまり楽しめていない…
かなり面白いことやらせてもらってたんで、その反動かなとも思います。
楽しい仕事ばっかりやってられるわけじゃないので、慣れないといけないんですけどね。

ここしばらくは急に別PJの大きめのリプレースを私一人に渡されてしまって、全然終わらないし、
ドメインエキスパートとの情報のやり取りに壁があるしでだいぶしんどい思いをしていました。
というか今もまだちょっと諸々やっていますが…。
【雑記】前に進むしかないという話 - B-Teck!
【雑記】だめでした - B-Teck!

社会人になって以来一番進め方が難しく、また結果もうまく行ってないなと思う案件で、どうしたらよかったのかと考えていたんですけど、この記事を読んで弱音を吐けなかったのが一番良くなかったのかな、なんて思い始めました。 note.com

実はこれまで、どうにか終わるだろうみたいなレベルのものしか渡されてこなかったんですよね。
でも、どう見ても終わらなそうなタスクについては、適切に弱音を吐いて、どうならやれそうかって進めていかないと、終わるか死ぬかの二択になっちゃうんだなって学びました。
今回については家族に多大なる負担をかけている状態でやっていたので、案件から離れたら誠意を込めてお返しをしていきたいと思ってます。

あ、あと、昨年ついにブログのPVが累計50万を超えたんですが、秋のGoogleアルゴリズムアップデートで大きく順位を落とし、月間PVも1万前後とかなり下がっちゃいました。
まぁほぼ趣味でやっているんですが、せっかくなら多くの人に読んでもらえるようにしていきたいので、またコツコツやっていきます。

20代振り返り

20代を振り返ると、なんだかんだで色々あったんですよね。

* 死ぬほど怠惰に過ごした学生時代  
* 就活をサボってたせいで滑り込みで入社したブラックなSES  
    * そこで経験した様々な炎上
* 母親の死
* 結婚
* 仕事の中で技術に興味を持ち、より技術を深めるために転職
    * 現職でも様々な炎上は経験していますが…

結婚の話はなんか気恥ずかしくてブログに書いてなかったんですけど、それ以外の人生の転機は意外とちゃんとブログに書いててびっくりしました。

せっかくなので書いておくと、妻は自分が無茶言ってもなんだかんだ受け入れてくれて、好きにやらせてくれて、待っていてくれる感じの人で、こう相性合う人がいてよかったなぁって思ってます。

これから

20代、振り返ると実は技術的にも人間的にも大きく成長できているんだなぁって感じでした。
もちろんまだ未熟なところは多々あるものの、年齢を壁に学ぶのを止めたりせず、これからもガンガンやって吸収していきたいです。
昨年と同じ結びではありますが、この記事を見て頂いてる方々と結ばせていただいたご縁と共に、また一年頑張っていこうと思っています。
引き続きいろいろご迷惑をおかけすると思いますが、仲良くしてくださいね。