AI出力のプログラム

こんにちはmtjです。

最近といっても数年前からですがAIでプログラム出力が盛んになってきました。
AIのプログラムはしっかり読んで覚えるべきかどうかが度々議論になっている気がします。

自分は自分の価値を高めたいのなら見るべきだし、作業としてさっさと終わらせるだけなら見なくていいという意見です。
自分の場合は基本読んで理解します、読まずにAI作成プログラムを導入するのはリスクが高いです
見ない人の気持ちも上に書いた通り さっさと終わらせたいならそうすればいいという感じです

上のような話はプログラムをコピペで作るだけという話にも似ているような気がします
読んで理解して書くより 動いている動作をコピペして目的通り動けばいいという考えですが
早いといえば早いけど コードで見たら酷い物になっていると思います、酷いものと理解できるのであればそもそもそういうレベルでコピペなんてしないと思いますが

AIを読まない人の話も コピペでプログラムを作る人の話も システム制作の話を深堀りしていった時にからっぽになってしまうのではないかと思います
自分が面接をしていたら そんな怪しい人は取れない気がします

よく言われていますが 今後はシステム開発はAIを使っている人 使われている人を見極めるスキルが必要になるのかなと感じます
使われている人の場合はシステムがうまく行っている場合は問題ないように見え、速度も早いですが 爆弾を含んでいるような人材になると思います
AIで上手くいかない場合の対処が難しくなり 復旧等も時間がかかり最悪復旧不可のような自体もあるかもしれません。

システムを完成できない人よりも見極めが難しくなるかもしれませんね

画面遷移の仕方

こんにちはmtjです。

.Netの画面遷移について
デスクトッププログラムを作る上でWebのような画面遷移は悩んだことがある人が多いのではないでしょうか
WPF UWP等を扱わずに初期状態のWinForm等でできる動作としては以下のような作りになると思われます。

1.新しいFormを作る
 画面毎に切り離せるので作りが綺麗にしやすいのと作りやすいです
 移動時に画面が新たに開くのでWebのように見せるためには少し工夫が必要

2.コントロールの表示を切り替える事での動作。
 見た目は1つの画面で遷移ぽく見えるので綺麗です。
 欠点としてはForm側での管理もあるので気をつけないとコードが汚くなってしまう事です。

自分は新しいFormを作り 現在の表示用の画面に中身のコントロールを配置するようにしました
1のForm別の作りやすさはそのままに遷移のように作れるので割とうまくできました。
懸念点としては別Formの物を移動しているので予想外の挙動をするのではないかというぐらいです。

利点としては置く場所さえあればよいので本当の画面遷移のように表示したいFormさえ何かで受取表示さえ行えば上位はほぼ気にすることなく動作を行える点です。
コントロールの時のようにコントロールの表示の切り替え等を作ったりする必要がなく それぞれのやり取りも必要最低限のデータで行えます。
1つのFormで完結していればデータの受け渡しも必要ありません。

結構WinFormでも工夫することで面白い表示が行えるので色々試したいと思いました。
以上です。

展示会の大事さ

こんにちはmtjです

仕事上あまり外に出る機会はありませんが いざ展示会等含めて他のシステム、物を見る事は大事だなと感じます。
主にソフトの話にはなりますがやはり別業界のソフト、システムを見ると勉強になることが多々あります。

細かくはその業界での知識になるかもしれませんがデザイン、システム全般はソフトであれば使える、応用できることが多いです。

良いデザインがあればそのデザインを学び、面白い動作であればそれを覚えたり等システムの挙動として覚えることが多かったりします。
コードは見えないので真似する事はできませんがそれ以外ではかなり勉強になる事は多いです。

特にお客さんに提案したりできる事が増えるためやはりそういった外部からの刺激は大事だなと感じます。

趣味と仕事

こんにちは mtjです。

プログラマーをやっている人であればわかると思いますが結構趣味と仕事の内容が被ってきたりします

家でサーバーを立ち上げて何か趣味のWEBサービスを立ち上げたり
それこそ何かのソフトを作ったりまあまああります。

使う知識も仕事で知ったことだったり、趣味で得た知識を仕事でも使ったりします。

そういう意味ではプログラマーという仕事は結構境界が曖昧で使える知識も多岐に渡っているんだと感じます。
ゲームのコントローラー等を自作したりハード関係に波及できたりもします。

覚えて知識を本当に色々なとこで活用できるのでなかなか楽しいですね

失敗から学ぶこと

こんにちは mtjです。

失敗から学ぶということで ソフトは基本失敗から学ぶ事が多いです
なので自分は成功事例も失敗事例も色々な物を見ています、開発秘話等の難しかった所等を見るのはかなり好きです。

そういった事例を蓄えておくことで事前に収集しなければいけない情報もわかるようになります
その情報を元に発生するかもしれない動作以外の問題について対策していきます

よくある話だとサーバーのログイン関連でしょうか
同時にログインされる想定人数等を元にソフト、サーバーの規模等を決めていきます。
同時に約10人しかログインしないサーバーに1万人規模のログインサーバーを建てる必要はないので

それ以外にもサーバーであれば今後のスケール等を元にそういった実装も加えていくのもいいかもしれません

というように設計は経験、知識で要求機能以外の問題点を確認していくと思います。
自分は同じ業界の友達とニュースになったような不具合等で雑談する時もあります
いろんな業界の人がいるので勉強になることも多いです。

プログラマーの知識

こんにちはmtjです。

プログラマーという職業はおそらくですがプログラムに詳しいと思われるでしょう
しかし、プログラムに詳しいという事は大体がPC自体の動作に詳しい人達です。

そしてソフトの使用される分野に対しても詳しい人が多いです。
画像処理であれば画像処理の動き、カメラ等の知識
3Dプログラムであれば3D空間の演算等それらの処理
ゲームプログラミングであればゲームの知識

その分野の知識がなければ言われたコードは書けるもののその先に踏み込む事は不可能だと思っています。
なので自分たちは新しい分野のソフトを作る時にその分野の知識も同時に仕入れています。

そういった知識を入れる事を忘れずに 取り残されないようにしていきたいです

システムを検討する難易度と金額

こんにちはmtjです。

自分たちの仕事ではお客さんの要望によってシステムを検討することが多々あります。
そして同時に金額も伝えるのですが その時の精度はそのシステムにどんな機能を付けるか、何が必要かを正確に把握できるかだと思います。

例えばレジの無いお店に 在庫、売上管理システムを入れたい場合にどういうシステムを入れるか
PSOシステムの知識があればまずPOSシステムをイメージすると思います。
そしてPOSシステムにどのような物が必要かをイメージできればそれを最初から作る工数をイメージすればある程度金額の予想はつくと思います。

上記のようにPOSシステムを知っていればそれらのパッケージ等を提案する事もできるでしょう
しかし知らない場合は回りくどい方法で作って無駄に金額が上がるかもしれません。
機能の把握が十分でなく 十分なシステムを提案できないかもしれません。

そういったシステムを提案できるようにするためにも日々IT系のシステム、技術を取り入れる事は大事だなと感じます。

プログラミングの難易度

こんにちはmtjです。

プログラミングという物は行うことによって難易度がバラバラです。
同じ物を作る場合でも知識のある人であれば一瞬で終わり、無い人は1日かかってしまうという物もよくあります。
特にC++等メモリを理解していないと躓きやすい言語はその傾向が強いと思います。

そういった異常事態、異なる言語でもそれなりに対応できるように日々勉強していきたいです。

できればスレッド操作、メモリ操作等は全く気にせずに実装できるようになるといいですね

無人化の弱点

こんにちはmtjです

海外の人に電車の切符の取り方を聞かれた時に 明らかに在来線の切符売場では買えない範囲の切符だった時に無人機ではそういった状況には対応できないなと感じてしまいました。

京都の地下から有人のみどりの窓口が消えてしまってのでその時は新幹線の売り場まで案内しましたが
その人達はどんだけ頑張ってもあの場所で新幹線の切符は取れなかったんだろうなと思ってしました。

自動機は目的の物が売っている前提で買うなら優秀ですし 早いのですが
目的の物が無い物を買おうとする時がどうしても弱い

人であれば目的の物がなければ その場所を伝えてくれたり
そもそも近辺では売ってないという事を伝えられますが 自動機相手の場合は売ってない事自体も自力で調べないといけないので何も知らない状態で行動するには不向きだなと感じました。

それこそAIが発展しても 何を聞けばいいかわからないというような状態の人にはAIもかなり厳しいと感じます
AIも操作する人が質問等を行って初めて使うことができるので 順を追ってやりたい事を聞き出せる人にはなかなか敵わないだろうなと感じました。

ソフトの作りのこだわり。

こんにちはmtjです。

ソフト開発の費用について。
ソフトの費用というと機能である程度平滑化できるように思われますが 実際は同じ金額で全く同じソフトができるわけでは有りません。

同じ人が作ればある程度は平均化ができますが別な人、会社が作ればUIの作り、処理の作り等により金額もばらばらです。
UIのアニメーション、綺麗さ等に凝れば金額は上がります
処理も1秒も待たせたくないという仕様であれば金額は上がります

そこで大事になっていくのが営業の手腕だと思います。
アニメーションが必要無い箇所で凝ったアニメーションを作る必要はないですし
処理も別に時間がかかってもいいような物であれば即終わるような仕組みを作らなくてもいいです。

相手にとってどの部分が重要かを判断し提案できるかが技術者の腕だと思いました。