PyCon mini Hiroshima 2016というイベントに参加した。 参加をしたことには違いはないが、基調講演をするという立場だったようだ。
本人はあまり自覚をしていなかったわけではないが、本人的には準備不足と感じていたようである。 たぶん、もうひとつ本当の基調講演があると思っていたから油断をしていたに違いない。 実はそんなものはなかった。 (むしろ、イベントの代表である西本さんの発表が基調講演だった感じもする気がしなくもない)
いろいろ話すネタを求めてPythonのことをいろいろ調べたけど、結局調べたことはあまり使わなかった。 ただ、話す際の礎になっているし、近年のPythonの状況も少しわかったと思う。 勉強会駆動ってやつはまったく本当に勉強になるな。ただし、喋る立場であれば。
「プログラミングを使い分ける理由」という依頼内容に最終的に沿うような話にしたけど、自分の中にあったものが出し切れていないきがして、個人的には準備不足であると感じているが、作品というのはどこかで妥協すべきなので仕方ない。 あまり一般的なことを話しても調べればわかることなので、自分の色が出せることを意識しつつも、知らない人には知っていて欲しいを散りばめたつもりである。 伝わったかどうかは定かではない。
技術的な話も個人的にしたかったので、時間があまったときようにもスライドを用意した。
正確には、言語の比較ネタとして用意しておいたネタなのだけど、実際につくってみたら、時間がたりないことがわかったので別のスライドにしたというのが本音である。 実際、時間はほとんど余らなかったが、無理矢理ねじこんでしまった。 口頭での説明に頼った部分もあるので、別途、解説記事をちゃんと書くつもりである。
プログラミングというのはたいていの人にとっては手段である。 言語がどうこうより目的を見失うべきでない。 とはいえ、プログラミング言語はたくさんある。 ゆえにプログラミング言語について何か語ることはできる。
プログラミング言語にはプログラムする上で楽することができる機能がいくつかあって、便利機能であって必須機能でないものも結構ある。
アセンブラは大変だけど、がんばれば高級言語で実現できることはできるよね。 プログラム自身が合成可能な性質があるため、小さなプログラムを組み合わせて大きなプログラムを構築することができる。 高級な言語ははじめから大きなプログラムを部品としてもっていると考えることができる。
すごく強力な機能、たとえば goto とかあるけど乱用するとコードを追いづらくなる。 もっと制約となる代わりになる、用途に特化した機能がループ、continue, breakとみなすことができる。 高級な言語は強すぎるチカラに制約をあたえて、秩序を与えていると考えることができる。
あとはトレードオフも重要な要素である。あちらを立てればこちらが立たない。 読みやすさを重視すると、実行速度が遅くなることがる。 (とっさに例がでてこない)
それよりも、どのプログラミング言語を使うかという選択は、プラットフォームによるのが一番の現実かなとおもう。 正直な感想をのべると、プログラミング言語の学習コストより、プラットフォームの学習コストのほうが高い。 Webブラウザ、スマートフォン、Flashというフロントエンドのプラットフォームを考えてもいい。 それぞれの都合がある。 その上でマジョリティである言語がたいていの場合において最良である。
駄文 発表することについて
とてもありがたいことに、以下のような評をいただいた。本当に感謝である。
めっちゃ発表慣れされてるなー,テーマが明確で聞きやすい #pyconhiro #iotlt広島
— Shinichi Nakagawa (@shinyorke) 2016年11月12日
基調講演らしい基調講演で面白かった! #pyconhiro #iotlt広島
— Shinichi Nakagawa (@shinyorke) 2016年11月12日
発表することについては、比較的慣れていることは否定できない。 しかし、私は発表するのは大変苦手である。 苦手な人間でも、回数をこなすとどうにかなるということも伝えたいが、それだけではない。
話す立場に一度でもなると、話す立場を考えて他の人の話が聞けるようになる。 やったことがないことをたくさんやればやるほど、いろんな立場で物事を考えることができる。 1を聞いて10を聞くことができるようになる。
プログラミングに限らずすべてのことに言えるが、経験できることは速いうちにたくさんの経験を積んでおくほうがお得なんじゃないと思う。 若者はぜひいろんなことに挑戦して欲しい。
ああ、どうやら僕はまだ若者のようだ。いろんなことにチャレンジしなければならない。