たっくんと、プログラマ談義をする
Yas(うつぼ)です、こんにちは。
たっくんのアップデートを心待ちにしてくださっていた、皆さん、長らく更新が滞ってしまいました。別にたっくんに関するアップデートが無かったわけではなく、僕の方が忙殺されてました……。年度末、期初、IT屋さんは大わらわでした。
はてさて、今回は少し経路を変えて。たっくんの気づきにフォーカスを当ててお話をしようと思っています。今、たっくんが何をやっているかというと、Makunouchiの監視系のもとになる、例外処理・エラーハンドリングといった、少し小難しいトピックに果敢にアタックしています。簡単そうで、ものすごく奥の深いトピックに取り組んでいます。
「エラーの処理をする」、これだけを考えると単純にコードで例外が発生しそうな部分をキャッチしちゃえば。エラーが無事に捕捉できて万歳三唱でしょう!?と思うかもしれませんが、これがまた中々に厄介なトピックなのです。
例外というのは簡単に言い換えるとエラーです。例外とエラーが分けられている言語もあるので、そこら辺はややこしいのですが……。とりあえず、エラーの事だと思って読み進めてください。
そもそも、復旧可能な例外というのはあまり多くありません。殆ど無いと言っても過言ではないと思います。
とても、アバウトに説明してしまうと。
「ネットワークが繋がらなくなったぞ!大変だ、例外放出!」
こんな感じのことがプログラムの中で起きていると思ってください。そもそも、プログラムの中でネットワークに接続しなおしてみたいなことは、そういうプログラムでもない限り難しいです。なので、例外(Exception)なんですよね……。
なので、どのように扱うか……というのはとても慎重に考えないといけないです。なので、慎重に考えてもらってます!というのが、進捗です!
ですが、今日、お話したい内容は、例外についてのやり取りをしている時に話題になったことです。
原稿用紙2枚分の前置きをして、やっと本題に入ります。長い前置きでした。
「プログラマというのは、どんなことをする仕事だと思う?」
僕とたっくんの問答にはこういう曖昧なテーマが放り込まれます。これは、僕の酔狂でもあるのですが、それ以上に真理に近いことを話したかったからです。
たっくんは少し悩みます。そりゃ、悩みますよね。こんな荒唐無稽な質問が急に飛んでくるわけなので、どう打ち返すべきかを思案するのは想像に難くありません。
「プログラムを作って、製品を仕上げる人ですかね?」
なるほど、そう来たか。僕の眼がキラリと不敵に光ます。電話越しだったので、ここの描写にはきっとピンと来なかったでしょうが……。
「うーん、そうだよね。実際、今、そうやってもらってるよね。Makunouchiを頑張って開発してくれてるし、torchの他のメンバーのサポートもしてくれてる。正解なんだけどさ、じゃあ……」
じゃあ!?まぁ、嫌な予感がした感じでしょう。嗚呼、長いやつやと……。
その通りで長いやつなんですけどね。
「今、例外処理とかを考えてくれるじゃない。この時、何を考えてる?」
「えーっと、そうですね。エラーを一通り処理する方法です。」
実は、この会話が始まる前にたっくんの例外の処理の仕方で良い方法ないかなー?という疑問に答えていたので、その延長線上でこんな答えになっています。
「そうだね、エラーは適切に処理したいよね。でも、適切って何だろうか?」
「画面に出してしまうとか、処理を中断させてしまうってことですか?」
「もちろん、それもそうなんだけど……、処理を中断させてしまうとか、エラーになったことをエンドユーザに通知して、エンドユーザはそれをどうしたら良いんだと思う?」
「問い合わせるですかね、もしくは諦めるか……。」
「問い合わせをすると何が分かるんだろう?」
「回避の仕方ですよね。」
「そうかなー?、例えばネットワークに関するものが飛んできて、繋がってくれー!って祈る以外にエンドユーザできることある?」
「ない……んじゃないですか?」
「じゃあ、祈りをささげるようにする?」
「しないですw」
「そうだよね、じゃあね。もう一回聞くよ。例外ってどうやったら適切に処理できるんだと思う?」
「………」
鳩が豆鉄砲くらったみたいな顔してるよ、たっくん。それとも会話の無限ループの予感を感じ取っているのかもしれません。電話越しだったから、表情は知らんけど。
この後、なぜ例外処理するのか?例外処理ってどうやって適切に処理されるべきなのかを一通り話して。唐突にさっきの質問に戻ってきます。
「じゃあ、もう一回聞くけど、プログラマって何する人か分かる?」
「情報集めて、何とかする人ですかね?」
素晴らしい!大正解。でも、比喩のぶっ飛び加減には定評のある僕が、頑張って違う例えをしてみます。
「プログラマってパズルする人って思わない?」
バズらせるじゃないですよ、パズルするです。これには、僕なりの哲学も少し交じっていて。ChatGPTも4になり、益々、AI周りを取り巻く環境が前のめりに整備されている昨今、プログラマの仕事がなくなる!とか、AIに仕事取られちゃう……と叫んでいる方がたくさんいらっしゃいます。けど、今の段階ではそこまで危惧することではないと思っています。
なぜなら、AIは理解している人間が問わないと適正な答えを導きだせないからです。超巨大なDBにありとあらゆる情報を詰め込んで検索しているだけとも言えるので、断片的な情報を与えて、正しい(確からしい)答えをスッと出してくれるのは、もう少し未来の話だと思っているからです。
なので、やっぱりパズルをする人間はどうしても必要です。断片化された情報を整理して、綺麗にはめていく。APIというパズルもあれば、設計というパズルもあるでしょう。時にはお客様とのパズルも解かないといけません。どこもかしこもパズルだらけなので、片っ端からそれを解いて回る人。凸凹な道を整理する、そこに適切なピースをはめ込んでいく。
これがプログラマだと思っています。
コードも書くだけなので。
コードを書かないプログラマもいていいと思っています。
適切なピースにさえはめ込むことが出来れば、それはもう立派なプログラマです。
かつては、ライブラリを自分たちで作るのが当たり前だったので、アルゴリズムや計算量に対する知識が今よりも求められていましたし、思ったよりも出来上がるまでに時間を費やしたものです。
今や、ある程度まではAIがサポートしてくれる良い時代になりました。
その意味では積極的に使えばいいし、積極的に仕事をAIにさせれば良いんです。
プログラマである限りは、AI(あい)がそこにあるんですから!
最後のセリフはドヤ顔で言ってませんが、どこまで伝わったかは分からないですが、たっくんは例外処理から壮大なプログラマ論にまで飛躍していったうつぼワールドに翻弄されながらも、今日も元気にやってますよ!
もう少しで、Makunouchiの正式リリース(といってもα版)が控えていますけど、毎日コツコツ、しっかり頑張るんだぞ!と海の向こうから(いや、海の底から)応援してるぜ!
ファイトだ、たっくん。
負けるな、たっくん!
この記事が気に入ったらサポートをしてみませんか?