本ポートフォリオでは自作の作品について紹介させていただきます。
今回紹介させていただく作品は以下の作品です。
- listManager
TwitterAPIと連携した画像ビューワとリスト管理機能により、好みのユーザ(主にイラストレータ)を手軽に探すことのできるWindowsアプリケーション
言語:Python3.6 フレームワーク:なし 主なライブラリ:tkinter,pillow,sqlite
本作品は個人製作です。設計から開発まで全て自分で行い、テストはサークルの友人に協力してもらいました。
本作品は友人からコミックマーケットというイベントの準備として、Twitterで絵師さんをまとめたリストを作ったのだが肥大化してしまい困っている。という相談を受けて製作しました。
製作期間は2017年春頃から2017年夏前です。友人に提供したところスムーズに絵師さんをチェックできてうれしいとの声をいただきました。
本作品は以下の機能を備えています。
- Twitterへのログイン
- 他ユーザの投稿画像の閲覧
- 他ユーザのフォロー及びリストへの追加/削除
本作品の使い方は非常にシンプルです。
- まずはアプリを起動するとWebでTwitterへのログインを促されるのでログインしPINコードをアプリへ入力
- 左のユーザタブでリストのユーザを選択
- 真ん中のイラストタブで画像の傾向をチェック
- 右のマネージタブで分類分け
TwitterのWebクライアントだと画像を見るためには数回のページ遷移と画像を閲覧するためのスクロールが必要ですが、本製品では2クリック程でその作業を終えることができます。
本作品を製作するにあたって一番苦労した点は起動時間の改善です。
本作品はPythonの勉強を兼ねて製作したのですが、Pythonは動作が遅いことで有名です。
なんと、改善前のアプリは起動に3分もかかっていました。驚きの遅さです。
その起動時間をリファクタリングとテストを繰り替えし5秒ほどまで縮めることに成功しました。(180秒→5秒,36倍の高速化)
起動の高速化にもっとも貢献したことはfor文の内包表記でした。記法の違い一つで起動時間が数秒減っていたので驚きの連続でした。
高速化を兼ねて行ったリファクタリングでは、リーダブルコードという著名な書籍を参考にして動作の改善と可読性の向上に努めました。
作りっぱなしにするのではなく、自分にも他人にも優しいプログラムを作ることの重要性を学ぶことができました。
私のGitHubアカウントのlistManagerというリポジトリ(新規タブで開いてください)で公開しています。
listManager.pyがメインモジュールになっています。socks.pyは導入モジュールの影響で追加していますが自作のプログラムではありません。