経験値なんぞ AI に食わせてやれ!

「AI に仕事を奪われる」

 

と、巷で囁かれるようになって久しい。いや、もはや叫ばれているレヴェルか。

 

そして、それは AI に対する無知からなのか、そもそもパターンで出来る仕事しかしていないのか。

 

どちらかだろう。

 

 

このご時世、AI に対する無知というのもヤヴァイし、AI が出来る程度の仕事に価値やら生き甲斐なんぞ感じてるようならさらにヤヴァイ。

 

クソファッキングアフォゥ野郎だ。

 

抱くべきは危機感ではない

 

開放感を味わえば良いのだ。

 

やっとこのクソルーティングから解放される時代がくるのだと。

 

 

でも、それでもそうはいってもって人はいるだろう。

 

求人広告にも「経験者募集」だの「未経験歓迎」だのという文字は相も変わらず並んでいる。そしてまだしばらく並び続けるだろう。

 

それはなぜだろうか。

 

 

答えは簡単だ。

 

AI にでも出来るようなパターン作業が出来ること、そして何度も何度も繰り返しやってきたこと。それがアイデンティティになってしまっているということだ。

 

 

「馬鹿な大人ほどこの実際経験に寄りかかって若者を抑えつけようとする。」

とは私の駿台予備校時代の故・奥井潔師のお言葉である。

(ありがたいことに語録をいくつか残してくださっている方がいた。奥井名言集実際経験について」より。)

 

 

堀江貴文西野亮廣「バカとつき合うな」にも同じようなこと書いてあったか。

むしろ最近読んだこっちの方を覚えているべきだったか(汗

 

ただ、当時若干高校を卒業したばかりの私にとって

「君たちは子供を作らせたことはありますか?」「人を殺したことはありますか?」

そして、「私はあります」と語る師の言葉は強烈に胸に刺さったのを覚えている。

 

アイデンティティには他者が容易に触れるべきではない。

なぜなら逆鱗だからだ。

 

こっちが消耗し疲労するばかりである。

 

まさに「バカとつき合うな」なのである。

 

奥井師もこう続けておられた。

 

「こんな大人相手に喧嘩なんかするんじゃありませんよ。」「そんなときは宥和政策で臨むべきです。ニコニコ笑って「本当です」とか言ってね、心の中では「死んじまえ」と思いながら(笑)、そのくらいでよろしいんであります。

 

と。

 

20年も前に教わっていたとは(汗

 

そして気をつけて欲しい。

 

自分が何かに対して経験がないことや、不足していることについて、引け目や負い目、何かしらのネガティブな感情を抱いているのだとしたら

 

それがアイデンティティになりつつあるから注意した方がいい

 

 

私もだけど(汗

 

最後にもう一言、奥井師の言葉から

 

 時の流れはどうすることも出来ない、どんなに楽しいことも、悲しいことも過ぎ去ります。親が死ねば誰だって泣く、寝不足になる、でも、3日目にはちゃんとよく寝て体力を取り戻します。そんな無情な時の流れにあっても、賃金奴隷たるLaborerではなくて、 創造的な自分にしか出来ない仕事のできるWorkerを目指すことこそが、 幸福のカギなのです。

奥井潔 - お茶飲みwiki、先ほどのリンクとは別のリンク先です。)

なぜエンジニアはコミュニケーションが苦手なのか

google 検索バーに、「エンジニア コミュニケーション」と入れてみる。

 

候補に「苦手」と出てくるorz

 

 

どんまいエンジニア!

 

 

ということで、

とりあえず考察です。

 

本当に苦手なの?という点とやっぱり苦手だよね?っていう2つの視点からやってみました。

 

まず、本当に苦手なの?という点からですが

コミュニケーションにおいて、エンジニアと対極にいると言われている職種があります。

 

営業です。

 

対極にいる営業を考察することで炙り出していきます。

 

では、 

営業は本当にコミュニケーションが得意なのか?

 

 

確かに全体としてみれば得意な人が多い気がします。

けれど、ウザイ営業もいますよね?

 

ウザイだけならまだしも、大抵こういう営業は客先のいうことになんでもイエス

コストとかスケジュールとかそういうことわかってんの?って営業もいます。

 

営業の言い分は、そうでもしないと顧客が離れるってことらしいのですが、そういう営業は大抵成績も悪いです。

 

いかん、愚痴になってしまった!(汗

 

と、まぁとにかく、ウザイやつがコミュニケーション得意なわけないです!

 

つまり、営業だから〜とか、エンジニアだから〜とかという全体を個に当てはめて行くのは乱暴だということです。

 

それにイベントの企画やら、LTやらしているエンジニアも多々いるわけで、そういう人には営業も顔負けです。

 

エンジニアはコミュニケーションが苦手ではない!

 

また、「経験」っていう点からもフォローを入れてみます。

 

コミュニケーションの経験を積めるのは、エンジニアよりも営業の方が多いような気がします。気がするだけな気もしますが、仮に営業の方が経験を積め、かつ経験を積んだから能力があるんだという説が正しいとするなら

 

デフォルト値は大差なかったということです。

 

この点からは「経験が足りない」から苦手って言われるということです。

それなら経験積めばいいだけです!

 

苦手っていうとマイナスなイメージありますけど、ただプラスができてないだけの話なので、苦手じゃなかったということです。

 

やっぱり、エンジニアはコミュニケーションが苦手ではない!

 

まぁ正直、どんな職種であってもそれぞれにそれぞれないろんな人がいるよね!とは思うのですが。

 

 

さて、本題です。

 

でも、「やっぱり、エンジニアはコミュニケーションが苦手だと思う。

 

ということです。

 

結局のところ、コミュニケーション能力っていうのは、「人への関心」の度合いに依存すると思うのです。

 

総じて苦手と言ってしまって大変申し訳ないのですが

(じゃぁ言うなw

 

エンジニアってヒトよりもモノに対する関心が強いんだと思います。

だから何か作ろうとする。

 

モノに関心がなきゃ作れない。

 

こちらの度合いが高すぎるとコミュニケーションが苦手っていう人に分類されちゃうんだと思います。

 

 

けれども、ヒトに関心がないといいモノは作れないと思います。

たまにそれでもステキなモノを生み出す人もいるかもしれませんが。。。

 

 

つまり、優れたエンジニアはヒトにも関心があるはずです。

 

 やっぱり、エンジニアはコミュニケーションが苦手ではない!

 

むしろ得意だ!

 

 

というより、得意にならなければならないと思います。

ヒトから離れたモノは役に立たないですし、いいモノほどヒトに寄り添っていると思っているので、ヒトへの関心も忘れないで欲しいです。

 

考察になっているのかはわかりませんが、こんなところでしょうか。

 

ちなみに、私は・・・ヒトへの関心の方が高かった部類の人間です。

そこからモノにっていう流れです。

 

 

ヒトとモノって切り離せない

 

 

なぜ、という問いで始まったのに結局反証で終わってしまった(汗 

AWS や環境構築に付き纏う得体の知れぬ恐怖感を取り除く

突然ですが、

 

引っ越ししたことありますか?

PCのじゃなくてリアルの住所とかそういう引っ越しです。

 

どうでしょう?

 

メンドクサイですよね?えぇ、メンドクサイです。

たまに慣れてるよーって人いますが、大抵の人はメンドクサイと感じると思います。

 

家電設置して、梱包した荷物解放して、収納して、さらには住民票を移したりなんだり・・・

 

色々メンドウです

 

環境構築とかに関係あるんですか?と思うかもしれませんが、似ているんじゃないかと最近思いはじめています。

 

では、一方の環境構築とかではどうかというと・・・

 

初心者であればあるほど、とりあえずコピペ!

んでターミナルにぶち込んで、んで実行!!

 

なんかよくわからんエラーと戦って、なんかよくわからんけどできた。。

 

そんな感じなんじゃないかと思います。

 

 

ということで、再度引っ越しの話に戻ります。

 

 

ここでなんですが、もし仮に生活経験がゼロだとしたらどうなるでしょう?

 

想像しずらいかもしれませんが、例えば洗濯機というものを使ったことがなければ洗濯機を使うのに給水が必要だということも知りませんし、そもそも家電を動かすのには電気が必要で、コンセントにプラグを差し込まないといけない!などということすらわからず、、、なんてことになり

 

四苦八苦するでしょう。

 

環境構築も似たようなもんです。

 

本があれば本棚が必要でしょう?

ソフトとか入れたいのであれば Homebrew とか必要でしょう?という話。

 

電子レンジの設置方法とか取説で読む人はいませんよね?

読んでも使用方法くらい。

 

それは生活の経験があるから。

 

もちろん、経験がない人向けに説明書も充実していたりします。

 

そういえば、以前どっかのデパートのトイレの個室で、壁に使用方法が書いてあったんで読んでみました。

 

ウォシュレットとか使った事ない人はわからないかもなーと思って読んでみたのですが、何とその使用方法には

 

1. 便座の蓋を開ける。

 

とありました!

 

いや、普通開けるだろ!開けるだろ!?開けないやついるのかよ!!?

と一人でツッコミを入れてましたが・・・

 

よくよく考えると、文化圏の違う外国の方からしたら、わからないのかなとも思いました。きっとある文化圏の人たちにしてみたら

 

便座の蓋は、蓋ではなくて台座なのだ!

 

いや・・・さすがに、、、ないか?

 

まぁ話を元に戻すと、とりあえず色々やってりゃそのうち、日常生活みたいに「それって当たり前じゃね?」って感覚になってくるよ!っていう話

 

なんかまとめたら一瞬だった。

 

エンジニアの人ってよく、「どれだけエラーにぶつかってきたか・・・」みたいな話をしてるのを聞くことがあるのですが、

 

つまり、さらにまとめると

 

「この前さ、スマホが動かなくなっちゃって!画面が真っ暗でどーにもならないんだよ!!ボタン押しても振ってもどうにもならないからショップに行ってさ!店員に『これ不良品何じゃね?』って言ってきたわけよ〜」

(「エラーが起きてさー、この手順書間違ってんじゃね?このサイト当てになんねぇわー、って。俺スクール行ってるからメンター呼びつけて聞いたんだわ!」)

 

「でも、俺はさ、ちゃんと調べたんだぜ?SIM が認識されてないとかさ、あれな気がしたんだよ。でも挿し直したり色々やってみたんだぜ?でも、うんともすんともいわないわけ。」

(「とりあえずこのサイトに書いてあったコード実行してみたんだけどさ、どうにもならなんですわ」)

 

「まぁ、色々説明したら店員さんがなんか見てくれるっていうんでさ、預けたわけよ!そしたらさ、店員が店の裏で何かやってるわけ!!」

(「色々説明したらメンターが見てくれるっていうんで、PC 見てもらったわけよ!そしたら、ターミナルで何かごちゃごちゃやりだしたわけ!!」)

 

「出てきたと思ったらさ、『お客様のスマホは、バッテリーが切れていただけでしたので、充電さえしていただければ特に修理の必要もなくそのままお使い頂けます』っていうわけよ!」

(「そしたらメンターがさ、『サーバー立ち上がってないだけじゃん笑』とか言うわけよ!」)

 

「もう頭にきちゃってさ、そんな充電が必要ですなんて説明、買った時に受けてねーよ!」って・・・

 

 

多分こんな感じだ。

 

エラーについて偉そうに語る奴ほど、、ggrks としか言わない奴ほどきっとこんな奴だったに違いない!

 

 

まぁあれだ、、つまり必要なのは恐怖感じゃない!

 

本当に必要なのは謙虚さだ!!

(主に自分に向けて)

Rails で gem の mechanize を使ったスクレイピングを簡単にわかるようにまとめてみた

スクレイピング

 

といえば python が主流のようだけど、

rails で使いたいよね!ってなったので、ruby で。

 

スクレイピングってそもそも何?っていうなら、データを抽出するってことなワケで

そんなワケだから、やることもやれることもそれだけ。

 

つまり

 

  • インスタンスを作ってメソッドを使う
  • メソッドでDOMを取得してノードを取り出す

 

これだけ。

ただ、これだけだとちょっと乱暴過ぎるので(汗

 

簡単な手順

  1. Mechanize.new でインスタンスを作る
  2. インスタンス.get でどのページスクレイピングするのかを指定
  3. ページ.search(複数)ないしは  .at(一つ)で要素を取得
  4. 要素.inner_text(内容)ないしは .get_attribute(属性)でブツを取得

 

これだけ。

ただ、これだけでもまだ乱暴過ぎるので(汗

 

思考の手順

  1. URL 構造、DOM を把握する
  2. 配列がキモ

 

要は、階層構造(ツリー)を抽出すること!

(ここで頭がゴチャゴチャになって挫ける人が多い印象。書き出してもいいと思う)

 

だいたいこんな感じ

 

f:id:uehara55:20181107115942p:plain

 

あとは、配列!

 

配列の手順

  1. 親から子へと順番に
  2. each 文を使う。

 

親要素をまず配列として取得する

["親1","親2","親3" ... ]

 

each 文を使ってそれぞれの親の中で子を、さらに配列として取得する。

["親1["子a"," 子b", "子c" ... ]",  ... ]

(親や子に URL があるケースが多いかと。もちろん URL を取得したい場合は孫に URL がくるケースもあり)

 

さらに子の中で each 文を用いて孫を、またまた配列として取得する。

["親1 ["子a ["孫悟空", "孫悟飯", "孫悟天", ... ]", ... ]",  ... ]

(注:孫家はこの場合、兄弟です)

 

あとは DB にツッコむならモデルからインスタンス生成して入れればいいし、煮るなり焼くなりお好きなままに。

 

もちろん何重でも重ねることはできる。

 

こんな感じでしょうか。

 

あくまで理解の助けのためにと思っての記事なので具体的なコードとかは書いておりません。気軽な読み物として。