LoginSignup
0
1

More than 5 years have passed since last update.

「ipython notebook」を使って簡単にタスク管理してみる。

Last updated at Posted at 2016-07-26

ipython notebook便利と思っていたんですが、
これで、そのままタスク管理も出来たらいいなと思って試しに作ってみました。
かなり簡単に作ったというのもありますが、サクッと出来てしまいます。

前提として、ipython notebookはもちろんですが
pandasもインストールが必要になります。
(説明は省略します・・・)

それでは、早速ですが
ipython notebookの3つのセルに下記を入力していきます。

import pandas
from IPython.display import Javascript
from IPython.display import HTML
title_name = 'Tasks'
file_name = 'tasks.csv'
css_name = '//cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css'
js_name = '//cdn.datatables.net/1.10.12/js/jquery.dataTables.min'
def read_task():
  if os.path.exists(file_name):
    return pandas.DataFrame.from_csv(file_name)
  else:
    return pandas.DataFrame()

def save_task(data):
  pandas.DataFrame(data).to_csv(file_name)

def add_task(name, content):
  data = read_task()
  df = pandas.DataFrame([{'name':name,'content':content,'status':'new'}], columns = ['name','content','status'])
  data = data.append(df, ignore_index=True)
  save_task(data)

def show_task():
  data = read_task()
  js = '''
    <link rel='stylesheet' type='text/css' href='%s'>
    <script>
      require.config({
        paths: {
          dataTables: '%s'
        }
     });
      require(['dataTables'], function(){
        $('.dataframe').DataTable();
      });
    </script>
  '''%(css_name, js_name)
  return HTML('<h2>%s</h2>'%(title_name) + data.to_html() + js)

def update_task(id, **kwargs):
  data = read_task()
  if kwargs.get('name'):
    data['name'][id] = kwargs.get('name')
  if kwargs.get('content'):
    data['content'][id] = kwargs.get('content')
  if kwargs.get('status'):
    data['status'][id] = kwargs.get('status')
  save_task(data)

def delete_task(id):
  data = read_task()
  data = data.drop(id)
  save_task(data)

そして4つ目のセルに下記を入力して、実行(Shift + Enter)してみましょう。

show_task()

20160724174344 (1).png

まだ、何のタスクもありませんが
もうタスク管理っぽいものが出来ていますね。
5つ目のセルで、タスクを追加してみましょう。

add_task('最初のタスク','githubに、repositoryを準備する')

これを実行(Shift + Enter)した後で、
また4つ目のセルに戻って実行(Shift + Enter)します。

20160724174346.png

タスクが追加されました。
taskwarriorっぽい雰囲気ですね。https://taskwarrior.org/
これを繰り返していくと、タスクがどんどん追加されます。

20160724174347.png

ステータスの更新については、下記の感じです。

update_task(0, status='done')

1つ目の引数はIDです。

update_task(1, name='次のタスク【優先】', content='pythonで、コードを書く。')

こうすると名前と内容が更新出来ます。

20160724174348.png

そして削除は下記の感じです。

delete_task(1)

20160724174349.png

削除したIDは欠番になります。
(ただし、add_taskするとリセットされます。)

20160724174350.png

という訳で、PyPIに登録してみました。

pip install tasks-for-notebook

これでインストール出来ます。
使い方は下記の感じです。

from tasks_for_notebook import *
show_task()

ごちゃごちゃしたものが無くなって、すっきりします。

20160724174351.png

もうちょっと機能追加してみたいと思います。
こちらも宜しくお願いします。

https://pypi.python.org/pypi?%3Aaction=pkg_edit&name=tasks-for-notebook
https://github.com/llby/tasks-for-notebook

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1