見出し画像

ソフトウェアエンジニアとして過ごした20代を振り返る。


2022年の年末であり、20代もあと少しで終わってしまうので
たまには自分語りの記事を書いてみようと思います。

概要


自分がプログラムを書くようになり、スタートアップで働き始めるまでの5、6年を一度振り返って備忘録を書いてみようと思います。

note記事は今年から書き始めて、たまに各程度でしたが10記事くらい自分の考えを書くことができました。
内容が同じところはそれらの記事を参照しつつ、
これからもソフトウェアエンジニアを続ける上で大切にしたいことについて自由に書いてみようと思います。


私のエンジニア遍歴


私はアメリカの大学院で物理工学を勉強した後、
日本に帰国して少し転々とした後、スタートアップのエンジニアとして働き始めました。
それから早くも5年ほどの月日が経ち、自分の20代でのキャリアはエンジニアとしての活動をした時間となりました。
自分で自分がやってきたことを書くのは恥ずかしいですが、

  • 大学院時代

  • インターン時代

  • 社会人時代

とプログラマーとしてはこんな感じで時系列を分解できそうです。
全体で6年くらいですが、この6年間は非常に楽しく、楽しいのと同時にあっという間に過ぎ去ったような気がします。いろんなことにチャレンジしたりイベントに参加したり、たくさんの技術に触れて自分が作りたいものを作ったり記事を書いて発信してみたり。これといって何か成し遂げてもいないただのしがないエンジニアですが、そんな自分がこの20代のエンジニアとしてがんばれたことやもっとこうしたかったことなどを気の向くままに書いてみようかなと思います。

大学院時代

大学院時代に始めたプログラミング

私は大学時代(九州の公立大学に在籍していました)、物理を専攻しており、学部の時の興味は理論物理に依っていました。
プログラミングについてはやったことはありませんでしたし、少しだけ就活をやったときも自分が何をしたいのかということは全くわかっておらず、なんとなくかっこいいと思っていた企業や、アナウンサー職などを受けていました。
途中でそれらの仕事が本当にしたいことだったのかがわからなくなり、大学院で勉強を続けることに決めました。
また、学部時代に留学を経験したのがきっかけでまた海外で研究を行いたいという思いから、アメリカのニューヨーク州立大学へと進学しました。
大学院ではたくさんのことを学び、3年半ほどで学業としても人間としてもたくさんの成長をさせてもらったなと今ではそう回想しています。
1年目はほとんどが座学やPh.Dのためのテストに合格するための大量の課題や勉強をする時間に費やされ非常に大変な一年でした。
海外留学をしたことがある人はなんとなく理解できると思いますが、英語がネイティブレベルでできない場合海外では自分の能力が4割減くらいに感じることがほとんどです。座学での学業もそうですし、周りの学生とのディスカッションや寮やシェアハウスでのコミュニケーション、日常生活のシステムの違いなど様々なところで苦労がありました。学生の時にそのような環境の中で生活できたことは自分に見えない忍耐力を与えてくれたような気がしています。年齢を重ねるに連れて、あの時のように後先を考えずに海外に数年間飛び出すことへのハードルが上がったと感じています。いつからでもまた現環境を飛び出すことは可能だということを証明したい気持ちもありつつ、学生の時に経験できるものなら海外での生活も体験するべきではないかというのが私の意見です。
脱線しましたが、アメリカでの2年目からはブルックヘブン研究所という大きな加速器のある研究所にRAとして配属が決定し、座学中心の研究もさることながら、世界でも有数の実験テーマについて理解し、それらの結果がどのように物理の発展につながっているのか、
実際の実験器具をどうあつかうかやそれらに対するオペレーションのやり方について学びました。
また、実験データの解析も自分が担当する大きな分野の一つとなり、Matlabなどを使って簡単なプログラムを書いてみたり、Pythonを初めて使って簡単なグラフを作成したりしたのもこの頃でした。


プログラミングの開始と帰国


アメリカでの大学院生活を経るにつれて、大きく二つの研究タスクを実行していました。

  •  実験器具などのデザインや、性能を良くするためのシミュレーションなど、工学的な仕事

  • 実験データについて分析を行うデータサイエンティスト的な仕事

それらを1年半ほど行うにつれて、2つ目のデータサイエンティスト的な仕事の方が楽しく、これについてもう少し掘り下げていきたいなと考え始めたのが、24歳くらいだったと思います。それに伴い、必然的にプログラミングについて興味を持つようになりました。
MatlabやMathematica といった数値解析を行うツールを主に使っており、そのほかにもプログラム全般についてもっと学習できればいいなと思い、空いた時間でTechAcademyなどを使った学習を始めてみました。
html やcss など、全くわからない状態からなんとか最後の成果物のアニメの口コミを紹介するウェブサイトを構築したのはいい思い出です。

さらに半年くらいの時間が過ぎ、Ph.Dをこのまま取得するために研究所に残るかどうか悩みました。気持ちとしてはIT関連の企業に一旦勤めてみて、もっとプログラミングについて学んでいろんなものを作ってみたいという思いが強くなっていました。その一方で、せっかくアメリカの大学院で頑張っているのだから、あと2、3年アメリカに残ってPh.Dを取得するのも正解だろうと考え、どちらが自分にとっていいのか、どちらをやりたいのか考えた後、IT関連の仕事をやってみたいという結論になり、物理については修士号をもらう形で研究所から去ることにしました。
アメリカで日本の企業から一応内定ももらい、東京にいって4月から働くことに決め、アメリカでの生活は一旦終わらせることにしました。この3年半は本当にかけがえのない時間だったな、と今思い返せば懐かしいです。


インターン時代

インターンとしての10ヶ月間


卒業が6月中旬くらいに済み、7月くらいから内定をもらったところで始業する4月までの10ヶ月程度の期間がポカンと空いていました。
何をやってもいい期間ではあったのですが、やはり自分の中でプログラミングについてもかなりの初心者でしたし、少しでもどこかでインターンをして技術を学びたいと考え、東京の企業でインターンを行うことにしました。
縁がありとある工場の異常検知プロダクトを開発されているベンチャー企業でインターンをさせていただくことになりました。今思えば、最初の頃はまったく知識がない状態で受け入れていただき、周りのエンジニアの方に迷惑しかかけていなかったと思いますが、自分が担当することになったプロダクトの改良のタスクを、自分ができる範囲で全力でやりました。
プロダクト自体はAngular で構築されており、コードベース自体はそこそこ大きかったため、まずは全体像を理解して、どこがどうつながっているのかなどを書き出し、自分が修正したいところはどこを変更すればいいのかといったところから開始しました。最終的に2ヶ月くらいその会社にはお世話になり、一旦その期間をもってインターンとしては終了することになりました。あの時の自分のスキルで2ヶ月も受け入れていただいたことについて、本当に申し訳なかったなと思います。また、感謝しかないなと感じています。その会社は最近上場されたというニュースを目にし、嬉しい気持ちになりました。

2社目のインターンとして、今所属しているEAGLYS株式会社にお世話になることになりました。きっかけはアメリカ時代に知り合っていた日本人の友達が、夏だけ一時帰国してこの会社でインターンをやっており、やってみたら?と誘ってもらったのがきっかけでした。
インターンを開始する前に代表の今林さんとカフェで簡単な面談を行ってもらいました。今思えばなぜ自分のスキルセットでインターンとして受け入れていただいたのかわかりませんでしたが、おそらく誘ってくれたエンジニアがコンピュータサイエンス専攻で、インターンとしても活躍していたため私も期待されて受け入れていただいたんだろうなと思います。
1社目のインターンと違って、このときは本当に小さな創業初期段階の会社規模でした。
インターン開始時は渋谷の道玄坂にあるマンションの一室がオフィスで、社員の2、3人の方と、インターンや業務委託の方が目まぐるしく入れ替わっていました。
その時インターンは5人くらいいて、私はインターンしかやることがなかったので週5で出勤、他のインターンの方は大学生で週2、3くらいの出勤、といった感じでした。

尊敬できるエンジニアの方との出会い


この二社目のインターンで本当に多くのことを学ぶことになったのですが、一番は自分のロールモデルになれるような方が周りにいたということだったと思います。
まず、スキルレベルが低かった自分に対して、インターンの中でも一番優秀なエンジニアの方(自分より3つくらい年下の人でした)が、とても熱心に教えてくれました。

彼は学部生でありながらいろんなことを知っており、また、自分のような経験のないエンジニアに対してもめんどくさがることなく(見捨てることなく、笑)いろいろと教えてくれました。とても印象的だったのは、私が「API」という言葉について知らなかった時に彼に質問したのですが、その時彼は、「HTTP」って知ってる?と言いながらそもそもどう私たちがブラウザを介してウェブサイトを見ているのか、というところから順序立てて説明してくれたことです。
また、Dockerの使い方など全くわかっていなかった自分でしたが、コマンドの意味について、オプションのひとつひとつ丁寧に教えてくれました。最初の頃というのは何気なくコピーしてコマンドを使っていることが多く、ひとつひとつのオプションについてこれほど理解しながら使わなければいけないのか、と気付かされました。また、コマンドは絶対に覚えた方がいいし、そのためには理解しながら手で何回も入力した方がいいよ、と言われ、それらの習慣を続けることで少しずつコマンドについても理解が進み、自分が何をやっているのかを把握することができるようになってきました。

Giveできるエンジニア


私エンジニア5年目となった今でも、彼のような熱心に教えてくれるエンジニア、というのは目指すエンジニア像として残っています。私はこれを「Giveできるエンジニア」と勝手に呼んでいます。このGive できるエンジニアになるというのを自分のフィロソフィーとしてこれからも持っていきたいと思っています。
例えば誰かがバグで詰まっているとき、顧客から質問が飛んできたときなど、まず聞いてみようと思う対象が自分になってくれたら嬉しいですし、そういう信頼みたいなのを気づいていけるエンジニアとしてのキャリアにしていきたいと思っています。
繰り返しになりますが、そのようなロールモデルとなったエンジニアは自分よりも年下の方でしたし、年齢が上だから経験が多いということが一概に言えないのがプログラミングの世界ではより顕著です。
インターンにあの時行っていなければ出会えていませんでしたし、自分の中に今のロールモデルを置くことは出来ていませんでした。結果として今の私はいなかったと思います。
あの時インターンに行ったから今大事にできている「Giveできるエンジニア」という理想像は、20代を終える今少しだけ達成できたという気もしています。準同型暗号というとてもニッチな領域かつ40名弱の小さな組織の中では、自分が比較的長く研究開発に携わっていたという理由からエンジニアや事業開発、営業の方から信頼を受けていると感じるタイミングもあります。その際に自分がGiveできているか、ということをもっと考えて行きたいと思います。そして、30代になってもこの理想像はずっと持って行きたいと思います。

インターン時代に出会った他のインターンのメンバーは、基本的に私より1〜5個も年下の方達だったにもかかわらず非常に優秀な方たちばかりでした。私がどうしてもわからなかったバグを数分で突き止めたり、Pythonを書いたことがないと言いながらもともとのプログラミングの基礎があるために難なく習得していたり、GCPなどのクラウドインフラについていろいろなことを知っていたり。
彼らの技術力の高さと、インターンをまだ学部生の段階でやっていることへのチャレンジ精神など、自分は彼らから1からいろんなことを学ぶ気持ちでがむしゃらに勉強していました。
また、ご飯を一緒に食べたり時には飲みに行ったり、技術書を買いに渋谷の本屋に行ったり、オフィスで夜遅くまでいろんなことを話したり、今は彼らも別々の就職先を選んで毎日顔を合わせてはいませんが、今でも大切な友達として連絡を取り時には集まることができています。
そのようなつながりができたということ、当時インターンに誘ってくれた友達や、受け入れてくださった経営陣の方には感謝しかありません。


社会人時代


秘密計算について研究、プロダクト開発


このようなインターン経験を経て、私は今所属しているEAGLYS 株式会社に入社することを決意しました。
インターンの前半の期間はAIプロジェクトの一つに関わり、ビッグデータのクラスタリングの手法の一つであるpq クラスタリングの実装に主に取り組みました。またそのプロジェクトはレコメンドモデルや、テキストに適切なタグをつけるようなモデルの構築案件だったため、レコメンドエンジンや自然言語処理の基礎を実践的に学んだ期間でした。
後半の期間は、秘密計算というものを初めて知り、そもそも何ができるのか、どんなユースケースがあるのか、自分達がプロダクトを作るとすればなにがか考えられるのかをその時在籍していたエンジニアの方とディスカッションしていました。
検索可能暗号という言葉を初めて耳にし、データベースの中身を暗号化したまま検索できるようなプロダクトはどうかとか、暗号化を施したデータに対してレコメンドができたらすごいよねみたいな議論をしました。自分自身全く暗号について知識がなかったため、関連論文の調査から始めることにしました。
物理をやっていた時から、数学系の難解な論文を読むことは日常的に行っていましたが、それがあまり向いていないと思っていたから研究の道に行かなかったこともあり、まさか半年後にはまた前のように自分が普通に論文を読み漁るとは想像していませんでした。しかしながら同時に、自分は論文を読むこと自体に苦手意識がないこと、まわりのエンジニアの人に比べて数学の前提知識はあるということ、を徐々に理解していきました。

これは今に至るまでゆっくりと自己理解してきたことなのですが、論文(特に暗号関連の数学が難しいもの)を読みそれについて「ある程度」理解した段階で実装できたり、実装をしているライブラリについて理解して何か動くものを作ってみるということはあまり多くの人はできないということでした。また、営業の方と話したりお客さんと話したり、インターンの方と一緒に仕事をしたり、会社に入ってからバランス感覚がよくてオールラウンダーだよね、と言って頂いたことがありました。
大学院で物理をやっていたときには周りは理論に突き抜けた人ばかりで自分のある種突き抜けることのできない才能のなさ、または才能なんて考えずに好きだから理論をずっとやりたいと没頭している周りの学生に比べて、自分の熱意のなさに悩んだ時期がありました。
インターン時代や社会人になってからもプログラマーとしてプログラミングの能力があるひとはいくらでも自分よりできる人がいるということを身をもって知り、勉強することばかりだなあと思いながら自分は何ができるんだろうと自問自答する毎日でした。
今も自分よりできる人はいくらでもいるし、その人たちから毎日学ばないといけないという考えは変わっていません。しかし、自分が理論から実装までバランスよくカバーできるということはこれからも大事にするべきだと感じることができるようになりました。
理論をやっている研究者は必ずしもプログラマーとして知識があるわけでもないですし、お客さんと話してどのような機能が望まれているのかを理解したり、カスタマーサポートとしてのエラー対処がうまいわけでもありません。
このような一連のことをバランスよくやることそれも一つの道なんだと考え、それらを一生懸命できることが自分はできるということがなんとなくわかりました。また、それをやるという点でスタートアップ企業はよい環境でした。いろんな業務について自分で壁を作らなければ経験できる土壌がスタートアップにはあるからです。逆に取れば、その分針のように尖った専門性は磨きにくいとも思います。例えば大企業のエンジニアであれば、モバイル開発に特化したりサービス開発のCICDに特化したりしやすいからです。これは何がいいかということはこれから何回もたぶんいうように個人の好みやライフステージによって何を選んでも正解でしょう。その上で私の今の性格と今のライフステージにとっては、スタートアップでいろんなことを経験するということを楽しめた20代だったと思いますし、後悔はありません。

繰り返しになりますが大企業にしろスタートアップにしろそれぞれの良い点悪い点があるのは当たり前で、それについては正解はなく人生のステージでどちらがいいかというのは変わっていくものでしょう。これは自分も年齢を重ねるにつれてその都度考えが変わっていくと思うのでその都度アップデートしていきたいと考えています。現時点での考えとしては以下の記事にまとめています。

https://note.com/kenmaro/n/n9064ab0321d0

少し脱線しましたが、秘密計算という知識を吸収し、データベース向けの製品と暗号化AIという製品についてぼやっと方向性が決まり、私はどちらについてもどのような機能があるといいかなどを考えそれを実装するような日々が始まりました。
途中から自分は暗号化AIの方を主に担当するようになり、インターン時代ディスカッションを一緒に行っていたエンジニアの方がデータベース向けの製品を担当しています。秘密計算という、データを安全に(機密情報を開示することなく)活用する技術には様々なアプローチがあります。
そのなかでも自分が1番取り組んでいる準同型暗号という技術をベースにプロダクトを開発する上でネックとなるのは、暗号化した後の計算に時間が非常にかかることです。社会実装を行う際にスピードを犠牲にしてまでプライバシーを守るようなユースケースがまだあまりないのです。

そんな中、この数年を通じていろいろなライブラリによってソフトウェアの領域で高速化が図られたりハードウェアの開発が今主流になり、暗号計算特化型のハードウェアによる高速化が研究開発されています。
まだ色々と課題のある技術ですが、暗号化したまま計算できるのはおもしろいですね、こういうことがこの業界でできるかも、というような声を聞く機会も増えました。
自分たちのプロダクトはまだ核となるユーザーを見つけれてはいないですが、これからもユースケース創出と研究開発で世の中のデータが暗号状態で連携され、個人情報を開示することなく分析が可能な未来が待っていればいいなと思います。

特許や論文


プロダクト開発の一環で特許取得も行うことができた20代でした。自分が主となって開発している暗号AI(GateAIという製品)が持つ既存AIモデルの秘密計算化コンパイル機能についてや、畳み込み演算を暗号状態で行う時の高速化アルゴリズム、秘密計算を用いて画像処理を行う時のUIの特許などの取得に貢献することができました。
自分達で考えたアイディアが実際にプロダクトとなり、知財としても登録されたことは嬉しかったですし、やってきてよかったなあと感じています。

論文執筆にも取り組みました。暗号状態でニューラルネットモデルを学習する時の高速化手法や実装上の工夫について国際学会WAHCへの投稿にチャレンジしました。このアルゴリズムは当時なるべく暗号状態の乗算回数を抑えながら学習の実行ができないか模索しており、その時のインターンの方と一緒にホワイトボードに書きながら考案したものでした。かなりニッチな内容だったのですが世の中にはないアイディアだったのでぜひ論文化したいと考え、自分が率先して論文の執筆を行いました。
結果としてアイディアが実装に寄り過ぎていたことや、根本の学習を可能にするためのブレイクスルーとなるアイディアではなかったこと、あとは単なる自分の論文を書く実力不足で落選となりました。
非常に悔しかったですが、その論文はその後アーカイブに投稿しました。私が論文としてアーカイブでもいいので投稿をすることに拘った理由は、自分達があの時ホワイトボードの前で議論し考え出したアイディアは必ず価値があり、もしニューラルネットを学習できるくらい暗号の性能が上がった時は使われる可能性のあるアルゴリズムだと考えたからです。それに加えて、あのとき数人で熱中して考案したアイディアについて、その時グループの中で唯一社員だった私が論文として投稿することで、当時のインターンのメンバーにも恩返ししたかったからです。結果として、その論文は少ないですが5回くらい他の論文からリファレンスされており、詳しい人からは論文読んだよ、と言っていただけたこともあったため、本当にあの時投稿してよかったと感じています。

秘密計算をテーマにした実装コンペティションにも参加しました。IDASHと呼ばれるそのコンペティションは、秘密計算をテーマにお題がだされ、それを2ヶ月くらいかけて実装して速度や精度を競う秘密計算版Kaggleのようなものです。私たちはIDASH2021に数名で参加しました。周りは準同型暗号を研究している大学機関や世界でも有名なスタートアップのチームであり、非常に混戦となりました。私たちは最終的には賞をもらうことはできませんでした。しかしながら、この大会においてもいい経験をさせてもらい、出たことに後悔はありません。


コンピュータビジョンの領域で始めたサイドプロジェクト


エンジニアとして働き始めて1年が経ち、2年目に突入した時から副業としてもう一つのスタートアップにも関わるようになりました。
その会社はARグラスを開発しているスタートアップで、私はSLAM (Simultaneous localizing and mapping)と呼ばれる自己位置推定のアルゴリズムの実装を担当するべく研究開発を行いました。SLAMは掃除機のルンバも使っているコンピュータビジョンの技術のことで、カメラで見た景色を元に地図を作り自分が今その地図上のどこに位置しているのかをリアルタイムで検出するための技術です。
とても面白い領域でありながら、実装上の課題も多い技術だと感じています。プログラムとしてはいろいろな機能が同時にリアルタイムで実行されながらシンクロする必要があるため非常に難易度が高いです。コミュニティとしてもあまりオープンでメンテナンスがされているレポジトリが存在しておらず、存在していても数年前のものが多かったりメンテナンスされていないものが多過ぎて動くものを作ることに苦労しました。
私はまずはレポジトリについて調査した後、アンドロイド端末でそれらを走らせるためにビルドしたり実証実験に必要な追加機能の実装などを行いました。アンドロイドの開発に携わるのも初めてでしたしエンジン自体はC++を用いてそれをアンドロイド上で動かすためのビルドを行うのに非常に苦労しましたが、周りの方にも助けられなんとかやり通すことができました。
エンジニアという仕事に限らないと思いますが、数年働くとある程度できるようになってきて、そこから視野を広げようとすることが非常に重要になってきます。
IT業界は副業が大丈夫な会社も多く、プログラマーは業務委託で仕事を受けやすい職業でもあるため、新しいプロジェクトに参加できるようにサイドプロジェクトを探すのは推奨されるべきだと思います。サイドでやったことが本業で活かされることは多いです。私はスタートアップで働きながら、サイドプロジェクトとしてもスタートアップのお仕事をもらっていたのでやることが多くなりすぎた時期もありましたが、これからも仕事量のバランスはとりつついろんなことができるように視野は広く持ち続けたいと思っています。


技術記事の投稿


ソフトウェアエンジニアとして活動した5年間でしたが、技術記事を書きはじめたのは2年目あたりでした。初めはその当時個人的に興味を持って調べていたResNetと呼ばれる画像系DNNの手法について、自分の中で気づきがあったためそれを順序立てて記事にしたのがきっかけでした。最初は社内の勉強会で発表をしその時にまとめた資料を記事にして公開したところ意外にも多くの人に読んでもらえて嬉しかったのを覚えています。
当時AIプロジェクトに取り組んでいたインターンの方も記事を書きはじめ、その方は今はAI関連記事の人としてはかなり有名になっています。そのような人が隣にいたことも自分が記事を書くきっかけになりました。
それ以来技術記事を書いて3年ほど経ちましたが、キータと呼ばれるソフトウェアエンジニアが集まるブログサイトで、書いた記事は総数230記事ほどになりました。
基本的には、

  • プログラマーとしてエラーを解決した備忘録記事

  • AIモデルや手法に関する記事

  • 秘密計算についての記事

  • 個人開発などについての記事

などを書いています。


プログラマーとしてエラーを解決した備忘録記事

については、前述した自分のロールモデルである「give できるエンジニア」になるための取り組みだと考えています。自分がよくわからずに詰まってしまった事柄というのは、世界のどこかで誰かも同じように詰まる可能性があり、そのときに自分が解決した手法でだれかの役に立てばいいなという思いから記事にしています。エラー備忘録については似たような記事がたくさんあってそんなに記事があっても困るという意見も聞くのですが、一つのエラーについても各々の環境やバージョン、技術力によって参考にする記事というのは変わってくるため無駄な記事は基本的にないと個人的には思っています。事実として、自分の書いたエラー解決記事に3個いいねがついたりすると、少なくともどこかの3人のエンジニアの役に立ったから書いてよかったなあと感じています。


AIモデルや手法に関する記事

AIについての記事はあまり多くの記事を書けていませんが、これから増やしていけたらと思っています。その際に、私が心がけたいのは何かしらの考察を持った記事にしたいということです。近年のDNNモデルは本当にたくさんの実装があり、実装の中身を追うだけでも大変なことが多いです。コアとなるビルディングブロックはパターンがあったりその中で独自の工夫があるもののような派生系の論文がたくさん執筆されています。そのような論文を追いかけるのも大事ですが、どうやってその手法に行き着いたのかという流れを解説していければと思っています。ResNetに関する記事も、そもそもなぜスキップコネクションという機構が発明されたのか、なぜ精度がこれほど向上したのか、というところの意味を知りたいと考えて調べたのがきっかけでした。結果として似たような疑問を持った考察論文に出会い、その論文を実証する実験検証論文へとつながり、最後は機械学習の研究者の中でも理論寄りの研究者が執筆した、数学的に考察するような論文へと行きつきました。ResNetを検索して実装をコピペするだけでなく、なぜこのブロックが精度向上に寄与しているのかということを考察できたのはとても楽しかったです。このようなそもそもなぜ?というような疑問に答えていくと、最終的に異なる機械学習とのつながりが見えてくることがあります。Resブロックについても、それが結局はアンサンブル学習を非直接的に行なっているということを理解していくと、同じアンサンブル学習をしている勾配ブースティングモデルについても考察することができました。また、サポートベクトル回帰について調べた時は、サポートベクトル回帰がニューラルネットやkmeansクラスタリングと関連していることを学ぶことができました。最近だと、セマンティックセグメンテーションのモデルを調べていくと、以前学習したコンピュータビジョンで使われていたオプティカルフローから着想を得たモデルがSoTAを取っていたりと、モデルを着想から理解することの楽しさや重要さを学びました。このようないろいろなモデルを繋いだり、着想について考察するような記事を書いていければと思っています。


秘密計算についての記事

秘密計算の記事についてはまだこの技術を知っている人自体が少なく、AIを勉強している人口に比べると圧倒的に需要はまだないのが現状です。
そんな中、3年くらい前からかなり技術寄りの記事と、誰でも読めるようなユースケース記事や全体のまとめ記事などいろいろな記事を書き続けています。
秘密計算はコンセプトとしては非常に面白く、標準化が済む頃にはもっと研究の対象にする人たちも増えていくだろうと予想はしています。その時にもしかしたらどこかの誰かが自分の記事を有益に思ってくれるかもなあと思いながら書いています。また、やはり自分達のような小さな組織に対しては、なぜあなた達を選ぶのかという問いがお客さんから常について回ると思います。自分達が専門分野についてはトップランナーであるということを示し続けるために、これからも秘密計算についてはアウトプットを続けていきたいと思っています。


個人開発、ハッカソン


ハッカソンは5回ほど今までプレーヤーとして参加する機会がありました。また、1回は主催者としてや審査員として関わらせていただくこともありました。
ハッカソンに対する思いは以前記事で書いたことがあります。
ハッカソンはエンジニアとしては本当にたくさんの学びがあり、これからも続けていければと思っています。

ハッカソンの延長線上として個人開発にも取り組みました。ハッカソンでとどまらずせっかくのアイディアであれば世の中に出して使ってもらいたいし、その中でフィードバックをもらってブラッシュアップしたいという思いからいくつかプロダクト化を達成しました。個人開発に取り組むことができたのは最近2年くらいだったのですが、その間で以下のようなプロダクトを開発し、リリースすることができました。


  • YorimichiApp (ヨリミチを共有するマップモバイルSNS)

  • Protohub (エンジニアのアウトプットを最大化するブログプラットフォーム)

  • ダイビングイクンゴ(ダイビングが大好きな人のための口コミプラットフォーム)

  • ノミカイカンジ(飲み会を設定するための幹事サポートアプリ)

また、リリースまで行かなかったものの開発に取り組んだサービスもありました。

  • まごろむ(孫の成長を記録してARで共有することができるアプリ)

  • 中古マンション価格分析プラットフォーム(中古マンションの価格を日々チェックしてお得な物件をチェックできる)

上記の個人開発やハッカソンを経験するにつれていろいろな技術に触れ、自分のエンジニアとしての勉強の仕方というのも少しずつ変遷してきました。
後述しますが、技術志向に傾倒しすぎることでインプット型の勉強をたくさんしてしまいがちなことが自分も多いですが、やはり自分の目指すところとしてなにかプロダクトを世の中に生み出して、いい影響を与えられるようなエンジニアになるべく、アウトプット型の勉強方法を続けていければと思います。

その一環として続けてきた個人開発については、今まで作ってきたサービスを通してたくさんの反省があり、自分で見つけた課題を一つ一つクリアしていけるようにしたいと思います。

https://note.com/kenmaro/n/n77129958a241


これからどうやっていきたいか


20代から30代に移行し、特に何が変わるわけでもないですが、一つの節目であり、自分の考え方が今どうなっていてどのように変化してきたのか、だからこれからどうしたいのかということは自分のための備忘録としてまとめてみようと思います。

30代が近づくにつれてどのような変化が出てきやすいかということについては以前

https://note.com/kenmaro/n/n85669eed1c36

この記事でソフトウェアエンジニアとしての変化ではなく一般的な変化について考えました。

エンジニアとして今の所以下のような取り組みを続けていこうと思っています。

  • 個人開発、記事などを中心としたアウトプット型の勉強

  • 他人と比べずに自分と比べる

  • インターンの時の気持ちを忘れず、常に夢中になって楽しむ

  • カスタマーファースト


個人開発、記事などを中心としたアウトプット型の勉強


アウトプット型については、

https://note.com/kenmaro/n/n513ee6972ff5

こちらの記事に一度書きました。コピペについてなるべく避けてきたエンジニアとしての初期の勉強の仕方と、プロダクト開発をメインにしてコピペも効率的に使うようになった今のアウトプット型の勉強方法ですが、どちらがいいのか正解があるのかはわかっていません。
しかしながら、自分の実体験として数年で培った勉強方法についてはこれからも継続していきたいと考えていますし、これからまた考えが変わるようなことがあれば受け入れていきたいと思います。その際は新しい考え方についてまた記事を書ければと思っています。


他人と比べない


ソフトウェアエンジニアは、低レイヤの技術を勉強するにしても、クラウドインフラなどの高レイヤについて勉強するにしても無限に勉強するマテリアルがある分野だと思います。それぞれの分野についてエキスパートが存在し、自分の知識のなさを突きつけられることが日常茶飯事ですが、基本的には人と比べることはせず、過去の自分より自分が成長しているかということにフォーカスしていきたいと思います。


夢中になって楽しむ


インターン時代は振り返ればまさに夢中で暗号の理論の勉強やプログラミングに関する勉強をおこなっていました。平日はインターンの時間を使って、休日も基本的にはカフェにいっていろいろな勉強をしていました。これからも初心を忘れずにいろんなことを吸収するエンジニアで居続けたいと思います。そして、まさに

https://note.com/kenmaro/n/n3da4cde75a35

ここで書いたような持続可能な(長期目線でずっと向上していけるような)人になりたいなあと思っています。
個人開発についても自分が夢中で作ったもの、魂を込めて開発したものには愛着が湧き結果としてリリースまで持っていけたり、運用を長く行うことができました。これからも自分が好きなものや必要だと思うことについて思いを込めてプロダクト開発を行なっていきたいです。そして、そのモチベーションを持って、アイディアでおわらせるプロダクトではなく実際に世の中に届けることのできたプロダクトを増やしていきたいです。


カスタマーファースト


自分が関わっているプロダクトについて、いつでもお客さんのフィードバックを第一に考えて行動するべきだと考えています。自分達のプロダクトやサービスによってお客さんが満足したり、感動してもらえるような行動をしていきたいです。
タスクが色々あったとしてもお客さんに直接関わることは一番最初に対応するという姿勢はこれからも変えないようにしていきたいと思います。

そのほかにも、自分がこの20代で培った習慣について今一度考え、続けるべきものは続けて止めるべきものはやめていきたいと思います。

https://note.com/kenmaro/n/n99bb7c1446fa#1cf5b0b9-a9ae-4b7c-8af9-1a66747c0f47


最後に


今回は2022年も終わりに近いということと、20代も終わりに近いということも相まって今一度自分がnoteに書いてきた記事をまとめる形で、また、自分の5年間くらいのエンジニアとして取り組みについて自分語りしてみました。
突貫工事的に書いてしまったところが多いので修正をするかもしれませんが、これからもその都度思っていることを記事にしてとりあえず書いてみるということは続けていきたいと思っています。

今回はこの辺で。

kenmaro


この記事が気に入ったらサポートをしてみませんか?