2019-8-31(金)OS自作!3月に卒業した生徒さんから近況があった。研修も終盤に差し掛かっており、今はOSの自作に取り組んでいるという。同期のほとんどは大学で情報処理を学んでいるようで遅れをとっているが、なんとか食らいついているようだ。最初は同期との差を意識するが、10年経てば、誤差の範囲でしかない。こればかりは10年経たないと実感が湧かないのでしょうがないが、今は周りを気にせず、基礎体力作りに没頭してほしい。オブジェクト指向については授業でしっかりと教えたので、周りと比較すると理解が進んでいるようだ。どのような業務に就くのかは聞いていないが、与えられた業務を積極的にこなし、10年後には会社を背負うくらいになってくれたらと願っている。Bootに続き、ようやくDjangoに着手出来た。CoreやLaravelなどのように、ファイルに集中して記述するタイプ。Djangoの場合、プロジェクトにアプリケーションを追加していくことによってプロジェクトを組み立てていくので、アプリケーションにもルーティング用のファイルが置けるようになっている。Bootのようにアノテーションによるルーティングはないようだ。私の好みはどちらかというとファイルにまとめて記述できるタイプの方だ。その方が全体としての動きが俯瞰しやすいと思う。Language)を使うことができる。テンプレートの継承やフィルターなどは他のテンプレートと大きな差異は感じられない。コマンドラインベースの作り方も、今のフレームワークらしさを感じる。メニューから辿っていくよりも、コマンドをたたいて、枠組みを作る方が私には合っている。GUIのメニューベースの作り方は初学者には向いているが、慣れてくるとコマンドの方が圧倒的に生産性は高くなるマイグレーション機能もシンプルで使いやすそうに見える。マイグレーションも最近のフレームワークにはなくてはならないものになっている。O/Rマッパーは今はあって当たり前なので特筆すべきところはない。今のところ、Djangoだけの素晴らしい機能というのを発見できていないが、フレームワークとしての機能としては十分だと判断している。Framework自体は随分前に触ったことがある。Injection:依存性注入)の仕方が素晴らしく感銘した記憶がある。Frameworkを参考に作られたと思う。FrameworkのDIは素晴らしいと感じた。Bootを勉強することになった。Frameworkは肥大化し、お世辞にも扱いやすいものではなかった。EEの肥大化を思わせるものがあった。そのように感じているのは私だけではないはずだ。Bootの出現だと思う。Railsのように「構成より規約」に従うスタイルも、今のシステムづくりとマッチする。Coreもほぼ同じような感覚で作ることができる。正式にコース化していないが、いずれコースを開講したいと考えている。2019-8-2(金)LINQ再び久しぶりにLINQを使っているが、改めてその簡潔さと、他のデータソースと同様の記述ができることに改めて感心している。試しに、リストを3つ用意し、join句またはJoinメソッドで連結する練習をしたが、実に素晴らしい。join句はほぼSQLライクに使用できる。by句またはGroupByメソッドも2つ以上のプロパティを使いこなす練習をした。JoinとGroupByを自由に扱えるようになると、一挙に世界が広がるように感じられる。5、6年ぶりに触ったLINQ、改めてC#のアーキテクチャ設計能力に圧倒された。coreの多くはクラスを共有しあっていると勘違いしてた。Coreは一から作り直されたものだと知った。いうことで、今までのいろんな誤解が解けてすっきりした。知らないというのは時として大きな誤解を生むことを再認識。一歩前進!2019-7-14(土)WebAssemblyって気になるねJavaScriptも面白い言語に成長しているが、やはり速度的に限界がある。JavaScriptがなくなるわけではないが、今後は、パフォーマンスを必要とする部分はWebAssemblyに置き換わっていくだろう。C/C++、Rust、GoなどがWebAssemblyを吐き出すことができるようになっている。RustやGo言語界隈もにぎわっている。C/C++は相変わらず人気があるが、RustやGoも目が離せなくなってきている。今すぐという訳にはいかないが、RustやGoのどちらかをコースに含めたいと考えている。この業界、いつまで経っても刺激があっていいよね。2019-7-11(木)多態性・デザインパターンつまみ食い前回のつぶやきで触れたコンソールベースのネットショップアプリだが、多態性とは何か、疎結合とは何か、データソースやアプリの形態に依存しない作りにするには?など、今までは簡単なサンプルコードでしか経験していないものを、このアプリでは本格的に経験し理解できる仕組みになっている。Blackjackなどのゲーム作りも面白いが、上記のような概念を使いづらいと感じている。デザインパターンを導入することでうまく整理できるものがあることを、少しだけだが実感してもらっている。このアプリに真面目に取り組んだ生徒さんは一気にオブジェクト指向に目覚める。地味だがいい訓練なのである。参考書を100回読んでも理解できないものがすっと頭にはいる瞬間である。2019-7-5(金)アハ体験?Javaの中級コースでコンソールベースのネットショップアプリを作るが、今まで勉強してきたオブジェクト指向とまったくかけ離れたコードを書く生徒さんがほとんどである。COBOLやBASICの世界に戻ったようなコードである。これでいいと思っている。最初は要求したものが出来ればいいのだ。そこから徐々にヒントを出してゆく。すると参考書に出てきたオブジェクト指向の概念と結びつくようで、一種のアハ体験をしてもらっている。徐々に改良を加えてゆくと最初とは見違えるようなコードに変化してゆく。基礎をしっかり押さえた生徒さんほど、この課題で一気にオブジェクト指向の考え方が身に着くのである。教えている私の方も感動を覚える瞬間である。「オブジェクト指向おもしれーっ」と叫んだ生徒さんの時は痛快だった。2019-6-29(土)とにかく、やり抜く!プログラミングをはじめとしたIT技術は確かに習得は大変だが、継続してやり抜く力が必要である。頭を動かし、手を動かし、体を動かし、目を動かし、耳を動かす。五感をフル動員できるようになることが大切である。これは決して比喩ではない。人間の脳はそれだけで駆動するのではないと思っている。脳の周りのものを動かして駆動すると日ごろから考えている。優秀な者でも、本を読むだけでは無理である。本を読んだら実践する。サンプルコードを打ち込む。サンプルコードをいじくり倒す。サンプルコードが原形を留めないくらいになるのがちょうどいい。モニタだけ眺めてもだめで、たまには紙に書き、ホワイトボードで頭を整理し、人と議論する。キーボードをすごい勢いで叩き、問題を解決するのはテレビや映画の話である。キーボードを叩くのがIT屋の仕事ではない。IT屋は自分のアイデアを形にしたり、お客様の要望を的確に捉え、より良い提案を行った後に、それを実現するためにコミットするのがその仕事である。待っていても理解することはできない。能動的な思考が必要である。学生のように解答が用意されているわけでもなく、自らゴールを決め、厳しいテストに耐えるものを作り上げてゆく。誰かのせいにしている暇はない。継続し、やり抜くこと。それだけのことである。2019-6-20(木)毎日、長時間教室で授業をしているため、たまに外に出たくなる。言っても遠出はできないので、近場をドライブすることが多い。糸島をグルっと回った後、今宿のキャンプ場に寄ってみた。天気も上々、気温は30度超えているはずなのだが、木陰に入ると海から吹き上げてくる風が心地よく、しばらく腰を下ろして寛いだ。本格的な夏に向けて、剪定する作業員の方がいるだけで、この綺麗な木々がもったいなく感じた。土日ともなると親子連れでいっぱいなのだろうが、まだ夏休みでもないので平日は非常に静かだ。山登りもしたかったが、作業員の方曰く、低い山だが急な斜面も多いとのことで、途中の鉢伏観音まで行き引き返した。不覚にも途中道に迷ってしまった。標高も低く、キャンプ場から聞こえる芝刈り機の音を頼りに無事降りることが出来た。2019-6-15(土)Pythonのフレームワーク。2005年に登場したフレームワークである。その頃から機械学習の芽が出始めたと記憶している。思えば、結構年季の入ったフレームワークになってきたと思われる。私自身、最初に触ったのは2008年、海外旅行のついでに参考書を買って遊んでいたのだが、激務中だったこともあり、その後すっかり忘れてしまっていた。ある生徒さんがWebアプリを作りたいというので、思い出した次第である。どんなフレームワークだったかも全く記憶にない。機械学習ブームということもあり、Pythonを習いたいという生徒さんが増えてきたが、ついにWebアプリもPythonという生徒さんが出てきて少々慌てているところもあるが、楽しみがまた一つ増えたと思っている。2019-6-8(土)JavaとPythonのWebフレームワークコースを追加予定。Bootを、PythonはFlaskも考えられたが、技術情報の豊富さからDjangoを選択。Javaのフレームワークについては私も2000年当時関わっており、そのフレームワークを使用したプロジェクトは大成功したが、フレームワーク自体はその直後にオープンソースとして登場したStrutsにあっという間に負けてしまった。Bootを、今年の冬頃にDjangoを開講予定。お楽しみに!2019-6-2(日)プログラムを習得したいという生徒さんは多いが、データベースやSQLを勉強したいという方は100人中1人くらいだ。業務アプリ、Webアプリなどアプリの形態に依らず、データベースはその中心となるし、システムの価値は突き詰めるとデータの価値であったりする。初級コースの終わりや中級コースの頃になると、それに気づきはじめる方も多く、次はSQLを受講したいとなることも多い。簡単なSELECT文を書ければいいが、できればテーブル結合、サブクエリ(相関サブクエリも含め)くらいは習得しておくに越したことはないと考えている。2019-5-29(水)福岡に引っ越してからは食事に気を遣うようになった。いい食材を調達し、添加物のない(もしくは少ない)食事を心がけている。それ以前の食事はコンビニ中心だったが、食生活を変えることによって記憶力が格段と上がったような気がする。会社員時代は物忘れがひどく、年齢のせいかと思っていたが、そうではないようだ。健康的な食事と適度な運動は記憶力を増進させているように感じる。みなさんも、添加物の入った食材を極力避け、適度な運動を試してください。(効果が出なかったらゴメンナサイ。ついては授業しないという方針だった。それはネットで授業をしている生徒さんから「人工知能を勉強したい」と言われ、人工知能を勉強するには、線形代数や微積分の素養が必要であると断った時のことだ。事実を言っただけだが、もちろん断る口実でもあった。人工知能教えてください」と言われ衝撃。そこまでやっていたとは。復習したが、大学時代は何も理解していないことにも気づいた。それだけでも大きな収穫だ。代数学に至っては考え方がまったく変わった。単なる行列計算と思っていたがそれだけではないのだ。いうことで、どうにか間に合わせ、Pythonを使ってまずは統計学を二人でやることにした。統計学も大学時代やったはずだが、意味が分からずやっていたことに気づく。やってみるとこれが楽しい。検定・推定からはじめ、一般化線形モデルまでどうにか、一通りではあるが理解できるようになった。今はscikit-learnを使った機械学習を一緒に勉強している。このあたりのことはまた、いずれ!2019-5-22(水)私のkindle本のコレクションに「ぼのぼの」がある。忙しすぎてあまり読む暇ないが、読むと肩の力が抜けていく感じがする。ぼのぼのの焦り方も好きだ。いう風な性格になりたいと思うのだが、30数年の社会人生活を経て、ああはなれないと諦めている。シマリスくんにもなれないが、アライグマくんやスナドリネコさんくらいにはなれるかもね。2019-5-20(月)関数と聞いただけで逃げ出しそうになる人も多い。再帰関数や高階関数となるとみんな寝たふりや死んだふりをする(うそ)。確かに私も最初のころは苦手だったのでわからないでもない。世の中には再帰的なデータ構造はたくさんある。それを解くには再帰関数の方が効率的だし、分かりやすくもある。慣れてくると非再帰的表現でプログラムすることが非常に難しく感じることもある。再帰から非再帰、非再帰から再帰への相互変換の訓練は役立つのでいずれ授業に取り入れようかと考えている。2019-5-18(土)粘る。