学習バンザイITエンジニアの精神安穏日記

ITエンジニアというより、IT系雑務者

Google Keepのデータをエクスポートしてobsidianに投入する

方法

これを使う。

github.com

動機

Google Keepをアイデアメモ帳として使っていたが、その他のメモが混在してきて、使いにくくなってきた。

Keepは今後もアイデアメモとして使っていくが、いずれ変えるかもしれない。

最近は雑記を書くのに、Obsideanを使っている。

イデア以外のデータは全てObsidianに投入し、スッキリさせたい。

keep内の全データのバックアップを取る方法

以下のサイトを参考にした。

https://takeout.google.com/?hl=ja

https://digitor.jp/textbook/google-keep-backup/digitor.jp

ヒアリング

Keepが使いにくい話

顧客はありがたいことに、おのずから喋ってくれる。

自分のヒアリングスキルがなくてもある程度、要望を聞き出すことができる。本当にありがたい。

  • 顧客「いやーいま、メモが800件くらいあってさ。今使ってるobsidianっていうmarkdownアプリに移行したいんだよね」
  • 俺「この間はgoogle Keep最強を謳ってたじゃんか。keep信者がどういう風の吹き回しだね」
  • 顧客「検索性能が悪いっていうか、視認性が低いっていうか。ほら、keepってタイルで並ぶだけで、リスト状に表示できないじゃん。最近それに使いにくさを覚えてきた」
  • 俺「確かに」
  • 顧客「で、obsidianはPCとスマホ間でデータ同期できるし、検索性もタグ付け性能もほぼ一緒なんだよね。そんでプラグインによる拡張性も高い。何よりmarkdown形式で書けるし、vimのコマンドも使える。僕はほぼほぼ上位互換とみなしても問題ないんじゃないかってくらい気に入ってるよ」
  • 俺「ひゃーすごいアプリ」

Keepに代わるアイデアメモ帳がほしい話

  • 顧客「今はkeepはほぼアイデアメモ帳として使ってるんだけど、それ以前の日記やらが混じってしまって、それらを取り除いていきたいと思ってるんだよね。
  • 顧客「そんで、アイデアメモ帳として使うとしても、最近は色々不便さを感じるんだよね」
  • 俺「ほほう」
  • 「僕の場合、昔思いついたアイデアを色々分類したいんだけど、それがしにくい。タグ昨日あるんだけど直感的じゃないっていうか。一覧で見れない分、アイデア同士を組み合わせるみたいのもしにくい。理想はあるアイデア同士を統合したり、拡張したりできるような機能かな。エクスポートも面倒だし、ランダムで一見取得みたいなのもできないし」
  • 俺「ほへーそりゃ不便かもな」
  • 顧客「確かにkeepは無料界隈で最強クラスだったと思うけど、よりすごいアプリが近年台頭し始めてきたんだよな。アイデアメモに関しては、obsidianは若干too muchなところはあるかもとは思ってるね」
  • 俺「というと?」
  • 顧客「なんか、機能が多すぎて、アイデアをどうこうするのに、直感的に操作しにくいとうところかな、例えばspreadsheetみたいなイメージで、ごちゃついていると言える。インターフェイスを拘束したんだよな。もっとシンプルでいい」
  • 俺「例えば?」
  • 「カテゴライズしたいと思うけど、カテゴリが増えすぎても面倒に思う」
  • 俺「それは大変そうな」

ヒアリングのときの文字起こしについて

  • 顧客「そうね。そんな感じでよろしく頼む。そういやこういう形式でヒアリングするときに、手入力してるみたいだけど、文字起こしアプリは使わないの?」
  • 俺「うす。それでもいいんだけど、文章にすると、微細な修正が効きやすかったり、逆に文字起こしだけだと、あとで整形する必要が出て、そのときには頭が働かない気がするからかな。リアルタイム性ってのやる気に直結しているんじゃないかと思ってる。しゃべってるのだだ残しだと、覚えようとしなくなっちゃって、大事なことを聞き逃してしまうような気がするんだよな。この会話形式の感じをもうちょい楽に入力できたら、表示できたらみたいな願望はあるかな」
  • 顧客「なるほどねぇ。まあその辺もおいおいかな」

Obsideanのメリットについて

  • 顧客「そういや、Obsidianのもう1個のメリットしては、localにmdファイルが保存されるという点だね。そんなかかで、暇なときに一番記事が長いものだとか、全部の文字の合計を数えるだとか、変な情報調べるのに便利だよな」
  • 俺「ほへぇ」
  • 顧客「引き続きそんな感じでよろしく頼むよ」
  • 俺「うす」

どういう形式のファイルを残すのか話

Keepのバックアップファイルを取得したあとの話。

  • 俺「さっきの話聞いて思ったんですけど、keepに保存してるようなデータって色々あるじゃないですか。TODOだとか、日記だとか、画像だったり。どういうタイプのを残したいですか?」
  • 顧客「あんまり考えてなかったな」
  • 俺「いや、どうやらhtml形式で出力されるみたいなんで、もしかしたら、直接obsidianに投入できる説も浮上してきまして」
  • 顧客「なるほど。archiveになっているものは、どうしよう、削除機能的につかっていた節あるからけしtもいいんだけど、なんか思い出って考えると残しておきたい気もする...。」
  • 俺「もし、画像や音声ファイルあったら、正直取り込みにくいかもです。」
  • 顧客「ほほう、あんまり考えてなかった」
  • 俺「そもそも、keepからobsidianに移す一番の目的は、顧客さんの過去の思考遍歴の検索性能を上げたいってところにあると思うんですね」
  • 顧客「そうそれ」
  • 俺「ってことは、画像だけあってもしかたないわけですし、音声もそのへんは然るべきファイルに先に移しましょうか」
  • 顧客「承知の助」

数分後

  • 顧客「画像については適当に処理しようと思うけど、音声データは日記みたいになってたから残しでお願いできるかな」
  • 俺「音声はObsidianで使えるかわからないので、確認しますね」
  • 「あるっぽいです」
  • 顧客「すごいね」
  • 俺「ところで、archiveはどうしましょうか?」
  • 顧客「archiveは、そうだねぇ。いらない気がするけど、あったらあったで嬉しいかもしれない」
  • 俺「TODOはどうですか?」
  • 顧客「んー。その2つは微妙なところだよねぇ。あったらあったでいいんだけど、いらん気もする」
  • 顧客「正直、あとで考えたいかなー」
  • 俺「わかりました。とりあえず、タグにしておいて、一括で検索可能にしておきますかね」
  • 顧客「ありがとう。よろしくぴょん」

やはり直接の対話をすると確かに余計な話も多いが、その人の人柄や癖、大事にしている点もなんとなくわかり、開発の勘所が冴える気がする。

本プロジェクトにおける成果物以外の狙い

  • 用件定義〜実装で、AI系のツールを試したい→cursorの試しをする
  • 後でgithubかどこかで公開することで、公開プロセスを思い出す
  • 見積もり手法を勉強しているので、学んだことを活用してみる 優先度低なのでなし
    • タスクをカウンタブルな形式に分割する 優先度低なのでなし

要求を整理する

keepからどういう形式に変換する。 keep以外からobsidianにいれることは考慮しないため、そのへんはふわっと程度考えるだけでよい。

今回は、AのooをBのxxとする的な形式で箇条書きにして書き、あとで整理する。

取り扱う対象についての調査

それぞれのファイルはほぼ1:1の対応関係となっている。

  • keepのファイル
    • タイトル
    • 複数のタグ
    • 作成日時
    • 本文
  • obisdianのファイル

    • タイトル
    • 作成日時
    • 本文
      • 複数のタグ
  • 複数のタグのみ、本文の中身に入ってくる。

  • また、作成日時は、propatyとして追加する。

各タイトルの詳細

作成日時

  • [ ] markdownファイルの更新日時と制作日時をkeepの制作日時にする。
    • 理由:obsidianでは、ファイル作成日時を日記作成日時としているため。
  • [ ] keepのタイトルはファイル名とする。タイトルがない場合は日付をYYYYMMDD_タグ名などとする。タグ名の先頭二つを連結させる。それもない時は、タイトルつける
  • [ ] ファイルの中身の先頭に---から始まるpropatyとしてcraeted_atを追加する。外部からimportしたファイルは、こうしておく決まりとなっている。(顧客のしきたり) せっかくなので、アップデート日も書いとく

タグ

  • タグはファイルの中身の先頭に示す。復数あれば一行に半角スペースを空けて、追加していく。

その他

  • 画像がファイルは場合は、保存しない
  • TODOがある場合は、TODO形式として表示する
  • リスト形式の場合は、リスト形式として表示する

技術面での考慮すること

  • [x] rubyで、ファイルの更新日時を上書き可能か。ひいてはファイルの更新日・作成日の仕様の確認をする
  • [x] html parserを使って、読み取っていけばよさそう。→htmlは余分な情報が多かったので、jsonをパースする

更新日の変更方法

touch -t 201804011200.00 new.txt
touch -t new.txt

開発方針

scriptだけど数年後に読みやすくするためにある程度classをつくって責務を明確にしておく。

外部ライブラリは面倒なので使わない。

本人のやる気はあまりないので、Cursorのプロ版を使う。

プロトタイピング

  • 最初: chatGPTに対して、keepで出力されたファイルを投げる。
  • 次: cursorに、要件に沿ったscriptを責務を明確にて、出力してもらう。