2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
リンクをコピー
記事をブックマーク
篭橋裕紀氏(以下、篭橋):ありがとうございます。他に質問したい方はいますか? 次のところのほうがもう少し詳しくいろいろな話が聞けるかなと思うので、そしたらテーマ2に。城倉さんお願いします。
城倉和孝氏(以下、城倉):じゃあテーマ2ですね。先ほどのコースが3つあります。じゃあそれになるためにまずどうしたらいいのかという話ですが、みなさんはエンジニアなので、やはりエンジニアとしてそれなりに大成するということは大事だと思います。
例えば、「VPoEになります」と言っても、やはりエンジニアの気持ちがわからないとマネジメントもできないですよね。だから、まずは「イケてるエンジニア」を目指してほしいなというのがテーマ2になります。
今わりと「エンジニアが不足してる」という声もありますが、なんでかという話を少し話すと、まず時代背景があります。DXってたぶんみなさん少なからず聞いたことがあると思います。デジタルトランスフォーメーションですね。これ、けっこう勘違いされていて、「デジタル化すればDXだ」と言う会社さんがけっこう多いんですよ。これは、手段を目的にしちゃってるケースになります。
DXって経済産業省も言っていることで、経済産業省のレポートに背景が載っています。軽く読み上げますと、あらゆる産業において新たなデジタル技術を利用して、これまでにないビジネスモデルを展開する新規参入者、まぁGAFAなどもそうですよね。これが登場して、ゲームチェンジが起きつつある。
今までの常識だと、例えばカメラだったらフィルムが要りますよね。富士フイルムさんなどが強かったですが、デジカメになるとフィルムが要らなくなるんですよね。そうすると、完全にゲームチェンジが起きて、SONYや家電メーカーがカメラに強くなるわけですよ。こういうことが起こっています。それで各企業が競争力維持・強化のためにDXを進めなさいというのが、趣旨になります。
ということは、やはりこれからはデジタル化が進んでいく社会なのですね。その中でみなさんはどういう価値があるのかというと、プログラミングの力で世界を変えることができるんですね。
だから、ものづくりができるというのは僕は最強だと思っていて。モノが作れない人はプログラムを作れないから世界も変えられませんが、(みなさんは)モノが作れて、自分の力で変えることができるんですね。こんなにすばらしいことはないんじゃないかなと思っています。
そういう意味で、「エンジニアのこれから」ということで、技術力を持っていろいろな生活や行動をプログラミングの力で変えていくことができます。顔認証なんかも普通になりましたよね。最初は「こんなのできるんだ」と思いましたが、今はまったく普通ですし、スマートホームなどもあります。ブロックチェーンもですね。エストニアが個人の情報を全部ブロックチェーンで管理しているのは有名な話です。
Web3という、メタバースなどが今はやり始めています。『ソードアートオンライン』というアニメがありますが、「ブレインインターフェイス」といって、手でのインプットでもなく、声でのインプットでもなく、脳波でインプットして、アウトプットしてインプットするというアレですよね。これはFacebookがまじめに研究しています。
こういうものがどうやって生まれるのかというと、コンサル会社のガートナー(ガートナー・コンサルティング)ですね。これが毎年、「戦略的テクノロジ・トレンドのトップ10」というものを出しています。(スライドを示して)これは2019年でちょっと古いんですが、「1番、自律的なもの」「2番、拡張アナリティクス」「3番、AI主導」などいろいろと書いてあります。これがテクノロジーのトレンドです。1番から10番まであります。
じゃあこれをどう実現するんだとなると、真ん中に書いてあるIoTデバイス、5G、マシンラーニング、VR、ブロックチェーン、もちろんWebの技術もありますね。それほどすごいことを考えなくてよくて、だいたいこういう要素技術の組み合わせなのですよね。だから要素技術をしっかりと覚えていくのが、エンジニアとしては非常に大切になります。
ということで、みなさんが「イケてるエンジニア」になるためにぜひ大切にしたいことですね。これは当たり前の話ですが、良いコード、良いアーキテクチャを追求しましょう。今日はジュニア層、それからミドル層の方に向けているので、たぶんシニア層の方は「当たり前のこと言うな」と言っていると思いますが、そこはご容赦ください。
「良いコードとはなんでしょう」という話なのですけど。一番よく書かれているもので、たぶん読まれている方がたくさんいると思いますが、『リーダブルコード』ですね。ぜひこれは必ず読んでほしいなと思います。序章は、「美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているか伝わる。そういうコードは使うのが楽しいし、自分のコードもそうあるべきだと思わせてくれる」から始まっているんですね。
(スライドを示して)ここに書いてあるのは抜粋してきています。例えば、適切な命名ですね。それからインデントや美しさ。それから価値のないコメントを書かない。これ、実は適切な命名とすごく関係しています。
採用面接をしていて、よく「なにかこだわりがありますか?」と聞くと、「あります」と。「読みやすいコードを書くのがこだわりです」と言う方がいて、「読みやすいコードってなんですか?」と聞くと、「コメントを書きます」と言うんですよ。コメントだらけのコードなんて想像してください。もう読めたもんじゃないですね(笑)。
コメントは価値があるところは書くべきですが、基本は書かない。その代わりに、関数名や変数名の命名が適切で、きれいに書いてあるというのがやはり見やすく、可読性が高くて良いコードだと思います。
プログラムも言語なので、話すのと同じで「相手」ですよね。相手がどう理解できるかを考えながら作るのが必要になります。それからループやロジック、巨大な式など、複雑性をなるべくなくしましょうという話です。
あと、変数と読みやすさ。それから共通化ですね。汎用コードの分離と言っているのが、「同じところはまとめていきましょう」「短いコードを書く」など。それからテストのことも書いてあって、「テストしやすいコードや読みやすいコードを書きましょう」と。そういうことも書いてあります。
コードのこだわりについてというところなのですが。(スライドを示して)これ、みなさんはパッと見ればもうだいたいプログラムの意味がわかると思います。配列、パラメーターから偶数だけを取り出して2倍に返すという簡単なロジックです。1、2、3、5、8を与えると、2と8が偶数ですから、それを倍にして4、16が返ってくるというロジックです。
これはRubyですよね。左と右を見て、どちらが美しいコードかたぶん察しがつくと思います。つまり、「シンプルで無駄がない」というのが重要かと思っています。
じゃあ「何を学習したらいいんですか?」という話ですが、まず1つは良いコードや良いアーキテクチャは、先ほどの『リーダブルコード』もそうですが、やはりコンピューターサイエンスを必要なところだけでいいので、学習するのが良いのかなと思っています。
さっきのコードでも、マップを使っていましたが、マップを知っているとループの数やIF文が削減できるわけですね。なので、きちんとコンピューターサイエンスみたいなところで、アルゴリズムやコードのあるべきところを勉強するのがいいのかなと思います。
あと、僕が「いいコードとはなんですか?」と聞かれた時によく言っているのが、「捨てやすいコード」です。技術的負債というのは絶対にたまります。今みなさんが書いていてイケてると思っているコードも、3年後に入ってくる新しい人から見るとクソコードかもしれないですよね。
これはしょうがないです。改修してるうちにIF文を追加したり、ドンドン肥大化したり複雑になったりしていくので。やはりビジネスはある程度スピード優先なので、そこに目をつぶらざるを得ない時もけっこうあります。
なので、負債返済をしていかなきゃいけないのですが、その時に返済しやすいかどうかという話ですね。捨てて新しいものに替えられるのかって大事です。クリーンアーキテクチャやドメイン駆動設計などをしっかり学んでいると、捨てやすいコードが書けるんじゃないかなと思います。
コンピューターサイエンスにもうちょっと触れますと、「サイエンス」と呼んでいますが、「プログラミング、アルゴリズム、ハードウェア・ソフトウェア処理といった計算の理論や情報の処理に関する学問」というよりは、それを体系的に整理しているような話ですね。
(スライドを示して)これは下に例があります。オブジェクト指向プログラムであればデザインパターンやソフトウェア解決、リレーショナルデータベース、フレーム枠にはこんなものがあるというのが、こう整理がされています。先ほど言ったアルゴリズムなども載っています。
けっこう幅広いので、機械学習だったり、画像処理だったり、自然言語処理だったり、いろいろありますが、全部を知る必要はなくて、自分が関係するところですよね。プログラム言語についてでもなんでもいいので、そういったものを学ぶと良いのかなと思います。
では、どのように学習するかですね。これもよく聞かれます。「じゃあeラーニングのナントカというサイトにアクセスして、それをイチからやりましょう」という答えを期待されると、そうではなくて。「好奇心駆動で」これだけでいいです。
「なんでだろう」「どうなっているんだろう」「もっと知りたいよ」となると、気になるから調べますよね。調べると、また新しいキーワードが出てくるんですよ。そうすると、そのキーワードも「なんだろう」となる。要はWikipediaを想像すればいいのですが、読んでいるうちに単語がリンクになっていて、押すと飛んでいってさらに……というような。
僕はWikipediaを見出すと、1日でも見てられるなというくらいすごく見てしまいます。とにかくエンジニアには「なんでだろう」「どうなっているんだろう」という好奇心が大事です。なので、「好奇心駆動」でいろいろやるといいと思います。学習ですね。
それには、アウトプットがやはり重要なのですね。インプット、これは学習ですね。書籍、インターネット、勉強会、業務中のOJTなどいろいろあります。それらから得た知識を1回暗黙知にして、さらに形式的にアウトプットするということですね。整理やスライドを作って表現することで、また自分の中で「あ、これ俺わかっていなかったな」という気づきもあります。
アウトプットはなんでもいいです。ブログでもいいですし、発表だとLTでの勉強会でもいいですし、あとは競技系なんてのもあります。いろいろなアウトプットの場があるので、これで知識を共有する。
そこでこのアウトプットを聞いた人がインプットして、「おもしろそうだな、俺もやってみようかな」という気持ちになる。それから、フィードバックをもらう時もありますよね。そうすると、「あ、そういうことなのか」と、さらに自分の理解が深まります。
少しお仕事が忙しくてなかなかLTができないなとか、ブログが書けないなという方も多いとは思うのですが、エンジニアのカルチャーとしてはこのアウトプットってとっても大事です。大事なので、やれる場合はぜひやったほうが良いかなと思います。だいたい以上になります。
関連タグ:
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.11.29
「明日までにお願いできますか?」ちょっとカチンとくる一言 頭がいい人に見える上品な言い方に変えるコツ
2024.12.04
いつも遅刻や自慢話…自分勝手な人にイラっとした時の切り返し 不平等な関係を打開する「相手の期待」を裏切る技
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
2024.12.03
職場の同僚にイライラ…ストレスを最小限に抑える方法 臨床心理士が語る、「いい人でいなきゃ」と自分を追い込むタイプへの処方箋
2024.12.05
「今日こそやろう」と決めたのに…自己嫌悪でイライラする日々を変えるには
PR | 2024.12.04
攻撃者はVPNを狙っている ゼロトラストならランサムウェア攻撃を防げる理由と仕組み