こんにちは、ナナです!
早速ですが、この記事を読んでいる方なら一度は「せっかくプログラミングを勉強しているし、今の仕事に活かしてみたい!」「プログラミングで業務効率化してみたい!」と考えたことがあると思います。
そして、やる気があるときはそのまま手を動かしてコードを書き始めたこともあるのではないでしょうか??
でも、そのまま進めようとしても「いったいどういうものを作れば便利なものが作れるんだろう?」とか、「自分でプログラミングするといっても、まずは何から始めればいいんだろう・・・」ってつまずいてしまうと思います。
慣れないうちはよくある悩みだと思います!私もよく困ることがあります笑
今回はそういった悩みが発生したときの対処法を伝授します!
まず最初に一番大切なことを伝えようと思います。
それは・・・いきなりコードを書き始めないことです!
「え?コードを書かないなら、どうやってプログラミングするの?」と思ったかと思います。
ですが安心してください。もっと詳細にお伝えすると次で説明する流れでプログラムを作成していくことがコツ、ということになります!
- 業務効率化アイデア(=プログラミングで作りたいもの)を出す
- どういったものを作りたいかの要件を決める
- 手順1,2の内容を踏まえてコードを書いていく
という大きく3つのステップに分けて作成していくことになります!
家作りで例えることもできます。
まず、家を建てるのに設計図が必要になりますね。
そして家を建てる設計図を作るためには家に必要なもの、例えば何階の家にするのか、部屋はどこにするか、を考える必要があります。
プログラミングもこれと同じで、何を作るのかだったりどうやって作るのかをあらかじめ定めないとうまく作成できません!
今回の記事では、実際の仕事でもつかえるようなプログラムの作り方を、考え方から実際に作るところまでを紹介していきます!
さっそくアプリを作っていきましょう!
目次
業務効率化アイデアを出す方法とは?
まずは一つ目の手順から行っていきましょう。
ここで「何を作りたいの?」と頭でふんわり考えているアイデアを実際に書き出したりしてアウトプットしていく作業になります!
ただし、何も取っ掛かりがない状態でアイデアを出そうとしてもそう簡単には出てこないと思います・・・
そこで、最初は実際に自分の日々の業務にヒントがないかを考えるところから始めてみるのがおススメです!
毎日行う作業から考えてみる
実際に貴方が日常の業務でどんなことをやっていたかを一つずつ振り返ってみるところからスタートしましょう。
始業したら何をするのか・・・
昼休憩入る前、入った後に定期的にやっていることはないか・・・
退勤前のさぎょうはどんなのがあったか・・・
ここで大切なことはやっている業務は漏らさず書き下してみることです!
アイデアのヒントはどんなところに潜んでいるかわかりません。
「わざわざ書き出すほどの作業じゃないな・・・」と思っているものこそ業務効率化のヒントが潜んでいることが多いです。
さて、ここで一通り業務を振り返ったら次はどこが業務効率化できそうかを吟味していく作業に入りましょう。
ついつい後回ししがちな作業にヒントがある!
ピックアップした業務から効率化できそうな作業を探していきます。
この時、特に注目すべきは着手するのが面倒で、ついつい後回ししがちな作業がないかどうか、という点です!
面倒な作業というのは往々にして単調な作業だったりするものです。
そういう作業こそプログラミングの力で効率化するのに向いていたりします!
効率化できそうな作業を洗い出したら、最後は実際に出てきたアイデアの中から採用するものを決めていきましょう!
出てきたアイデアを書き出す
前手順で行った、洗い出した作業の中から実際にプログラミングで業務効率化できそうな業務を出していきます。
ここまでくれば候補も絞られているはずです。
ここまでのピックアップフローを通すことで、面倒だと思うポイントも一緒に洗い出せていると思います。
それを参考に今回得られたアイデアを書き出すのがポイントです!
業務効率化アイデアが出てきたら、次に設計書ともいえるプログラミング方針を決めていきましょう!
どういったプログラムにするかを決めるためには?
まずは自分の要求を洗い出す
前の項で、業務効率化のアイデアを出せたと思います。
ここまでくればあとはそのアイデアを実現するために必要なものは何か?を書き出していきましょう。
この必要なものを要件と呼びます。
要件もアイデア出し同様、まずはとにかく思いつくだけ書き出してみましょう!
書き出せるだけ書き出したら、次にその要件の優先順位をつけてどういったコードを書く必要があるかを整理していきます。
要件の優先順位を決める
要件の中でも「これだけは絶対に達成したい!」というマスト要件と「できれば達成したい」というウォント要件と呼びます。
前の手順で行った要件の書き出しを終えたら、次にその要件をマスト要件とウォント要件に分けて整理をしていきます。
ここで整理が終わったら、いよいよコーディングの開始となります!
実際にやってみる!
ここまで伝えた手順をもとに、私が実際にやってみた例を簡単にご紹介します!
今回はタイムシートに勤怠時間を自動で入力するアプリを作成することにします!
そして、実際に考えた要件は次のキャプチャのようになりました。
私の場合、ここまでの手順をマインドマップに書き出すようにしています。
普段からこの方法をとっていますが、マインドマップに書き出すことでアイデアとそれに対する要件の結びつきが一目でわかるようになります!とてもおススメです!
そして、ここで挙げた要件を満たすように作成したコードが以下のようになります。
import tkinter as tk
from tkinter import messagebox
from openpyxl import load_workbook
from datetime import datetime
def record_attendance():
# テキストボックスからファイルパスを取得
file_path = file_path_entry.get()
try:
# Excelファイルの読み込み
wb = load_workbook(file_path)
ws = wb.active
# 日付が格納されている列番号を設定(例:B列の場合は2)
date_column = 1
# 本日の日付を取得
today = datetime.today().date()
current_time = datetime.now().time().strftime("%H:%M:%S") # 現在の時刻を取得
# 本日の日付のセルを検索して、2つ右に現在の時刻を記録
for row in ws.iter_rows(min_col=date_column, max_col=date_column): # 指定の列のみを対象
cell_date = row[0].value
if cell_date and cell_date.date() == today: # 本日の日付のセルを見つける
if response == 'yes': # 出勤を選択した場合
ws.cell(row=row[0].row, column=date_column + 1).value = current_time # 1つ右のセルに時刻を入力
messagebox.showinfo("結果", "出勤時刻が記録されました")
else: # 退勤を選択した場合
ws.cell(row=row[0].row, column=date_column + 2).value = current_time # 2つ右のセルに時刻を入力
messagebox.showinfo("結果", "退勤時刻が記録されました")
break
# Excelファイルを保存
wb.save(file_path)
wb.close()
except FileNotFoundError:
messagebox.showerror("エラー", "ファイルが見つかりません。パスを確認してください。")
# メインウィンドウの作成
root = tk.Tk()
root.title("出退勤記録")
# ファイルパス入力用のラベルとテキストボックス
file_path_label = tk.Label(root, text="Excelファイルのパスを入力してください:")
file_path_label.pack()
file_path_entry = tk.Entry(root, width=50)
file_path_entry.pack()
# 出勤・退勤選択
response = messagebox.askquestion("選択", "出勤を選ぶ場合はYes、退勤を選ぶ場合はNoを選んでください")
# 実行ボタン
execute_button = tk.Button(root, text="実行", command=record_attendance)
execute_button.pack()
root.mainloop()
最後に実際動くかどうかを確かめたら完成です!お疲れさまでした。
まとめ
今回学んだことをまとめます!
プログラミングをするときはいきなりコードを書き始めず、順を追って準備をする!
- 業務効率化アイデア(=プログラミングで作りたいもの)を出す
- どういったものを作りたいかの要件を決める
- 手順1,2の内容を踏まえてコードを書いていく
ここで教えたことはプログラミングするとき以外にも役立つ考え方だと思います。
例えば企画書を作ったりするときにも応用できたりします!
ぜひこの考え方を使って、より仕事を捗らせたりプログラミングのスキルを上げていってください!
ここまで読んでくださりありがとうございました!