1. ちえラジ Chat ポッドキャスト版
  2. 昨日今日のプログラミングの懺..
2021-12-03 17:24

昨日今日のプログラミングの懺悔と後悔

spotify apple_podcasts youtube

ラジオトークで配信した内容の再配信

--- Send in a voice message: https://podcasters.spotify.com/pod/show/takamichie/message
00:04
はい、始まりました。本日の思い出話のお時間というか、お話のお時間でございます。
今日はですね、タイトルの通りではございますが、思い出話とかそういうのではなく、昨日と今日、プログラミングで結構失敗したなぁというようなことがあったので、
それの思い出話、振り返りというか、振り返りをしつつ、懺悔と、あとは再発防止策ですね、ちょっと考えていければいいなぁというふうに思って、
こちらの方に立ち上げております。まあね、いつもの感じとは全然金色が違う感じではございますけどね。
だいたいこれで15分ぐらい話していこうかなというふうに思います。いつもの通り、実はね、これ原稿全然用意しておりませんので、
15分どんだけアドリブトークができるかという訓練をもう少し薄めた感じでございますというところでございますかね。
はい、まあそれはそれとして、今回何を懺悔したいのかというとね、この間から40スタジオの方で配信をしながらという感じになりますけれども、
クリップボードモニターというツールを作っているわけでございます。こちらも何をやっているのかというと、
漢字としては、そうですね、クリップボードにコピーされたもので、結構何が入っているのかってパッと見わかりづらいことってありませんかね。
まあ自分は結構あるんですけども、特にクリップボード履歴ツールっていうのを自分は最近使っていつもいるんですが、
要するにクリップボードの内容を記録しておいて、いつでも任意のタイミングで貼り付けたりすることもできる。
あとはスタッククリップボードといって、クリップボードにコピーしたものを1,2,3,4,5というふうに貼り付けたら、その通り5,4,3,2,1って貼り付けができるっていうツールですね。
こういうのね、複数の文章を一気にパパパーッとコピーしたい時とか、あと順番を変えたい時とかにすごく便利で重宝してるんですけども、これ1つ問題あるんですよ。
何コピーしてるのか、記憶してないといけないってことなんですよ。
で、記憶してないと何がまずいかって、うっかり貼り付けちゃいけない場所に貼り付けたくない文章を貼り付けてしまうことがある。
という非常に厄介な問題がありまして、これはツイッターの投稿欄とかだったらね、おっと危ないで気づけばいいんですけども、配信中の画面だったりすると、まあ即アウトですよね。
特にそれがお客さんに関する情報だったりすると、もう即情報漏洩に繋がりうるわけで、やっぱりそういうようなことはちょっとまずいと。
だからクリップボードに今何が入っているのかを表示したいということで、今回作ったのはこのクリップボードモニターというツールでございます。
でね、まあその他にも実はちょっとついでに実現したいってことがあってね、クリップボードの中に入っている文章をちょこっといじりたいとかいうような要望があったりするわけですよ。
03:04
例えばね、URLをコピーしたらURLにタイトルをつけてマークダウン形式の文章としてコピーしたいとか、あとはクリップボードのURL、そもそもURLに何を指しているのかわからないとか結構あるんですよね。
クリップボードの履歴にhttpから始まるURLがバーッと並んでいると、どれがどれだかわかんないっていうことがちょっとあってね。
だからそういうような時に、何が入っているの?どのURLなの?っていうのを自動的に表示してくれるツール、その辺も諸々ちょっと作りたいなと思ってね。
でも自分で一から作るのってなんか馬鹿らしいなって、特に常駐アプリとしてちょっと作ろうと思ってたんで、なんかねコンパイルしてしまうとちょっと後で微調整やりづらいよねっていうふうに思っちゃうので、
その辺の部分だけパイソンスクリプトを使ってっていうようなことで、パイソンスクリプトを呼び出して処理を行うというようなプログラムをちょっと作っているわけでございます。
今年の末にあたりにはとりあえず一般公開ということで、リリースでバージョン1.0ということでリリースしておけるかなっていうふうに思ってます。
でね、なんでこんなもんを普通にいきなりお金もないのにいきなり作っているのかっていうと、特にこれを販売する予定とか全然ないんですよ。
オープンソースで出している時点で販売する気とか全然ないんですけども。
せっかくだったらちょっとでもお金になるといいなということで、一応寄付の受付ページのリンクをちょっと貼っておこうという感じでございます。
やっぱり自分がアプリを作っているというシーンがなかなかないのと、やっぱりそういうアピールポイントの意味でもちょっと作っておいた方がいいかなということで。
でね、やっぱり実行ファイルを作れる言語っていうと、ちょっとさすがにPythonはないだろうというふうに思ったので、
じゃあGUIが作れてコンパイルができて、開発環境もそんなに重くなくてっていう言語って何があるかなって言ったら、
自分の知っているやつと今使っているラザラスというやつしかなかったという感じです。
なのでこのラザラスというやつを使ってプログラミングをしているわけでございます。
このラザラスはもともとオブジェクトパスカルといって、いわゆるデルファイという言語環境がありますけども、あれで使われている言語です。
ただ途中のどっかのタイミングで分離したらしいですね。
だから今フリーパスカルっていうラザラスっていうのを言語で使われているものと、
あとはオブジェクトパスカルじゃないや、デルファイっていうのを2系統に分かれているっていうものだそうです。
基本構文は変わらないんですけどね。
ただやっぱり若干ながら違います。
06:00
例えば無名関数とか、そういうのって最近の流行りでどの言語にも大抵ついてますけども、そういうのないみたいですし、
あとはジェネリックスっていってね、リストとかに入れられる元の型を限定しちゃうっていうような基本もできるんですけども、
そういうことも多分できないっぽいということで、本当にね、昔ながらの言語って感じなんですけども、
それ以外は問題ないかなということで普通に使っているっていう感じのものです。
ラザラスの説明はともかくとして、今回ね、
今日やったのが設定ダイアログを作るということで、
この間から設定画面に情報を入れたり、アウトプットしたりとかいうようなものを今作ってます。
なのでその辺の機能で、特にスタートアップの登録、
要するにパソコンを起動したら最初からアプリが起動するようにするっていうような設定がありまして、
あれをちょっと組みたいねって思ってやってたんですけども、
じゃあラザラスでショートカットをスタートアップに作成するってどうすりゃいいのよって思ったわけです。
他の言語だと、Windowsの機能を使ってパッと作るっていう場合がすごく多いんですけども、
ラザラスだとこれでいいのかなと思って検索してみてて、
公式のウィキページにちゃんとそういう実装例が載ってたんで、
これはいけるなと思って直してみたんですけども、なぜか全然動かない。
なぜかいくら書いてもコードが失敗しちゃう。
ショートカットの作成に失敗しましたって言われちゃう。
それは何でだろうなーと思って、ずーっと調べてたわけです。
もう2時間ぐらいかけたんじゃないかな。
で、配信。配信はしょうがない。
これは明日ラザラスフォーラムに聞いてみますわっていうことで、
フォーゼロスタジオを落としました。
落としましたって言うと、あれってタイムラプスを作るっていう機能があるんですよ。
フォーゼロスタジオ。
で、あのフォーゼロスタジオのタイムラプスを作るのに、
大体3時間、時間次第なんですけども、
3時間の配信をタイムラプスにまとめると、
大体7分かかるんですよ。最大で。最大でですよ。
もっと短く終わる場合もあるんですけどね。
で、その7分かかるの、ちょっと時間かかるなと思ってちょっとコードを眺めてたんですよ。
もしサンプルコードをそのままコピーしたら動くんじゃないの?っていうね。
それでコピーしたらね、まさか動いた。
さすがにちょっとね、ソースコードの通り書いたけど動かないって言ったら、
ソースコード試してないってのはまずいよねって思って書いてみたんですよ。
そしたらまさか本当に動いちゃった。
09:01
で、なんで?と思ってずーっとなんか、
自分が書き写したコードとアレンジしたコードと、
あとはまともとのコピーしてきたコードと、
どこが違うんだろうってずーっとにらめっこしてたんですよ。
で、動画出力が終わった後にようやく気づいたんです。
あ、ワイドっていう言葉が抜けてんぞって。
最近の文字コード、いわゆる文字列を扱うときってね、
ストリング型っていう変数を使うんです。
どの言語でも大体そうですけども、文字列型っていうのを使うんですが、
ラザラスとかデルファにはワイドストリングっていうものがあります。
これは昔の名残みたいなもんでね。
昔はWindowsってシフトディスっていう、
日本語用の文字コードっていうものを使ってたんです。
その時にアンシーストリングとワイドストリングっていうのが2つあったんです。
ワイドストリングって何が入ってるのかっていうと、
今のUTF-8っていう幅を大きくしていろんな文字が入るようにした文字列型を使ってて、
それを使い分けることなんてないだろうと思ってたんです。
まさかあったっていうね。
今ストリングで文字列を得てるところを、
ワイドストリングで文字列で処理するようにした。
あっさり動いたっていうことでね。
それで問題解決するの?っていう。
ということで、これで2時間をどかしたっていうのは、
本当にバカバカしいというか、自分が恥ずかしいというか、
誰かのせいにしてやりたいが自分の顔しか思い浮かばないっていうね。
どこか車のCMみたいな状況になっちゃってましたね。
こういうことが実はたびたび続いているんですよ。
ちょっと前もね。
何で顔動かないっていうことをずっとにらめっこしたら、
if文の式を無意識に何か書き間違えていたとか、
何か動かないよと思ったら別々の名前のメソッド読んでたとか、
よく似てる名前のメソッド読んでたとか、そういうようなことがあって。
割とちょくちょくあって、
これまずくないですか?何とかならないですか?
って思ったりしていたわけです。
実際にこういうのって、
本番の開発環境というよりは、
実際の開発現場でも多分あるんだろうなと思うんですけども、
こういうのをたびたび起こしていると、
時間がいくらあっても足りないので、
ここは再発防止策と言いますか、
考えていかないといけないなって思ったわけでございます。
再発防止策とか言うと、
必死めんどくさいって感じはしますけども、
結局会社がそういうような再発防止策をたびたび求めるのも、
今までいろんなノウハウがたまって、
12:03
こうした方が多分一番安全に動くだろうという風にしてきた結果だろうと思うので、
再発防止策を求めるのは全然悪いことじゃないと思うんです。
求めすぎちゃいけないですからね。
求めた結果がんじがめで動けないなんてことになったら、
本当に本末転倒なわけで。
だからそうなるようにしないようにしなきゃいけないと思うんですけども、
再発防止策自体を考えるのは全然OK。
だから今回再発防止策として考えていかなきゃいけないのは、
とりあえずコードの例を置いていると、
実例のコードを見たときは、
とりあえずその原文のまま実行しろってことですね。
自分なりに改良するのは第二ステップでいいということがとてもよくわかりました。
第一ステップでいきなり改造すると、
動かなかったときにそれはコードが悪いのか、
サンプル自体が間違っているのか、
自分のアレンジが間違っているのか、
全然すみ分けできないんですよね。
だからそれがまず一番の問題だったなということです。
だからまずは、なるべく、
とは言ってもね、
デルファイとかみたいな、
デルファイじゃないや、
ラザラスとかみたいなコンパイルの必要な言語だと、
さあやれテストだ、単体テストだっていうか、
サンプルコードだけをコピーして使うってことはなかなか難しいので、
それはしょうがないところはあるんですけども、
なるべく基本的にそのサンプルコードだけの行動を、
ちょっと実行してみて動くかどうか、
自分のバージョンで動くかどうかっていうのを
確かめてみるっていうことが一番重要なんだなっていうふうに、
改めて思ったっていうところです。
まあまずはね、
アレンジをするにしてもね、
やっぱりどこをアレンジしたらまずいのかっていうのはわからないし、
サンプルにとおりサンプルとしてもね、
特にラザラスって古い言語なので、
どうしても検索してるとデルファイの内容が引っかかるんですよ。
古い言語の上にマイナーですからね。
日本国内国外とは使ってる人ほんと少ないんですよ。
だからサンプルコードって言ったら結構、
中確率ぐらいでデルファイの2006年時代のコードが、
コード例とかが引っかかって、
そういうのとかも見てコピーするんですけども、
なんかこれって今の書き方って違うくない?
っていうのってたまにあるし、
実際動かしてみるとほんとに動かなかったりするんです。
で、その時ほらやっぱり古いコードだからとか思うんですけども、
ただそういう思い込みを抜きにしてとりあえず実行してみるっていうのが、
まずは大切だなっていうのを今回改めて感じたっていうところですかね。
たぶんね、今回はラザラスのプログラムに直接入れて動かしてみちゃったわけですけども、
15:07
たぶん例えばインターネット上でちょっと小さいコードスニッペットを実行する環境ってのがいっぱいあるわけですよね。
ラザラスというかデルファイだと、
デルファイというかオブジェクトパーツだとないかもしれないんですけれども、
でもね、パイソンだったらとりあえずパイソンのコンソールに直接書いて動かすってこともできるし、
他の言語でも大抵ね、まずはお試しで自分の環境で動かしてみるなんてことができるわけです。
だからまずはそういうようなところで動かして、
ちゃんと動くかどうか、コードそのままで動くかどうかってのを確かめてみるっていうのはすごく大事だなということを、
今日、昨日と非常に身をつまされた話でございました。
あとはね、とにかくね、自分自身を疑うことですね。
自分って結構本当に間違いを犯すので、それはたぶんあの実力がどうかとかあんまり関係ないと思うんですよ。
やっぱりできる人でも結構ほんとしょうもないところで間違いをすると思うんで、
だからなるべく自分を疑っていくっていうことが大事なんだな。
まあそのためにテストとかそういうのもあるわけなんですけども、
本当そういうのが大事だなっていうのを改めて思ったっていう話です。
さてさて、というわけで今日のお懺悔と再発防止策についてではございましたが、
明日はいよいよSVCオープンマイクのナンバー43がございます。
今回は長崎ですね。長崎をテーマとしてお話をします。
なのでこちらの方でいろいろとお話をしていこうと思いますし、
たぶんその反省会的な内容もこちらの方でラジオトークとかすると思うんですが、
ちょっといろいろとお話をしてみようと思います。
今週、来週とSVCオープンマイクが続きますけれども、
ちょっとうまくやっていければいいなというふうに思います。
というわけで今日のお話は大体このぐらいで終わりにしたいと思います。
どうもありがとうございました。
17:24

コメント

スクロール