🏠️Top Page

🖊️おもしろき こともなき世をおもしろく 住みなすものは 心なりけり.

⏩️上には上がいて上しか見ていない.上位1%には成らなくても

おはようございます.40代エンジニアとしてまだ小童レベルだと思うのだけどせめて中間層までなんとかたどり着きたいなっていう思いがあります.

上位1%の技術者は憧れますが、これは持って生まれたDNAが違うのでたどり着くことは到底出来ないという思いがありますが、その他レベルは頑張り次第でそれなりに技術を持つことは誰にでも出来ることだと思うですね.エンジニアが技術を伸ばすのに一番大事なのは環境と人だと思います.

頑張っただけ技術や知識は付いてくるものだと思うのものの.その人の元々の能力によって身につくまでに時間が掛かってしまったりする場合があることも.

@__cp20__さんという人のxのタイムラインを見ていて、この人は上位1%の方だと思うものの、それに掛けている情熱や熱意は見習うものがあると自分は思います.20代だと思うのだけど全然桁違いに凄いなって思います.

上には上がいて彼にもたどり着きたい目標があったりするだと.

明日へ続く

⏩️Qiitaをさよならした話.生成AIの時代に技術的な記事を書くこと.

おはようございます.Qiitaをさよならした話.生成AIの時代に技術的な記事を書くことはデメリットに成りかねない.自分みたいな小童が記事を書いてもそれを生成AIが抽出し学習していく.それを技術的なことを知らないユーザーが使用し中小企業や零細企業に改善してほしいと厳しい単価で要求してくる世の中になるのではないかという懸念からQiitaに記事を記載するのを辞めました.

正確にいうとQiitaの技術的な記事をすべて削除しました.ブログでは今まで掲載した記事を探し出して削除するのは記事数が多いのでしませんが、今後の記事は初心者向けの記事や気づきのメモ的な記事を書いていく事にします.

具体的にはPHPの技術的な記事はこれから少なくなっていくと思います.また業務に支障のない範囲で初心者向けのPythonやReactなどの技術的な記事は書いていくと思います.

WEBサイト制作だけを生業としている企業は生成AIの登場で厳しい時代になってくると思います.もうテキスト指示だけで自分のサイトが作成できる時代になっていてそれをワンアクションで公開出来るようになっています(米国の企業がそんなサービスを提供しています).

これから先、WEBシステムやソフトウェアも一からコードを書かなくて良い時代になってくると思います.ただ既存のWEBシステムやソフトウェアのメンテナンスがあるので直ぐに置き換わるという事はないとは思いますが.それも時間の問題なんだと.

明日へ続く

⏩️mixi2を登録しましたよ. #業務報告?#フォロー宜しくお願い致します.

おはようございます.mixi2を登録しましたよ.いまmixi2は招待制になっていますが自分は知り合いとかではなくてxのタイムラインに招待してくれている人がいたので、それをきっかけにmixi2に登録しました.

まだポスト回数一回です、頻繁にポストしている人もいると思いますがちょっと様子見モードです.mixi2にapi機能が追加されればボット化しそうな気がします.知り合いや友人がフォローしてくれれば話は別です.なのでちょっと様子見モードで運用していきます.

フォローしてくださる人がいればtaoka_toshiakiで検索してみてください.

明日へ続く

⏩️Pythonの仮想環境で使おうの巻. python3 -m venv

おはようございます.Pythonの仮想環境で使おうの巻です、この頃PHP言語の技術的なお話は避けようと思っていて代わりにpyの話を書こうと思っています.PHPのお話を避ける理由は業務で使用しているので、何処まで書いて良いのやらになっている事が理由です.

その代わりにPythonは業務で今のところ使用していないので書きやすい.そういう理由からPythonの事を書いていこうと思っています.この頃、Python記事が多いのもそういう経緯があります.

python -m venv 仮想環境名任意「英字」

今日、ご紹介するのはPythonを実行するのは仮想環境下で行おうという話です.上記のコマンドを打つと仮想環境が任意のディレクトリ配下に作成されます.仮想環境をアクティブにしたい場合は下記のコードでアクティブ化出来ます.アクティブ化した後、インストールやPythonを実行しましょうって話です.

Macやリナックス
. 仮想環境名任意/bin/activate
うぃんどーず
.\仮想環境名任意\Scripts\activate

こうすることで何が良いのかと言うことだけどもCドライブやドキュメント配下がライブラリに侵食されないという利点があります.あとDockerで立ち上げなくても良いというのもあるかな?

トイウコトデ、仮想環境のお話でした.

明日へ続く

⏩️大晦日までカウントダウンしてまたカウントダウンするJSコード #永遠

おはようございます.大晦日までカウントダウンしてまたカウントダウンするJSコードだけではツマラナイので全て漢字に変換して表示するコードを書きました.これでもツマラナイと思う人もいると思います.

そんなに難しいコードでもないのでコードを添付します💁.

        function updateCountdown() {
            const now = new Date();
            const nextNewYear = new Date(now.getFullYear() + 1, 0, 1, 0, 0, 0); // 次の年の1月1日0時0分0秒
            const diff = nextNewYear - now; // ミリ秒差

            if (diff > 0) {
                const days = Math.floor(diff / (1000 * 60 * 60 * 24));
                const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
                const seconds = Math.floor((diff % (1000 * 60)) / 1000);

                // 表示を更新
                document.getElementById("countdown").innerText =
                    kanji(`${days}日 ${hours}時間 ${minutes}分 ${seconds}秒`);
            } else {
                document.getElementById("countdown").innerText = "明けましておめでとうございます!";
            }
        }

        // 初回呼び出しと1秒ごとの更新
        updateCountdown();
        setInterval(updateCountdown, 1000);
        function kanji(str){
            let oo = [{'kanji':'零'},{'kanji':'壱'},{'kanji':'弐'},{'kanji':'参'},{'kanji':'肆'},{'kanji':'伍'},{'kanji':'陸'},{'kanji':'漆'},{'kanji':'捌'},{'kanji':'玖'}];
            oo.forEach((o,index)=>{
                str = str.replace(new RegExp(index, "g"),o.kanji);
            });
            return str;
        }

もっと芸のあるカウントダウンを作ろうとするとp5jsなどのライブラリが必要になると思います.WEBサイトでパーティカルなどを行っているサイトは大体こういうライブラリを使用しています.p5jsなどを使用して昔作ってみようかななどと思ったことが有りますが、実はp5jsは一度も触ったことがないです.

明日へ続く

⏩️日本語に特化したOCR、文書画像解析Pythonパッケージ「YomiToku」でとさでん時刻表を解析

おはようございます.日本語に特化したOCR、文書画像解析Pythonパッケージ「YomiToku」でとさでん時刻表を解析出来るかやってみました.とさでん交通は未だに時刻表がPDFなのでとても見にくいのです、業者さんは提案しないのかな.

ちなみにとさでん交通さんとは高知県の路面電車になります.地元のために頑張ってる公共交通機関ですが過去には経営が厳しい時期もあったようです.今も大変は大変だと思います、高知県は基本的には公共交通機関を使用する人よりも車通勤が多いです、そして少子高齢社会が進んでいる県でもあるので.

そんな公共交通機関の時刻表PDF解析してHTML化してみようと機械学習のPythonライブラリ「YomiToku」を使用してみました、結果、なかなか精度は良いのですがHTML化された物をそのままでは使用できないので手直しが必要です.

恐らく普通のPDF表だったら、綺麗にHTML化出来ると思いますが、とさでん交通さんの時刻表が特殊過ぎるのでこういう結果になったのだと自分は結論付けました.

ちなみに巷では一回画像へ変換しないといけないなどと記載している記事を見かけますが、PDFファイルのまま、OCR解析出来ます.

自分はこんな感じのコマンドラインで実行しました.

yomitoku ./pdfs/akebono.pdf -f html -o output_html

明日へ続く

⏩️AIが予測するトランプ政権下のドル円相場って事で自分は.

おはようございます.AIが予測するトランプ政権下のドル円相場という記事を見ましたか?65%の確率で来年160円台になるだろうと予測されています.

自分は一部預金をドル預金に変更しました.ドルにして2日で1000円プラスになっていますが、1ドルが160円になっても一部の預金なので1万円ぐらいしか儲からない.もし100万、1000万をドルに今変える事が出来ればドルが160円になれば10万、100万の利益を得ることが出来る可能性があります.

逆にドルが140円になる可能性もあるかもしれないが今のままではそう変わりそうにない.

FXでレバレッジをかけてやると大きく利益を得たり大きく損したりするので自分はそういう事はせずに、米国預金で来年ちょっとお小遣いを捻出しようと思って外貨預金にしました.

未来はどうなるか分からないので、ある意味、人生は賭けなんだと思います.

※為替介入というリスクがあります.

明日へ続く

⏩️読めるのに書けないってプログラムコードでも有り得るようになるのかも.

おはようございます.今後、生成AIが進化する中、読めるのに書けないってプログラムコードでも有り得るようになるのかもとふと思ってしまう.例えばPHP言語なら自分はある程度コードはかけるのだけど、Pythonになるとあまり慣れていないせいか、あまり思うように書けない.

ついつい生成AIに頼ってしまう.そうなると生成AIで記載されたコードを読んでカスタマイズすることになる.

そう、読めるのにコードが1から書けない状態に陥ってしまう.これを打開するには自分でコードを書くしかほかならない.これから先、生成AIが進化する中で自分みたいに読めるのに書けない人もエンジニアも仕事をしていくことになるだろうか.

ともあれ生成AIは進化している中でプログラムコードはエンジニアが書くという機会は減っていくのは必然なのかもしれない.

生成AIに頼ってしまうは検索サービスよりも依存してしまいそうだ.

明日へ続く

⏩️Pythonでノイズキャンセリングアプリ化するコードです😤デスクトップアプリ

おはようございます.昨日の続きを記載します、Pythonでデスクトップアプリを作りました、デスクトップにPythonが入っている環境で下記のファイルを実行することでノイズキャンセリングが出来ます.

尚、前手順でライブラリを2つインストールください.

pip install scipy noisereduce
import tkinter as tk
from tkinter import filedialog, messagebox
from scipy.io import wavfile
import noisereduce as nr
import os

def select_file():
    file_path = filedialog.askopenfilename(
        filetypes=[("WAV files", "*.wav")]
    )
    if file_path:
        file_entry.delete(0, tk.END)
        file_entry.insert(0, file_path)

def reduce_noise():
    file_path = file_entry.get()
    if not os.path.isfile(file_path):
        messagebox.showerror("エラー", "Please select a valid WAV file.")
        return

    try:
        # Load data
        rate, data = wavfile.read(file_path)
        
        # Perform noise reduction
        reduced_noise = nr.reduce_noise(y=data, sr=rate)

        # Save reduced noise file
        output_path = os.path.splitext(file_path)[0] + "_reduced_noise.wav"
        wavfile.write(output_path, rate, reduced_noise,stationary=True,prop_decrease=0.7)
        
        messagebox.showinfo("成功", f"出力先:\n{output_path}")
    except Exception as e:
        messagebox.showerror("Error", f"An error occurred: {e}")

# Create the main application window
root = tk.Tk()
root.title("ノイズキャンセリングツール")

# Input file selection
frame = tk.Frame(root)
frame.pack(pady=10, padx=10)

tk.Label(frame, text="Select a WAV file:").grid(row=0, column=0, pady=5, padx=5)
file_entry = tk.Entry(frame, width=40)
file_entry.grid(row=0, column=1, pady=5, padx=5)
select_button = tk.Button(frame, text="Browse", command=select_file)
select_button.grid(row=0, column=2, pady=5, padx=5)

# Noise reduction button
process_button = tk.Button(root, text="ノイズ除去", command=reduce_noise, bg="lightblue")
process_button.pack(pady=10)

# Run the application
root.mainloop()

因みにこのコードをパッケージ化したい場合はPythonの下記のライブラリをインストールするとパッケージ化が出来ます.

pip install pyinstaller
pyinstaller noise-cut.py

自分でもノイズキャンセリングを試してみましたが精度はいまいちでした、noisereduceの微調整が必要になりそうです.

明日へ続く

⏩️音声ノイズキャンセリングはこれ使っています.

おはようございます.AIで生成されたボイスにノイズが入るので音声ノイズキャンセリングを使っています.これを使用するとVideoProc Converter AIを使用すると結構きれいにノイズキャンセリングが出来るので良いです.

因みに自分は買い切りタイプを使っています.またOBS Studioなんかでも上手く使用するとノイズキャンセリングが出来るらしいけど、AI程ではないと思っています.

また無料でノイズキャンセリングしたい場合はnoisereduceと言うPythonライブラリがあるので使用すると良いかも知れない.使用の仕方は公式サイト(GitHub)に記載れたいる通りに行えば良いだけです.

pip install noisereduce

ライブラリをインストールしてきて次にサンプルコードのファイル名を任意の音源ファイル名に変更してサンプルコードを実行すればノイズキャンセリングされた音源が出力されます.

from scipy.io import wavfile
import noisereduce as nr
# load data
rate, data = wavfile.read("mywav.wav") #ノイズのある音源
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
wavfile.write("mywav_reduced_noise.wav", rate, reduced_noise) #ノイズキャンセリングが出力される

因みにサンプルコードではサンプルコードと同じ階層にノイズのある音源があるものとしています.

自分は手持ちに有料のAIノイズキャンセリングがあったのでそれを使用していますが、サンプルコードを元にオリジナルのアプリを作って自分だけで利用するのはありかなと思います.

明日へ続く