今回はデータの構造を考えていきたいと思います
Pythonista3でメモ帳アプリを開発する①
Pythonista3でメモ帳アプリを開発する②
Pythonista3でメモ帳アプリを開発する③
Pythonista3でメモ帳アプリを開発する④
必要なデータ
このメモ帳アプリで実現したい機能は以下の通りでした
- タイトルフィルタ
- メモ本文フィルタ
- タグフィルタ
- 日付フィルタ(作成日、更新日)
これより、1つのメモに紐づけて、タイトル・本文・タグ・作成日・更新日を保存する必要があります
これを実現するためには、辞書型のデータを作って一つのメモデータを作り、リストに格納していくことで複数のメモデータを持つことができます。
この辞書型データはPythonista3 Ver3.4へのUpdateで使えるようになった、Pandasを使用することで、フィルタリング・ファイルへの読み書き等、容易に操作できるようになるため、Pandasを使用して実装していきます。
Pandasの使用例
Pandasを使ったフィルタの例を以下に挙げます
df[df['title'].str.constains('python') # titleにpythonを含むメモを抽出
df[df['date'] > dt.datetime(2020,1,1)] # dateが2020年1月1日より多きいメモを抽出
このような書き方で、ある文字列を含むメモを抽出したり、日付の期間指定をすることができるライブラリが準備されているので非常に便利です。
メモをDataFrameに変換しcsvであるに落とす
最後に、「Pythonista3でメモ帳アプリを開発する②」で作ったメモ編集画面で後で作成としていた「保存の機能」を作りたいと思います。
import pandas as pd
# 保存ボタンが押されたときのアクション
def save_button_tapped(sender):
col = ['title', 'text', 'tag']
w_data = [[title_label.text,text_view.text,tag_input.text]]
df = pd.DataFrame(data=w_data, columns=col)
df.to_csv('memo.csv')
console.alert('保存が完了しました。','','OK', hide_cancel_button=True)
まとめ
作瀬下メモを保存する形式からcsvで保存するところまでできました。
残りは、複数メモを保存、メモのリストを表示、フィルタ機能の追加をしていくことで目標としていたメモ帳アプリができそうです。次回はこれまで作ってきた画面を連結させて上記機能を追加していきたいと思います。