#054 上級ジョブ、ソフトウェアアーキテクトに求められるスキル

2022/7/6 ·

  • ノリさんソフトウェアアーキテクトの仕事ってなんだか知ってますか?仕事?仕事?あのーずっと紙にクラス図書くめちゃめちゃアナログな仕事するんですよていうか周りに



  • アーキテクト専門の人がいないそうですよね非常にふわっとしてる状況範囲だと思うんですけどまず確認だけど幻じゃないよね幻?架空の存在じゃないよねユニコーンみたいないやーどうなんでしょうねちょっとまだ会ったことないんですよね僕ちなみに



  • ギリあるかな今うちのチームにいますいるんかいギリギリの人がギリギリそうと言っていいギリギリの人がいるのそれでも随分すごいけどねっていうのもですねやっぱふわっとしてるしソフトウェアアーキテクっていうのはソフトウェアアーキテクチャー考える人っていうざっくりそうなんですけどいわゆる多分中級寄りの仕事なんじゃないかともう中級どころか



  • 上級かもしれない中上あたりそうだよね一人称で仕事ができるようになってふわっとしたタスクを受けれるようになった後のプロジェクト単位でふわっとした仕事を受け取って具体化できる人ほう



  • だと思うんですけどそういうことか3ヶ月ほど前にソフトウェアアーキテクチャの基礎っていう本がオライリーから出て出た派手な鳥みたいなラッコみたいな動物のやつねなんだかわかんないですけどね鳥だな多分鳥っぽいですねこの本ちょっと話題になったと思うんですよ僕はツイッターでなんかちょくちょく買いましたみたいなのを見ましたねそうそうそう



  • それ見て僕も買いましたちょうど僕も林道会やってるんですけどただこの本を読むまでソフトウェアアーキテクチャって何なんていうのがちょっとふわっとしたんですけど途中まで読み進めてああこういうことねっていうのが僕なりに分かったとついについに来た分かりましたなのでこの本ってすごい話題になってるけどこれ読んだ方がいいのかどうなんかって思ってる人結構いると思うんで



  • まずそんなあなたにこの本読むべきかどうかの判断できる情報を与えます助かります僕もまだ買ったはいいものの1ページしか読んでないんでそうですよね結構鈍器なんですよねこの本そうだよねそこそこ分厚いよね436ページでございます大型本の初級だそうなんですねで



  • あともう一つソフトウェアアーキテクトがどんだけの仕事をしてるかっていうところの理解をしてもらいますなるほどそういう触手にも触れてるんですね触れてますはいはいはいはい



  • という話をさせてくださいお願いしますこれはソフトウェアアーキテクチャの基礎という本を読んだカイチが解釈した内容なのでその過程でちょっとねじ曲がっていることがあるかもしれないので正確な情報を知りたい人は本を読んでくださいあとあれだよねこういうふわっとした職業って会社によって多分ちょっとずつ違うんでしょうねそれはそうでしょうねなので一時情報を大事にふわっと聞いてくださいという感じですねわかりましたはい



  • じゃあまず最初にまずソフトウェアアーキテクチャとはっていうところの話なんですけど要するにソフトウェアアーキテクトがどういう仕事をするかっていうのにイコールですですね何をすると思いますかうわーちょっとね当てちゃっていいですか当ててくださいソフトウェアの構造を作る人です構造とは何かっていうと多分ですけどアプリケーション周りの



  • クラス設計とかインターフェース設計あたりになるんじゃないかなと思ってます正解ですよねありがとうございます早いですファイナルアンサーですかファイナルアンサーです20点取り始めたわっか取り始めたわっかだから



  • 元気出して20点20点か20点っていう気持ちは全業のうちの2割ぐらいだろうという意味でなるほどねそんなにあるんですねやることまず僕の元から思ってたワードで言っちゃうとソフトウェアアーキテクチャーのうちソフトウェアアーキテクトをする業務が4割ぐらいですそういうことはい



  • うわぁ引っ掛け問題じゃんでもそうらしいんですよね本書ではまずそもそも定義できんと言ってるんですけどうわぁ引っ掛け問題じゃんでもそんな中頑張って定義してますとそのうち一つは先ほどのりさんが言ってたソフトウェアのアーキテクチャを考える部分クラスだったり例えばどうしようかなE…



  • Eコマースのサービス考えようと思った時にフロントだけ考えるんじゃなくてフロントとバックエンドとDBいるわとかそのDB何台にするかとかどういう情報性を取るかっていうところから考えるのもそうですし



  • であとはそれに落とし込む前のお客さんから要望を聞くっていうところも業務だしなるほどねでそれを要望を受け取ってこういうアーキテクチャにしたいんですけど予算的にどうですかねっていうのを上司に伺い立てるのも仕事だしはいはいはい見えてきたな上流工程よりの間違えたえーと



  • 技術寄りの上流工程みたいな感じまさしくその通り結構一言で言うとエンジニアリングマネージャーっぽいなっていうのが僕の印象ですなんでそういう周りとの接触だったりあとはチームをマネジメントまでいかないですけどリードするタスクを振らなきゃいけないので



  • そういうなんかいろんなメンバーとうまくやるとかそういったいろいろなものを込み込みで全部ソフトウェアアーキテクチャの仕事なんですうわースーパーマンじゃんスーパーマンです結構はいで結構スーパーマンらしいんですよはいはいはいで定義仕事ができない仕事を定義できないってこの本が言ってた意図としてはうんうん



  • めちゃめちゃ目まぐるしくやらなきゃいけない仕事が変わるとというとちょっと前まではCICDってなかったんですよなるほどねそうですDevOpsとかはなかったんですよでも今はそこまで考えなきゃいけないとそのDevOpsとかCICDって今までで言うソフトウェアアーキテクトの範囲ではないと思うんですよ運用の方なんでっていう意味で色々なものが変わるとだから定義できないんですよとなるほどねそう



  • っていう風なことを言ってましたその中でもソフトウェアアーキテクチャの結構アーキテクト部分で言うとざっくり3つ1つが非機能要件非機能要件を考える補足をするとユーザーを作れるみたいなのが機能要件として非機能要件は1週間のうち



  • 何時間やべえ1日平均20時間以上動作するみたいなあーはいはいはいとかあれだよねまあ分かりやすいなとスピードとかもじゃないスピードもですね何秒でページ開けるとか何人まで捌けるとかそうですそうですなんで非機能要件機能ではない要件だからかそのままですねそうですね



  • でもう一つがアーキテクチャ決定ってこの本で言ってるんですけどいろいろなアーキテクチャパターンってあるんですよレイヤードアーキテクチャとかマイクロサービスアーキテクチャとかちょっとワードだけにしますけどその辺のいろいろなアーキテクチャってそれぞれいいところと悪いところがあると何を重視するんじゃ要請重視するのかえー



  • 保守性とか保守性を実施するのかとかもしくはシンプルにして予算を抑えるのかとかその辺のどれを重視するかを決めてどういうアーキテクチャにするかを決めるのが2つ目ですね3つ目はめちゃめちゃちょっと被っちゃったんですけどうちのシステムは何を重要視して作っていきますみたいな例えば各システムが非同期にエリトリをしてパフォーマンスを向上させるのを重視するシステムとしますみたいなそういうふわっとしたガイドラインを定める



  • こっちにこの船進むぞってチームに示すっていうんですかねそういうのがソフトウェアをアーキテクトする仕事の3つの大きなことらしいですじゃあ逆にさ機能要件は別にそこの対象範囲じゃないんだ機能要件はコミュニケーションをとっていわば決まるじゃないですかそういうこと?それは当たり前に決まっていくから



  • そこをほっといても決まらないところをソフトウェアアーキテクトが決めてったよっていう感じなのかなそういう意味で言うと機能に整理するのはもちろんやりますやるんですがそれは結局どういうアーキテクチャにするかから多分落とし込んでいくものなんですよね具体的にどういう処理をするとかって多分作りによって変わったりとかすると思うので



  • 大きな構造を作った上でその先の作業としてありますねなるほどそこまでもちろんソフトウェアアーキテクチャの仕事ですただ難しいのは具体的な作り込みとかあとはそうですねAPIサーバーの中身をどうするかみたいなのは各開発者に任せようという



  • 書き込みというかそういう記載がありましたねだからいわゆるクラス設計とかは開発者の仕事なのかもしれません



  • そうだよねなんかあったわそんなのどっかでどっかの本でエンジニアに仕事を依頼するときはどうやって作るかじゃなくて何を作るかだけ伝えると何をやりたいかだけ伝えてあとの細かい部分はエンジニアの創意工夫を発揮してもらった方がモチベーションも上がるしいいもんできるよねって何かの本で言ってました似たようなことが書いてますはいはいはい



  • ちょっと具体的な細かいものを忘れちゃったんですけどそのための指針だけ与えるんですよ自動機メッセージでどうなのとかあとこういう技術使って可用性を上げるようなとか拡張性を持たせるようなみたいなのはっていうような話をしてたんですよなるほどねなのでソフトウェアアーキテクチャの仕事としては周りのいろいろなセッションプラスアーキテクチャの指針を考えるおおー



  • なりてーかっけーやんかかっこいいなかなかただ性格が関係ありそうだなと思っててソフトウェアアーキテクトになりたいと思うじゃないですかかっけーと思ったっすよねなったわかんないですなったかどうかソフトウェアアーキテクトに必要とされる力っていうのがあるんですよここで絶望したくない大丈夫ですそれは多分



  • これもざっくり言うとエンジニアリングマネージャーに求められるスキルセットだなと感じました僕はエンジニアリングマネージャーと同じほぼっていうのも薄く広く技術知識がいるらしいです薄広なんだ詳しく知っている使えるのが重要なんじゃなくて無知の知の範囲を広げようと



  • なるほどね細かい部分はさっき言った技術者に切り落としていこう切り落としていこうお任せというか切り分けてやってもらおうとアーキテクチャを選定する上でこういう技術があってこの技術の良いとこと悪いとこはこれだから今回使いそうだ



  • まで求められればOK実際にそれを使ってどうとか検証とかプロトタイプとかは開発者の仕事だと要はまず薄く広くいろんなものに興味を持っていろんなものに触れてるっていう経験が一つ大事これもめちゃめちゃ数が多いのでギュッとしちゃうんですけどさっきの話に関連して新しいトレンドを把握し続けられるキャッチアップ力キャッチアップ力



  • キャッチアップ力あとアーキテクチャ決定力アーキテクチャ決定力確かにこれだって言えるしかもあれだよね多分一番これがいいんだよじゃなくてこのプロジェクトだったらこれだよっていう選択肢をちゃんと正しく選べる感じよねそうですこのアーキテクチャ保守しづらいけど今回のプロジェクトにはこっちのが合ってるよみたいなトレードオフが選択できるというかそうです



  • 3つ目政治力ですね政治力政治力っていうのはちょっとふわっとしてるんですけど対人的に良好な関係を持って進められるとかあとは自分がやりたいことを相手がなんか



  • 納得できるように説明して推し進められる力なのでざっくり言うと広く浅い知識広く浅い知識かつ最新キャッチアップ2つ目は決定力3つ目は周りとうまくやって物事をいい感じに進められる力はいはい



  • がソフトウェアアーキテクトに期待されてるらしいですサッカー選手みたいだねサッカー選手そうなんだ政治力いるんかないらないか必要そうですけどねいいチームいくのも政治な気しますけど社会人というか



  • 管理者というか偉くなる上では大事な力だなって気しますよねそうねこれどの本でも結局言われてるよねそりゃそうっすよね達人プログラマーにもあったような気がするソフトスキルズはこれ盛りだくさんだったような気もするしそうですねまさしくまさしくっていうので



  • キャリアパスとしてもここ通らなきゃいけないわけじゃないと思っててエンジニアって多分2種類に分かれていくんですよねエンジニアやっててそのプロダクトを作るのがとにかく上手い人いわゆるプログラマー路線が一つともう一つがこういう上流に行くっていうんですかねソフトウェアアーキテクチャー路線なのかなぁ



  • そうだねCTOとかって多分そういうこと?今聞いてて本当にCTOとかその辺はソフトウェアアーキテクトなんじゃないかなって思ったわ多分物を作る中のソフトウェアエンジニアリングっていう範囲でこいつより上流いないですよね多分いないかもこれより上は社長社長はもう要望出す人



  • なはずなんでそうだね設計に携わっていく上では一番上の部分かもですよねソフトウェアをエンジニアリングするっていう意味で言うと多分これが一番上なんですね上っていうのは偉いとかじゃなくて上流的な意味でね本当に多分この人にかかってるんですよこのソフトウェアが長く生きれるかどうか確かにねさっき言ったスキルのなんか広く浅いやつもキャッチアップしっかりしてないと広く浅くなんないよねなんないうん



  • なかなか難しいですけどねずっと勉強し続ける人じゃないと結構厳しいよねそうですねずっと勉強本当に勉強だと思ってないんでしょうけどね遊んでる人なんでしょうねこれ使ってみようってこれ楽しそうじゃんこれみたいなそうそうそうそう



  • ざっくり多分これソフトウェアアーキテクトって何なんていうのはちょっと分かっていただけたと思うんですよ雰囲気雰囲気分かりましたですよねじゃあ2個目のテーマとしてこの本読んだ方がいいのかっていうところの話を軽く最後にするんですけどなんでソフトウェアアーキテクチャの業務に携わるというかやりうるなという人は読むべきだと思うんですよどういう内容が書いてたかっていうと



  • まず大きく参照構成になってて1章にソフトウェアアーキテクチャとはっていう僕がさっき話したことをもっと詳しくちゃんと書いてるのがあります2つ目にソフトウェアアーキテクチャのパターン



  • パターンあるの?一通りマイクロサービスとか本当に体系的に知れるこれがメインですねこの本のそこがメインなんだこれよかったこれがメインでそれぞれのメリットデメリットが書いてますちょっと言い忘れちゃったんですけどソフトウェアアーキテクチャの選択するわけじゃないですか選択する上で重要なのは一番いいのを選ぶんじゃないと



  • 一番悪くないやつを選ぶと悪くないでしょ悪くない?デメリットがないやつを選べとそうですなぜならトレードオフだから一番いいやつは何かしらの毒を持ってるわけだそうですね一番いいものはまずないと何選んでも何かが悪いんですよあーはいはい



  • っていうのでこれはまあ最悪じゃないかなっていうのを選ぶのが大事ですよっていう風に書いてましたねへーまあなんか気楽にいこうぜってことなんですかねいやどうだろうな一番最悪じゃないやつを選ぶにしてもやっぱりデメリットの少なさで選んでるっていうイメージそうですね本当にそういうことだと思いますまあなんでその



  • 選択がやっぱあるのでそれをまず体系的に知れるんですよこの本を読むとバーって一覧書いてるんでね本当に流行りですからねマイクロサービスアーキテクチャとかねそうねなんか最近聞くよねちょっとマイクロサービスアーキテクチャがちょっと前に流行ってさそれをこぞっていろんな企業が導入したけど保守大変すぎて今困ってますっていうのを結構聞きますねそうなんですね保守も大変でしょうしそれ以外にもデメリットがあるって話も書いてますそうなんだそれが知れるのが人



  • 2章3章がソフトウェアアーキテクトのアーキテクチャ以外の仕事について書いてますチームの作り方とか政治とかアーキテクチャの決定力とかなのでその辺勉強したいなという人はドンキーですが読むといいかなといいねちょっとめっちゃ今読む欲高まりましたじゃあ読んでたらいいかもしれないこれだってなった今俺の今キャリアパス決まりましたソフトウェアアーキテクトに俺はなるほほほほ



  • 人生変えた読んでないのにこれはねいい本なのではないかとは個人的に思いますがちょっと初級だとピンとこないと思いますムズめではあるムズいですねムズいというか読んでも何に活かすんじゃとは思いますね多分仕事に



  • 紐づかないとなかなかね身にならないあとオライリーは結構やっぱ最初むずい印象はあるわそうなんですね本によると思ってます本によるか優しいものは優しくないですかっていうのが今日のソフトウェアアーキテクチャの基礎の基礎っていうお話でしたなるほど



  • これを絶対読もうと思いましたなんだ俺1ページで止めちゃったんだろうじゃあこれから読んでくださいこれから読まないとこれ皆さんもソフトウェアアーキテクト目指してもいいんじゃないでしょうかいや目指しましょうよやるならやっぱねこれぐらい上流やってみたい人がいっぱいいるでしょ絶対そうですねあとこれを理解した上で作るとねまた進め方も変わりますよ



  • 単純に役職名がソフトウェアアーキテクトじゃないにしてもこのスキルが役立つポジションはめっちゃありそうな気がするめっちゃあるIPAの上位資格もありますよね確かソフトウェアアーキテクトってアプリケーションなんとかってありますねいやーごめんこれね資格実はそんなに詳しくないんだシステムアーキテクト試験あるんですよねいわばIPAの上位資格が行き着く先なのかもしれないですね



  • それぞれ体系的に整理してくれてるのかもしれない勉強になりましたね今日も勉強になった僕もアウトプットできて勉強になったこれから勉強していくとこれを読んでそれでは素敵なアーキテクトを目指してそうしましょう頑張っていきましょうそれではまた来週次回でした



  • イマジンプログラマーではメールを募集していますトークテーマ、悩み、要望などなど何でも募集中です宛先はそれではまた次回

0:00 21:20

#054 上級ジョブ、ソフトウェアアーキテクトに求められるスキル