技術系

自作アプリ開発に至った経緯を公開!日々の問題をプログラムで解決する

どうも。ひろです。

皆さんは自分が日常で不便に感じていることをプログラム(アプリ)などで解決するようにしていますか?

私はslackにメモの投稿をすることに少し不便さを感じていました。

その問題を解決するために2週間前ほどにslackに自動投稿ができるアプリをリリースしました。

今回のアプリ開発の流れとしては以下のようになります。

  1. 問題提起
  2. 必須機能一覧作成
  3. どの言語で実現するか検討
  4. APIの使い方を学ぶ
  5. ライブラリの選定
  6. 機能実装
  7. リリース
  8. 機能追加

今回のアプリ開発に至った過程をご紹介します。

私の作業環境

私が作業するときに常駐で起動しているアプリを4つに紹介します。

  • Trello

タスク管理アプリです。こちらでブログのネタの管理であったりアプリ制作のタスク管理をしています。

作業開始前にどんなタスクが残っているのか、新たにタスクを起こす必要がないか見るために常に起動させているアプリです。

Trelloについては以下の記事で紹介していますのでよろしければお読みください。

Trelloでタスク管理することで得られること【進捗管理とタスク管理が楽になる!

  • slack

技術の共有や進捗報告、困っていることの共有などをコミュニティ内で発信できるように常にアプリを起動しています。

また個人(一人だけの)slackもあるのですがそこにはメモであったり情報を一括で収集できるようにしています。

Slackの運用方法については以下の記事を読んでみてください。

個人用Slack運用のススメ!毎日見ているサイトをSlackで一括管理して時間効率を上げる

  • LINE

スマホに入れているLINEと同じアカウントを使用しています。

基本的に移動の時以外でPCを開いている時はPCで返信することが多いです。

理由としては単純にスマホで入力するよりPCで入力したほうが早く入力できるからです。

通知はスマホだけにくるようにしていてPCにはこないようにしています。これはPCに通知が来てしまうと作業の妨げになってしまうからです。

できるだけ作業に集中したいので通知は切っていて休憩の時に返信するような使い方をしています。

  • Safari

すぐに調べ物ができるようにSafariは基本的に起動して新規タブでGoogleを開いています。

アプリ開発の時などは使用するライブラリのドキュメントを必ず開いているようにしています。

そのほかには実際に使っている人の記事を何個かタブで開いていたりします。

Google Chromを使わない理由は電池の消耗が早いので基本的にしません。

投稿することに不便を感じる

テキストファイルでメモを取りたい時などいちいちslackでテキストファイルとして投稿されるようにコードブロック機能を使って投稿したりしていました。

VScodeなどでとったメモなどを共有する時はそのファイルをいちいちドラッグ&ドロップしなければいけないことがめんどくさく感じていました。

この問題を少しでも解決しようと思い考えたのが今回作成したslack自動投稿アプリになります。

概要としては投稿したいチャンネルを指定し、拡張子とタイトルを選択肢本文を記載して投稿ボタンを押下すると指定されたチャンネルに投稿されるようなアプリです。

需要があるかどうかは別として今回APIを使うことができる点と、生産性のマイナスにはならないだろうと思い作成しました。

APIを使って投稿する

今までAPIを使ってアプリを作るということはやってきませんでした。

そもそもAPIという存在を知らずにどうやって自動化しているんだろうと疑問に思っていました。

ですが最近アプリが提供しているAPIを使用するとそのアプリに投稿できたり情報を取得して活用できたりするということを知って今回SlackのAPIを使って指定したチャンネルに投稿できるような仕組みを作りました。

PythonでGUIアプリ制作

今回CUIではなく、GUIでアプリを作りたいという思いがありました。

理由としては今まで作ってきたアプリは全てCUIで作ってきていた為、PCを使い慣れていない人からすると使いづらさがあったと思ったからです。

GUIで作ることでネイティブアプリとしてリリースもできると思ったので今回はGUIで制作しようと思いました。

今回使ったライブラリはTkinterを使いました。

学生時代一度使おうと思ってインストールしましたがうまく動作せずエラーが出てしまっていて挫折してしまいライブラリを使うのをやめてしまいました。

ですが、今回ある程度プログラムの知識もついてきてエラーコードしっかり解析したら導入できるのではないかと思い今回導入しました。

結果的にAnacondaでインストールしたらうまく動作したのでスムーズに開発環境を整えることができました。

ちなみにAnacondaでライブラリをインストールするコマンドは、

conda install xxxx

でインストールできます。

ライブラリの導入で困っている方でAnacondaでpython導入している方は一度試してみてください。

テキストファイルだけではなくソースファイルの投稿も可能に

最初はテキストファイルのメモ投稿のみを考えていました。

ですがソースコードの投稿もできるようにした方がとりあえずネットで見つけた記事をメモ程度に残すけどソースファイルとして投稿しておきたいなどある場合もあるだろうなと思い、拡張子を選択できる機能をつけました。

とりあえずソースコードを貼り付けて実行はあとでやるという時に備えて機能を追加したことによって今は活用できています。

この機能はver1.0をリリースした後に実装した機能になるので最近実装しました。

このように開発当初(機能設定)の段階ではなかった機能を追加するということはよくあると思うの気にせず必要最低限の機能を備えてリリースしてしまった方が、ユーザーの意見を取り入れることができるので素早いリリースが肝になります。

まとめ

運用するかどうかはおいておき、作ることに意味があったと思います。

PythonのGUIライブラリのTkinterの使い方を学ぶことができましたし、APIも実際に使ってSlackに投稿できることが確認できたのでこれから応用できる可能性も出てきました。

まだバージョンを上げて機能追加していきますが今の私は技術を身につけたいのでたくさんのアプリをリリースしていきます。

月1で新しいアプリが製作できることを目標に頑張っていきます。

次回以降製作過程について実装を含めて詳しく説明していきます。

ここまで読んでくださりありがとうございました。

合わせて読みたい記事

  • 技術系

アプリ開発の手順【駆け出しエンジニア必見!オリジナルアプリの作成方法を公開します】

【コードレビューは早めに!】コードレビューをすることで得られるもの

インスタンスについて実装例を用いて解説【Python】

【ソフトウェア開発】ソフトウェア開発の2つの手法ご紹介

プログラミングにおける設計の重要度

プログラミングの際に設計することで得られるメリット

プログラミングの設計手順を大公開!

インターフェースとは? C

  • 日常ノウハウ

Trelloでタスク管理することで得られること【進捗管理とタスク管理が楽になる!】

【完璧を目指すあなたへ】とりあえず7割を目指して物づくりをしよう!

衝動的に買い物してしまう人必見!衝動買いを抑えるコツを教えます。

アイディア出しに超おすすめ!マインドマップを活用して創造を膨らませよう!【マインドマップとは?】

目標と目的の違いを理解して自分を成長させる方法【実現できる目標の立て方】

あなたが思う価値とはなんですか?情報社会の今、価値のあるものはあなたのノウハウです!

-技術系
-, , , , , , , , ,

Copyright© 日常で感じたことブログ , 2020 All Rights Reserved Powered by AFFINGER5.