Rのつく財団入り口

ITエンジニア関連の様々な話題を書いているはずのブログです。

【雑記】2021年を振り返る【おしごと編】

年が明けてから振り返るスタイル...(いいわけ)

 2021年の師走はlog4j脆弱性の嵐が各方面を震撼させてきましたね。年末年始は例年通り様々な方のふりかえりや新年の抱負、買ってよかったものシリーズなどを拝見していきました。いつも1月にやっていたので今回も自分用に振り返ってみます。KPT法のKeep/Problemのあたり、YWT法のYatta/Wakattaのあたり、Fun/Done/Learn法の各要素のあたりに一応なります。

f:id:iwasiman:20211229202905p:plain
PHPコード風。ほんとは"biz"も定数クラス等に定義するとなおヨシ

 まずはおしごと関連から。前の年はこんなことを書いていました。

iwasiman.hatenablog.com

おしごとでYattaこと・doneしたこと

 関わったプロジェクト数は2020年ほど多くはなかったです。

C#WebサービスAPIとやりとりするおしごと

 できそうな人がいないので頼むと年明け早々に急に舞い込んできたおしごと。社内でやっているRPAの仕組みと関連してソフトウェアロボットからのスクリプト起動を想定、認証情報付きでとあるWebサービスと通信していくつかのAPIをコールしてJSONをやり取りしながら処理をやっていきます。ちょうどある程度空きがあったのでがっつり実装するかいということで受けました。

 最初に設計やアーキテクチャを検討して、完全にWindows寄りのプロジェクトなので起動部分はPowerShellから。しかし調べるとPowerShellでプログラム部分も書いていくのはかなり面倒なので起動だけにし、本体は開発も機能拡張もしやすいVisual C#のコンソールアプリで実装し、将来の機能拡張の可能性に備えてサービスとして独立起して動かせる構成にし、クラス構成も工夫して作りました。
 割とよくある話かと思いますが通信先のサービスのWebAPIの資料が英語ドキュメントだけで情報が少なかったりして、特定のAPIだけすんなり動かずしばらくハマったりしました。
 その後の仕様変更にも応えてドキュメントも書いて予定通り完遂、本番で動き出したので、規模的には小さいお仕事ながらよくやれたかなと思います。しばらくC#から離れていたのでちょうどよい復習にもなりました。

 このへん関連で調べたことは以下のブログ記事の元になっており、仕事で書いた実物とはもちろん別ですがGithubにサンプルコードを載せたりしています。
 こういう技術系っぽい記事は掲載したときはそれで終わりだったんですが、後からだんだんGoogleからのアクセスが増えてきて、今でも継続的な検索流入があります。ありがたやありがたや。そういう意味でも仕事とブログがうまく結びつきました。

iwasiman.hatenablog.com iwasiman.hatenablog.com iwasiman.hatenablog.com

C#Windowsと会話するおしごと

 前に一緒に仕事をした身近なグループがやっている検証プロジェクトに、空き工数を利用してジョインしたおしごと。ブラウザ上やWindows上などPC操作を、常駐形式の試作ソフトウェアでどこまで自動記録ができるかの試みに協力しました。C#のアプリケーションである程度実装されているので既存のコードを読み解いたり改良したり。別のソフトウェアでも実現されていたのでC#のデコンパイラツール dnSpyを用いてコードを復元してどうやっているのか調べたりしました。こういうことをやるとなんかハッカーぽい気分になってきます。

github.com

 自分の担当分ではマウス操作やクリック間隔を検知したりしたのですが、C言語用のWin32APIにC#からアクセスして最終的にはイベントを検知してログに出すところまで成功して、おおおWindowsのネイティブなAPIに触ったぞ!というお気持ちになりました。

WebAPIがバックのWebコンテンツシステムを拡張していくおしごと

 事業部で開発して出しているドキュメント管理のパッケージ製品にデータを登録してDBの代わりにデータソースとして扱い、WebAPI経由で通信して内容を表示するシステム。PHPによる純然としたWebアプリケーションでもあり、グループ社内の別の部署がメンテしている社内Webサイトでもあるという両方の側面を持っています。通信部分の部品、Webアプリ部分は僕が前にPHPで作った軽量級のWebフレームワークを使っています。

 こちらは定期的にコンテンツが更新されて、全社Webサイトでも会社の歴史やらの紹介で時々取り上げられるという、いちおう成果が目に見えてわかる形で本番稼働が続いています。
 2021年もオリンピックを機にコンテンツ追加や機能拡張の話が来て仕組みを考えたり見積もったり、実装指針を考えて展開したり。もう本番で動いているものなので余裕を持った正確な見積もりや変更容易性を考慮した設計に留意しました。
 もう1名一緒にやっているメンバーがいるので、一緒に開発を続けてきました。フルリモートなのでTeamsのチャットで密に連絡を取り合いながらやりました。向こうからすると僕の持っているPHPやWeb開発の知見はとても参考になるそうで、教える側のこちらからするとてへへって感じです。仕事の合間にも仕事以外の雑談をしたりお互いのデスク環境を見せ合ったり、こういうのもリモートだと楽しかったですね。
 最初に形になったのはしばらく前でリファクタリングやコードの掃除は既に完了。そうだ2021年はそのうちPHP7から8にアップデートしてどれぐらい対応が必要か確かめようと思っていたんですが、結局機会がありませんでした...! 今年狙おう!

 へーしゃの公式サイトの製品紹介ページにこの案件は事例紹介として載っており、2022年もまた動きが出てきそうになってきました。規模はあまり大きくないですが、自分の作ったフレームワークや仕組みが使われるのは楽しいですし、今後も続けていきたいですね。

ザ・業務システムのPHP継続開発のおしごと

 リリースしてグループ社内で本番稼働している、業務仕様がめちゃんこ複雑な業務システムのおしごと。サーバーサイドはPHP、独自要件や背景があるのでフレームワークは上の案件と同じく僕作成のフレームワークで稼働中です。フロントは開発開始当時はそれほど膨らむ予定がなかったり事情があってJavaScript+伝統のjQueryで作り、今でもここを最初からReactVue.jsでやっていたらどうなるだろう……と思いながら処理が複雑すぎて移行できずに機能拡張が続いて今に至っていますw

 いちおう保守フェーズなのですが機能追加や変更の要望がバンバンきて、実質追加開発をずっとやってるような状態でした。
2021年は諸事情によりマネージャーが関われていないのでほぼ僕一人対応。受発注の手続きから定例の会議の司会もやって変更依頼は見積もり、大まかなスケジュールを立てて設計実装テスト、リリースはJenkinsを使ってほぼ自動化済みでステージング環境へのリリースは頻度高、まとまったらプロダクション環境でリリース...とやっていきます。あれ、もはやこれはひとりDevOpsをやってるようなものでは...?という感じになってきましたw

 特に2021年はシステム全体に関わるような大きめの機能追加がどどんと来ましたね。いつもより精度を細かく、変更箇所を洗い出して積み上げてリスクも考えて見積もりし、着実にやってきました。
 最初の開発後にサーバーサイドのPHP、クライアントサイド(フロントエンド)のJSもリファクタリングはもう実施して品質は安定してきているので、昨年の記事のコピペですが以下に留意しました。

  • DRY原則を厳密適用して最小の修正で必要な効果を上げる
  • 度重なる今までの修正を踏まえ、最適な正しい場所で修正する
  • 他の仕様やロジックに影響を与えないよう修正する
  • これまで通り可読性の高いコードを保ち、設計ドキュメントも同期を保つ
  • 未来の自分や他の人が触っても大丈夫なようにメンテンナビリティを保つ
  • 必要な分のパターンのテストを確実に行う

 2020年に読了済みの『レガシーコードからの脱却』、『リファクタリング 第2版』、『Clean Code』、『Clean Architecture』、2021年だと『達人プログラマー 熟達に向けたあなたの旅(第2版)』で得た知見も役に立ちました。
 関わるのが一人なのでコミュニケーションロスもなく、リモートでやりやすい仕事でしたね。

iwasiman.hatenablog.com

LCP関連のおしごと

 エンプラ界隈だと時々に話題になるけど一般的にはそれほど注目されてない感のあるLCP(Low-Code Platform)の、とあるツールでエンタープライズな大規模開発への下地となる基盤をつくっていくおしごと。以前ちょっとだけ関わってそのあと抜けたのですがまた召喚されてしまいました。ちょうどAWSの知識が活かせそうなプロジェクトに入れるかもしれなくて楽しみだったところでこっちに呼ばれてしまい、モチベーションの非常に低い状態からスタートでした。
 アジャイル開発やリーン・スタートアップでも見かけるような早期に画面だけのモックを作ってユーザに見せたりMVPな最低限の最初の開発には、こうしたローコード・ノーコード系の軽いツールなら確かに向いています。しかし本格的なエンタープライズ大規模開発にはそもそもミスマッチなのでは?という感想は変わらずです。

 製品の仕組みを調べたり構成管理を検討したり、Markdown形式のドキュメントをたくさん書いたり、ビルド職人と化してGitLab上でCI/CDの仕組みを試作したりといろんなことをやりました。後半は技術からは完全に離れてタスクマネジメントが主になってRedmineの番人と化したり、海外オフショアとの連絡窓口をしたりと、人と人との間の情報の伝達経路を受け持つところをやったりしました。Engineering Managerの仕事の一部ってもしかしてこういう感じに近いのかな?とちょっと思ったりしました。
 仕事以外の活動では2021年にTypeScriptを学んでReactを深堀りしたのも、ちょっとだけですがこのおしごとで役立ちました。

 このおしごとも継続して受注が来るので安定している長所があるにはあるのですが、自分の向きたい方向に関係なく仕事だから仕方なくやっている感が自分の中でどうしてもあります。こういうところは大きめの企業のつらみですね...。長所を活かして時間を効率的に使いつつ、2022年に新たな動きや新たなチャンスを待ちたいと思います。

管理用のWebシステムを改良していくおしごと

 将来ソリューションの売り物に進化させていく予定の、RDBにあるデータや他のツールと通信して取得したデータを表示、更新、他のツールへのリンクなど管理用の機能を集めたWebアプリケーションを前に作ったおしごと。これもサーバーサイドは僕作成のPHPフレームワークをベースにし、クライアントサイドもFW的にラップした仕組みを使っています。

 このお仕事はいったん終わったのですが、社内の開発環境基盤の仕組みで稼働しているインスタンス上にアプリケーション一式を置いているのを、バージョンアップに伴って別インスタンス上に置き換える作業がポップアップし、けっこう手間がかかりました。あとは今後の修正の機会に備えて若手社員メンバーに仕組みを説明したり。
 その後この社内の開発環境基盤の話を聞く機会があったのですが、社外のAWS上に基盤を作ってコード管理やチケット管理やCI/CDができるようにしたバージョンもあり、今後は社内イントラネット版よりもこちらに力を入れていくもよう。DevOpsエンジニアっぽい範疇でもあり、これは機会があったら使ってみたいと思いました。

 常に掛け持ちでやっていたのですが、2021年はプロジェクトは最大3つ並行でした。その前の2020年は最大4つまでいってましたが、実際に手を動かす仕事だとやっぱりそこが限界かなというところです。
 ほか、仕事内容や周囲は変わってないのですが所属階層上のグループがちょっとだけ変わったりしました。前のグループの同僚たちは主にはRPA関係を商材にして頑張っていたので、自分の方向性的には今の所属のほうがたぶん合っているかなというところです。

 僕も以前はJavaエンジニアとして色んなことをしていましたがここ数年は離れていたので、師走に激震が走ったApache Log4j脆弱性の話は影響なしでした。これは社内の各方面でも騒ぎになりまして、他社さんでもそうだろうなあと思います。
 年末にTwitterを見ていたら、世の中にはWebサーバーとしてのApache(Apache HTTP Server)が脆弱性の対象だと勘違いして報道してるところもあるそーです。怖!世の中デマだらけだな!と思いました。

www.ipa.go.jp

ふりかえり&Problem&Wakattaこと、FunやLearn

コードの改善やリファクタリングを続けました

 単に動くプログラムが書ける人以上のソフトウェアアーキテクト的な視点から、今あるコードをより良くし新たな部分を加える作業はしっかりやれました。様々な本から得た知見も役に立っています。

自動テストまで行きませんでした

 ここもこれまでと変わらず。処理を切り出したクラスを単体でテストするようなことはよくやっているのですが、本格的なTDDやアプリケーション全体に渡っての自動テストのようなことはできませんでした。継続開発がメインだったし一人で完結する作業が多かったのもあります。

リモートワーク(テレワーク)に移行後2年目が終わりました

 2020年4月の緊急事態宣言以降、弊社グループもリモートワークに移行して最初の混乱を経て、2021年も継続しています。プロジェクトの都合で物理出社している人も3割前後ぐらい?いますが僕は物理出社は数か月に1回程度。ほぼフルリモートの勤務と生活に完全移行して落ち着いています。2019年ごろは僕自身もまだリモートに懐疑的な気持ちがあったのですが、もうリモート万歳!に完全に変わっています。
 環境整備でいろいろ揃えたGearも以下の記事で紹介しています。ここで上げているのはほぼ自費メイン、その後会社の福利厚生制度で金が使えるようになったのでアクセサリー類はそっちで賄ったりしていますね。

iwasiman.hatenablog.com

 在宅勤務手当は同業の某Fさんは月5000円らしいですが、へーしゃグループは2000円前後ぐらいです。そういうとこやぞ...(笑
 paizaさんのブログ記事でも多くのITエンジニアがリモート勤務を希望、リモート実施企業も多いことが取り上げられています。良いエンジニアを集められる企業の条件に、確実にリモートワークできることが入りつつあります。今後もこの流れは続くのでしょうね。

paiza.hatenablog.com

引き続き効率的な作業を心がけました

 僕は残業しても給料が増えない、手当が一定の裁量労働制の人なので残業しても無駄になります。いつも定時+αの範囲内で効率的にやっていくようにしていますが、2021年のリモート環境下でも引き続き気を付けました。定時後に子供の保育園のお迎えという不動のタスクがあるのも効果がありましたね。会社でも残業は基本月20H以内にするようお達しが出て、スマートワーク、ライフワークバランスが重視されてきています。
 昔はみんなダラダラ残業して残業手当を稼いだり、こっそり内職したりこっそり勉強したり残業の分朝寝坊したり、リスクを考えずに突き進んで地雷を踏み抜いて残業でなんとかしたりと、不味いやり方が跋扈していました。このへんは世の中全体が良い方向に向かってきて本当にありがたい。どんどん良くなっていってほしいものです。

AWS認定6冠達成しました

 年末にぎりぎりで会社で費用の申請doneできた...。社内でもクラウド関連コミュニティを覗いたりしていますが、やっぱりめっさ詳しい人もいたり11冠コンプを達成している神もいたり、僕と同じように認定チャレンジしている人もいます。
アソシエイトクラスの試験対策講座を受けてからやっと受かる人もいるので、会社のリソースに頼らずにほぼ自走で6冠まで行けたのは進んでいるほうでしょう。
 AWS社との戦略的提携も発表されたし、2022年はまた動きがあるかなと期待したいところです。

社内のハッカソンイベントに参加しました

 2021年2月頃のことでしたが、ここでようやく名目上は仕事でAWSを使うことができました。ちょうどサーバーレス周りの商業本を読了してブログでも完走記事を書いたりした後、タイミング的にはちょうど良かったですね。
 その後の開催でも観る側として参加したりしました。チャットでポジティブな反応が飛び交う中で楽しみながらやるのはとても良いことですね。こういうのはどんどん続いてほしいと思います。
 またちょっとですがPythonを書いたので、仕事の実務で使う実績解除になりました。

iwasiman.hatenablog.com

できなかったことシリーズ
  • 相変わらず肝心の本格実務でAWSを使えませんでした(ギヤ~〜〜
  • ReactTypeScriptも機会があったら実戦投入を...と思ったのですがチャンスがなく。
  • どこかの案件でPHP8へのバージョンアップを考えたりしていたのですが結局それどころではなかったので、2022年に機会を狙いたいと思います。
オンラインのコミュニケーションをなんとか保ちました

 Microsoft Teamsでやっている所属部署の朝会も毎日継続で実は司会が僕、プロジェクトのひとつの昼会も司会が途中から僕、プロジェクトのひとつの定例会議も司会が僕...と、あれ実はけっこうファシリテーションしてるのでは?と思い返しました。(特別なことは何もしていないのですが!w)
 2020年は配属される新人諸氏の発表会を見たり新入社員顔合わせの催しに参加したりしたのですが、2021年は所属が微妙に変わった後で特にこういうイベントは何もありませんでした。若手サポートも機会があればしていきたいところ。

 若手社員がアイデアを出し合う催しや社内ハッカソンで若手社員が考えたサービスなどを覗くと、社内に知り合いを増やしたり人と人を結びつけたり案件を探しやすくするサービスが出てきたりしていました。オンラインのコミュニケーションに課題感を持っている人は多いのがよく分かります。
EMやとかマネジメントとか採用をやってる方の振り返り記事でも、新卒組や中途採用組にとって組織に馴染んでいく上でのリモートの課題感というのを割とよく見かけます。このへん他社さんでもみなそうなんだなあと思います。
 完全に他人ごとになってしまいますが、コロナ後の入社世代は大変ですよね...僕もIT業界入りたての頃の自分がもしリモートだったら、今の自分まで成長できる自信がないです。

変化の様子をWatchしました

 かつては毎日大量の電子メールが飛び交っていていかにもジャパニーズトラディショナルビッグカンパニィだった弊社グループも、コロナを機にTeamsの活用がすっかり定着しました。オンラインでコミュニティの様子も分かりやすくなりました。会社グループがあまりに大きくて分かりにくいだけで、社内にもいろんな人がいるわけですね。クラウドとかアジャイルとかOSSとかそのへんを覗いています。個人的にQiitaやブログやNoteをやってる人も時折見かけますね。
 2021年末は遂にQiitaアドベントカレンダーにも参戦、ついでに申請手順がめんどいことが社内でも話題になりました。結局全枠は埋まらなかったのですが、こうやって社外でもアウトプットを出している方がいるのは嬉しいところ。

qiita.com

 2021年も、これからの時代を見据えて変化に対応していこうという改革の動きは進んできました。1on1も月いちぐらいで定着化、大部分の社員はリモート前提でもうオフィスエリアも縮小して協創を目指して作り変えることになり、社内の制度もあれこれ変わってきました。より柔軟な働き方を目指すようになり将来は副業や週休3日も可能になるようです。リファラル採用もやるようになってきて、「心理的安全性」を始め一般的なIT界隈でよく聞くワードも、遅れて社内でも目にすることが多くなってきました。
 割と頻度が高く回ってくる社員へのアンケートでも会社にどれぐらい満足しているかとか、この会社で働くことをどれだけ人に勧められるかの項目があったりして、人材流出周りは気にしているんだろうなあというのも分かります。
 僕も企業口コミサイトのOpenWorkで自社グループの口コミをよく見ていますが、辞めちゃった人の報告を読むたびに、そうだよな若手なら転職しちゃったほうが早い場合もあるよな...というお気持ちになっています。

 普段から自助努力を重ねて社外とも接点を保ち、情報収集も行って自分の足でここまで進んできた自分からすれば、動きの鈍い大企業でもやっと変わり始めたかという気持ちもあり、どこまで変われるかな?という気持ちもあります。自分自身の立ち位置を保ち、引き続き良い変化は受け入れていきたいところです。

まとめ:コロナ禍を乗り越えてフルリモート2年目が安定してきた1年

 家族含め無事生存、リモートワークに完全対応して2年目は定着、ほぼ仕事には困らずに2021年も色々やってきました。
 比較的既存案件の作業が多かったですが、大きな問題なく比較的スムーズに進んでこれたのは、ソフトウェアアーキテクト的な立場からいろいろ考えたり見積もりしたり計画したり設計したり、そして自分の経験を活かしながら実行してきたからでもあり、ここも成果といえるでしょう。仕事以外でも朝活でいろいろ学習してこれました。
 プロジェクトの一つが自分の目指したい方向とアンマッチなのがありますが、なんといっても子育てが第一優先の今からすると、このご時世で安定した仕事があることで今は良しとするべきなのかどうなのか...というところです。
 2022年も自分のアップデートを続けながらエンジニアとしてサバイブ、人間としてサバイブしていこうと思います。
 皆様にも2022年が良い年でありますように……

f:id:iwasiman:20211229202905p:plain
ふりかえりのおしごと編でした

つづくよ