今までの人生でプログラムとかした事なかったんですが、chatGPTが簡単に作ってくれるというので、自分もやってみることにした。とりあえずpythonという言語が一番わかりやすいということなのでそれを使ってみた。
作ったのは、
- 画像を適当に放り込むと全部順番でpdfにしてくれるのとか(そのサイズ指定もできる!)
- ファイル名を一括で変換してくれるのとか
- 日記を書くのに使ってるフォーマットを一瞬で生成してくれるのとか
- 画像を入れると真ん中から二分割して、新しくナンバリングしてくれるのとか
- 整ってないタテヨコの画像を整形して同じサイズにしてくれるやつとか
手動でやってやれないことも無いが、その作業がめんどくさいやつをプログラムで自動でできるようにしてくれた。
こういう作業をするためのソフトは、市販していたり配布していたりもするけれども、わざわざそういうのをダウンロード、購入して使うほどでもないし、そして、そういうソフトは大体高機能で色々できるので、その分どういう作業をしたいのかを指定したりが面倒で結局手間がかかる。
こういうのが作りたいんです、っていうと、勝手にプログラムを書いてくれる。生成AIすげえなあ、こういう使い方ができるんだなあ、って思った。いや、そういう使い方が世間ではメインなのだろうけれども。話し相手をしている人の方よりもそういう使い方の方が本来の使い方なのだろう。
100行に満たないくらいのプログラムがさっと出来上がる。
どうやってそのプログラムが動いているのか気になるので、作ってもらった後それはそれぞれどういう動きをするのかを聞いたりしてる。初学者向けに一行一行解説して、っていうと、ちゃんと教えてくれる。
…でも全然わからん。全くわからんことはないけれども、モジュールとかライブラリとか、【どういう機能のものが世界にはあって、それがどのように使えるのか】とか覚えないといけないことがたくさんあって、それが追いつかない感じ。説明されるとその仕組み自身は分かる。
昔、htmlを手打ちで打っていたので、構造としてのややこしさはそれとあんまり変わらない。思ったより、理解するの自身は難しくないな、と思われる。(理解するのにはそれなりに時間がかかるだろうけれども)
そして、プログラムの構造的な仕組み以外に、ファイルを順繰りに作業を処理していくアイデア、文字列を生成していくアイデア、の方がもっと『聞いたらわかる自分では書けない』という状態だ。ずっとプログラムを組んでる人間は、こうしたら順繰りに処理できる、簡単に構造化できる、っていう方法が脳内に結構できあがってるのかな。すごいな。
まだ、chatGPTの会話の中で出力してもらってる、という段階だけれども、VScodeと連携するともっといろいろと長いプログラムも書けるようになるということなので、そのうちやってみたいなあ、と思ったりしてる。
何が作れるか、よりも、『何が欲しいか』の方が重要
細かい作業を自動化するために作ってる。この『自動で生成AIがプログラムを作ってくれる』っていうのはすごいなって思う。
そのうち(もうなってるのかもしれないけれども)人間は、これこれこういうのが欲しい、っていうと、生成AIが勝手に作ってくれて、人間はプログラムを書かないで良い時代が来るのかも、って感じだ。
で、自分でも色々とアプリ作ってみたいなあ、と思った。思ったのだけれども、そう思った時に、『アイデアがない』ことに気が付いた。
あれが欲しい、あれがあると便利だろうな、みんなこれが欲しいだろうな、っていうアイデアが自分の中にない。欲望がない。
これは困ったな。
ちょっと前の記事でも書いたけれども、*1これから必要なのは、手を動かす能力よりも、『何が欲しいのか』を考える力なのかもしれない。欲望する力というか。アイデア。世間でソロでプログラムを作って売って仕事してる人って、一体どういう風に物事を考えてるんだろうなって思う。生成AIを使って1日1個、100個アプリをリリースしました!とか言う人も、すごいバイタリティがある。
いくらでも簡単にプログラムやアプリが作れるようになった時(状況でカスタマイズして作れるようになった時)必要なのは、『機能を増やす』ことではなくて『機能を減らす』こと
自分が上で作ったプログラムは、本当に簡単なもので、プログラムと同じフォルダに入っている(input)フォルダに加工したい画像ファイルを放り込んでプログラムを起動させると、自動で(output)フォルダに放り込んでくれる、というそれだけのものだ。画像のサイズを変更するかとか、画像の拡張子を変えるとか、右左どちらを始まりにするかとか聞いてこない。そういう入力する機能もない。
商品であるのならそういう機能も必要なのだろうけれども、自分の場合、文字が縦書きなので必ず右側が先になるし、画像のサイズは加工する必要もないしなので、これで十分間に合ってるし、逆に毎回入力を確認する手間が無くて楽で、つまり入力ミスをしていいいいいいっ!ってなることも無い。
これから、他所に発注ではなく生成AIで、自分の家や小さい会社でアプリを作るようになった時、そういう、『何が必要で何が必要でないか』を切り取るのが一番大事でその後のアプリを使っていく中での楽さに関わってくるんだと思う。
あ?これって、ITを仕事にしている人が言ってる『要件整理』っていうやつか。別の業界でも、仕様を決めるとか、そういう風に言われてるやつだ。
何が欲しいかを考える力と、何が必要で何が必要でないかを判断する能力
それがちょっとした開発で作業する人間にとっては、唯一必要とされる能力になっていくんだろうなって思う。
参考までに自分が作ったもの
でっかい画像を張り付けて、左右で分割してくれて、ナンバリングまでしてくれるプログラム。一定の人には便利なんでここに貼っておきます。pythonをパソコンに入れて、これを~~~~.pyというファイルにして起動させるだけで出来ますので、簡単です。
まあ、生成AIにこういうのが欲しいって言うだけで勝手に作ってくれるものなのですが……
(プログラムがあるのと同じフォルダ内に、inputという名前のフォルダを作る必要があり)
from PIL import Image
import os
import tkinter as tk
from tkinter import filedialog, messagebox
input_dir = "input"
def split_images():
base_name = name_entry.get().strip()
if not base_name:
messagebox.showerror("エラー", "出力ファイル名を入力してください")
return
# 出力フォルダを自動作成
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
output_dir = os.path.join(BASE_DIR, f"{base_name}_output")
os.makedirs(output_dir, exist_ok=True)
files = sorted([f for f in os.listdir(input_dir) if f.lower().endswith(".jpg")])
counter = 1
for filename in files:
img_path = os.path.join(input_dir, filename)
img = Image.open(img_path)
width, height = img.size
mid = width // 2
left_img = img.crop((0, 0, mid, height))
right_img = img.crop((mid, 0, width, height))
right_name = f"{base_name}{counter:03}.jpg"
right_img.save(os.path.join(output_dir, right_name))
counter += 1
left_name = f"{base_name}{counter:03}.jpg"
left_img.save(os.path.join(output_dir, left_name))
counter += 1
messagebox.showinfo("完了", "画像の分割が完了しました")
# ==== GUI ====
root = tk.Tk()
root.title("画像分割ツール")
tk.Label(root, text="出力ファイル名(例:bunnkatu)").pack(padx=10, pady=5)
name_entry = tk.Entry(root, width=30)
name_entry.pack(padx=10, pady=5)
tk.Button(root, text="分割開始", command=split_images).pack(padx=10, pady=15)
root.mainloop()
たった50行ほどのプログラムでこういうことができるんだなあって、感心した(注釈の文字列もあるので、実際はもっと短い)
なんでこれを作ったかっていうと、見開きでA4に漫画のネームを描いているのですが、それを打ち出して清書のラフとして使うのに*2*3、半分にしてB5サイズに変更して打ち出す必要があり、そのための処理を自動化するために作りました。これで半分にしてナンバリングされてる画像を今度は、【連番の画像をB5サイズに変換してpdfにする】ソフトを使ってpdfにした後に印刷します。(いっぺんにできるアプリにしなかったのは、一度確認する作業を入れたかったので)手動でやるとじわじわと手間だったことが自動化されて、ちょっとの時間の短縮と結構なストレスが軽減されました。
そんな感じで作っておりますのがこちらの漫画です。
不動産斜路の冒険
不動産斜路の冒険 - 小島アジコ / 第1話 白磁の魔女① | コミックバンチKai
最新話以外は読めるようになっておりますので、是非読んでください、感想も頂けると嬉しいです
*1:AI以降の仕事は商品のアイデア出して、そしてそれには『感情』がとても大事 - orangestarの雑記
*2:アナログで紙にペンで書いています、トレース台を使ってラフを透過させて、原稿用紙に清書用の下書きを書いていきます
*3:キャラやコマ、背景やセリフの配置の参考にしかならないですが、それでも、大分と楽です