【17日目】マージソート
工場にて...
この工場では、アナログゲームとして名高い『トランプ』の生産をしている。社長のこだわりによりここではほとんどが手作業で行われている。
社長曰く、
「アナログゲームを作ろーってやつらが機械頼りなんて許せるかー」
とのことである。そのため従業員には苦労が絶えない。これはそんな日常である。
「トランプ制作部門のやつら、もっとうまくやれんもんかよ」
「そうっすよね、結局しわ寄せは全部うちにくるんすからね」
「また、デスマーチ確定やな、やってらんれんわ」
「おい、お前らもっとプライド持って仕事しろよ。俺らの仕事ら子供達の笑顔を守ってんのやぞ」
「それ、いつも言ってますけど、ほんとですか?自分たちトランプ並べ替え部門ですよ。子供達、すぐシャッフルしますやん」
「うぐっ、うるせー始業時間や始めるぞ」
「「うぃーす」」
「えっーとこれを先頭にして...」
「なんやお前1番小さい数探してを繰り返す方法でやってんのかい?たっはーほんま学生あがりはあかんで」
「(イラッ)そういう先輩はどんな方法でやってるんすか?」
「昔はなー技術は見て盗むもんやったんやけど近頃の若もんはあかんわ、まあしゃーなしやぞ。」
「お願いします」
「こうやってな左手に一枚持ってな右手の1番左のカードを左手のカードと比較して入れてくとな...」
「あー挿入ソートですか、学校で習いました」
「(挿入ソ?)なに言ってんねん、これはわしが20年考え続けて見つけた方法やぞ」
「(あー車輪の再発明タイプの人や)へぇー」
「たく、まあこれで今までより早くできるやろ、さっさと仕事せいや」
「はぁーい、あれ今日入ってきた新人休憩してますよ、サボりですかね」
「なんやと、俺が注意してきたる。」
「おい、お前何サボってんねん、最初からそんなんやと将来こまんぞ」
「えっ、あっ仕事ですか、もう終わりました。皆さんと同じノルマは先程納品しました」
「何言ってんねんそんなことあるか、見せてみろって」
「あっはい」
「うそやん、完璧やん、どうやったんや?」
「えっと、まず全部一枚ずつ並べます。今回は52枚を1枚ずつです。で、隣同士を比較するでしょ?そしたら一枚ずつだったカードが比較されたカードの1組の組み合わせになります」
「えっと、3,5,4,9,7,8やとして、3と5を比較して3,5の組として、おんなじように4,9、7,8か。ほんでほんで?」
「そうしたらその組同士で小さいカードを出していきます。」
「3,5と4,9やから3のほうが小さいから3やろ、次は5と4やと4やな。繰り返したら3,4,5,9かなるほどな」
「それを全部にします」
「3,4,5,9と7,8かそれなら一緒のようにすると3,4,5,7,8,9か。簡単やな」
「ってやってくと仕事は終わりますよ」
「うわーほんと早いっすね、先輩のより早いんじゃないっすか」
「うるせーお前はあっち行ってろ」
「ちぇっ」
〜行ってから〜
「いやー流石ですわ、学生さんはやっぱ違いますわー、今度なんか奢りますよ」
「いやーありがとうございます」
「(先輩、プライドないのかなあー)」
【16日目】挿入ソート
挿入ソートとは何だろうか?
まずは例を挙げよう。7並べをみんなでしているとしよう。手札が配られ、全員に行き渡ったら手札を確認しまずはどうするだろうか?
配られて最初にするのはトランプを小さい順もしくは大きい順に並べ替えることではないだろうか?
小さい数を見つけたら左へとやっていくのではないだろうか?では、これを少しわかりやすくして考えたてみよう。
左側に1枚だけもち、右側にはバラバラな残りのカードを持っているとしよう。
左側のカードをどの時点でも、小さい順に並んでいるようにしておきたい。そこで右側の1番左側のカードを左に持っていく。
その際に左側のカードと比較していく。どちらが大きかだけである。大きければ左手の右側に、小さければ左手の左側にとしていく。
左手にカードが移ったら残りのカードも同じように繰り返していく。左手の左側に比較するカードよりも小さいものが大きいものがなくなるまで繰り返す。
そうこうしていると右手のカードはなくなり、左手に小さい順に並んだ手札が出来上がる。
これが挿入ソートである。とてもシンプルなものである。
アルゴリズムは数学を使い厳密に定義することもできるが、実際は数学を使わないで図や実際のものを使うことで理解することができる。
わからなければ手を動かす。1個からどんどんと増やしていき考えていくのもいい。
図や実物のもので十分に遊んでみる。インテリぶったアルゴリズム考案者(知らんけど)の粗探しをするように、批判的な目でみる。
☆批判的な目でみるのが難しい人へ
批判的な目線で見なさい!疑ってかかりなさいとよく言われるが実際すごい難しい。
相手は本を書くほどその分野に精通した人だろうし、アルゴリズムの本とか数学の分野だからなおのこと小難しく書かれている。
「厳密には、むにゃむにゃ...」
「この過程が成り立つことによりふがふが...」
等小難しいことを専門用語をふんだんに使って襲いかかってくる。そんな言い方されると偉いお方のお言葉だーとなってしまう。
正直疑うなど難しい。なので自分がやっているくだらないアイディアは説明を脳内で関西弁のおっさんに変換すること。
「よーきーときや、今から小難しい話すんで」
「こうやったらこうなるやん、そうするとこれも成り立つやろ?せやろ?そしたらこうや」
こうやってしまえば怪しいおっさんの説明だからこっちも「ほんまかいな」「あほくさ、絶対嘘やわ」と疑うハードルは下がる。
ちなみに自分がイメージしているおっさんは駅構内で若者を見つけては、本当かどうか疑わしいような過去の栄光を自慢しながら、マウントを取ろうとするおっさんである。
「俺は陸上で国体にも出たことがあるんやぞ」と言ってくるタイプのおっさんである。
ぜひ、実践してみてください。
【15日目】業務知識が何か考える
業務知識を身につけろと言われたが最初はなんのことやらわからなかった。
プログラマーはコードを書くものではないと理解していたと思っていたがどうも抜けていなかったみたいだ。
お客さんが求めているものの背景には業務がある。業務を改善するためにたくさんのお金をかけてプログラマーを大量に雇っている。
では業務で出た問題を解決しようと思ったらどうすればいいのか?
お客様からすればプログラマーが何ができるのかわからない。本質的な問題も見えていない。そういった場合に問題を解決することができるのがプログラマーだけである。
そうなった際に言われた通り言われたまま作ってしまうとうまくいかない。それこそ何度も起こる仕様変更みたいなものだ。
なんか違うんだよなとなってしまう。ではどうすれば相手の言おうとしていることがわかるのだろうか?
それこそが業務知識である。これを身につけることで、お客様が本当に良いたいことの背景を掴める。
この知識がない限りは言われたことをするだけの受動的な人か、コードを変換するだけの人になってしまう。
これでは機械にとり変わってしまう。ニーズを考える。考える。
プログラマー筋トレを始める
これから筋トレを始めようと思う。座ってばかりで不健康極まりない。
休みの日も家でパソコンか読書と家から出ない日も多い。それによって腹も出てくる。
筋肉がつくとカッコいいというのは大いにあるが、一番のメリットは自信がつくことだと思う。
嫌なことがあったり、迷走しだしたりすると視野が狭くなり、何をしても自信がない状態に陥ることが多い。
終わらない、どうしていいかわからないという状態になってしまう。
その際に周りの人に相談したり、自分のことを導いてくれる人がいる人は幸いである。
ただ、必ずしもそうはいかない。何より自分は上京してきて引きこもり(仕事以外ではほとんど外出しない)をしている。
相談も難しい。なので筋トレ。取り敢えず筋トレ。
鍛えることで単純に自信がつくらしい。運動することで、仕事に対する集中力が増すらしい。
実際嫌なことがあり、何もやる気になれなかったときに取り敢えず筋トレをした際はなぜか落ち込まなかった。
そう考えるとメリットも多そうだ。海外のCEOもやってみるみたいだし。やろう!
【14日目】統合認証とは
統合認証とは読んで字のごとく、統合して(まとめて)、認証(その人に許可があるかどうかを確認)するシステムのことである。
今までは複数の管理者が複数のアプリケーション(目的ごとに必要となるソフトウェア)にアクセスするために許可を出していた。
あるアプリケーションを使う場合には管理者を通す必要があった。そのために管理者はアカウントを自分たちのところで管理する必要もあった。
最初のうちはアプリケーションを使うにはあの管理者に言えばいいのか、と問題は起こらなかったが、そのうちに使いたいアプリケーションがどんどんと増えていってしまった。
このアプリケーションを使うには誰に許可を得ればいいのかわからなくなってしまった。
それだけではない、管理者側も問題が起こった。許可を得たいという人たちが増えすぎて管理するのも大変になり、また、それぞれのシステムごとに許可を出しているのか、その人は退職済みなのか、休職中なのか管理が難しくなってしまった。
ある管理者は退職したことを把握していても、別の管理者が知らなくてはこのアカウントが生きているのか死んでいるのかがわからない。
実際、情報漏洩の多くは退職し消されたはずのIDを利用し漏洩することがよくある。
では、これらの問題を解決するにはどうしたらいいだろうか?それこそが統合認証システムである。
統合認証システムにより、利用者はいちいちそれぞれの管理者に承認してもらう必要がなくなり、統合認証システムにさえ許可をもらえれば様々なアプリケーションにログインすることができる。
もちろん、許可の得ていないアプリケーションにはログインすることはできない。
Aさんは3つ許可を得ており、Bさんは2つしか許可を得ていないならBさんは2つしかログインすることはできない。
認証をもらったからといって全てにログインできるようになるわけではないのだ。
複数のIDを覚えておく必要もなくなり、1つだけで様々なアプリケーションにログインできるようになることも大きい。
IDだけなら行けるかもしれないが、有効期限やどのアプリケーションにログインするためのものか、パスワードはとなってしまうと厄介でしかない。
それが10もあったらもう無理である。そして管理者にもメリットは多い。というのも管理するIDは少なくなるし、退職したり休職した情報は色々な管理者に聞く必要もない。
一元管理しているので情報漏洩のリスクも低減する。良いことずくめである。
デメリットとしては、一元管理である以上統合認証システムが突破されてしまうとほとんど全滅する。
また、統合認証システムで問題が起こってしまうと全てのアプリケーションにも影響が出てしまう。
そのため、統合認証システムを扱う人たちには他のシステム以上に大きな責任が課される。
【13日目】認証基盤について学ばなければならない人へ
これからは統合認証基盤について学んでいく。正直半年経ったが、Javaは触っていないので一旦保留。
統合認証基盤について全てわかるようにする。これは量的にも質的にも高いものを要求する。
というわけでそれについてのまとめが増えるかもしれません。
短いですが、以上です。