地獄の沙汰も「手作業」次第? なぜ俺たちは「非効率」にキレるのか
やあ、どうも。海外の片隅で、日々C#とWPFのUIデザインとにらめっこしてるITエンジニアです。君も今、まさに海外転職を決めて、期待に胸を膨らませてるところかな? おめでとう!マジで、その決断は最高だ。新しい環境、新しい技術、新しい文化…ワクワクする要素しかないよね。
…そう、**「アイツ」**さえいなければ。
そう、「アイツ」。「国際移住手続き」っていう名前の、最強にして最悪のラスボスだ。
正直に言おう。俺はナメてた。
「まあ、エンジニアだし。ロジカルに進めれば余裕っしょ」「タスク管理? いつものJiraやん」とか思ってた。甘かった。マジで、砂糖菓子より甘かった。
君は今、どんな「地獄」の入り口に立ってる?
ビザ申請?
ああ、いいね。あの「なんでこのデジタル時代に、PDFを印刷して、手書きでサインして、それをまたスキャンして、5MB以下のJPEGに圧縮してアップロードしろって言うんだよ!」っていう不条理の塊。
しかも、その申請フォーム、UIがひどくない? WPFでモダンUI作ってる身からすると、あの分かりにくいラベル、一貫性のない入力規則、押せそうで押せない「次へ」ボタン、マジで設計したヤツに小一時間問い詰めたい。なんで入力エラーが「ページ上部の赤文字」でしか表示されないんだよ。該当箇所にフォーカスしろよ!
それとも、引っ越し業者の選定?
相見積もり、取ってる? 3社? 5社? 来日(あるいは渡航)する担当者との日程調整、家財のリストアップ、保険のオプション比較…。「船便」「航空便」「別送品申告書」。もう言葉の響きだけで蕁麻疹が出そうだ。
なんで各社フォーマットがバラバラなんだよ。比較しにくいだろ! データ構造を統一してJSONでくれよ、そしたらこっちで爆速で比較検討するからさ。
まだまだあるぞ。
現地の銀行口座開設(そもそも住所がないと開けない)、家の契約(銀行口座がないと契約できない)、携帯電話の契約(銀行口座も住所も必要)、税金の手続き(マイナンバーの海外転出届)、年金(カラ期間どうすんの)、健康保険…。
まるで、依存関係がぐちゃぐちゃのレガシーコードだ。どこから手をつけてもコンフリクト(競合)エラーが発生する。
この「手続き」っていうプロジェクト、ハッキリ言って**「設計」が破綻してる。**
担当者(役所、銀行、不動産屋、ビザセンター)ごとに言うことが違う。
必要なドキュメントリストが、メールの履歴を遡らないと見つからない。
「あれ、このタスクのデッドライン、いつだっけ?」「あの担当者からの返信、どこいった?」「このファイル、バージョン最新だっけ?」
俺たちエンジニアが、仕事で一番嫌う状態だ。
**「非効率」「非合理的」「手戻り上等」**なアナログ作業のオンパレード。
正直、俺、キレそうだった。
だって、考えてみてくれよ。俺たちは「効率化」のプロだ。
C#で非同期処理(async/await)を駆使してUIのフリーズを防ぎ、WPFでMVVMパターンを導入して保守性を高め、CI/CDパイプラインを構築してデプロイを自動化する…。
日々、どうすれば「ムダ」をなくせるか、どうすれば「もっと速く、もっと正確に」できるかを考えて、コードを書いてるわけだ。
そんな俺たちが、なんで人生の一大事である「海外移住」っていうビッグプロジェクトで、こんな非効率なアナログ作業に貴重なリソース(時間と精神力)を奪われなきゃいけないんだ?
毎日、コード書いて、設計レビューして、ミーティングして…ただでさえ忙しいのに、夜中や週末に、あのクソUIの申請フォームと格闘し、エクセルで「タスク管理(笑)」みたいなリストを作り、フォルダ(しかもローカル)に「ビザ申請_v3_最終_修正版.pdf」みたいな地獄のファイル名を生み出していく。
バカげてる。
このプロセス、絶対に**「バグってる」**だろ。
俺は、WPFアプリケーションのパフォーマンスチューニングで、非効率なデータバインディングやレンダリングのボトルネックを見つけるのが得意だ。
だったら、この「海外移住」っていうクソ重いプロジェクトのボトルネックも、特定できるはずだ。
最初は、ただただストレスだった。パニックだった。
「ああ、もう無理だ」「なんでこんな面倒なんだ」「誰かやってくれよ」
そう思って、書類の山に溺れかけてた。
でも、ある時ふと思ったんだ。
「待てよ、と。俺、エンジニアじゃん」
「この『非効率』こそ、俺たちの専門分野じゃないか?」
もし。
もし、この地獄のような移住手続きのストレスを、半分にできるとしたら?
もし、この混沌(カオス)としたタスク群を、いつものプロジェクトみたいに「管理」できるとしたら?
もし、君が本来集中すべきこと…例えば、新しい職場で使う技術のキャッチアップとか、現地の言葉の勉強とか、家族と過ごす最後の時間とか…そういう「本当に大事なこと」に、もっと多くの時間を使えるようになるとしたら?
そう。これは「手続き」じゃない。
これは、俺たちエンジニアが腕試し(あるいは、イライラ解消)のために取り組むべき、**壮大な「自動化プロジェクト」**なんだ。
今回のブログシリーズでは、俺がどうやってこの「引っ越しプロジェクト」をハックしたのか、その「エンジニア的思考」と「人生術」を、余すところなくシェアしようと思う。
「移住」という名のレガシーシステムを解体する — エンジニア的思考のキックオフ
さて、「起」の章では、俺がいかにこの「海外移住」という名のレガシーシステム(と呼ぶのもおこがましい、バグだらけのプロセス)にキレ散らかしたかを語った。
「非効率だ!」「設計が破綻してる!」「UIがクソだ!」
…うん、まあ、ただの愚痴だ。愚痴ってるだけじゃ、C#のコードは一行も進まないし、ビザも1ミリも進まない。
俺たちエンジニアのいいところは、文句を言った後、じゃあどうすりゃいいか(How)を考え始めるところだ。
WPFのアプリが重いとき、「遅い!」ってキレるだけじゃなくて、プロファイラを起動して、どこがボトルネックになってるか、どのXAMLのバインディングが無駄に動いてるか、どの非同期処理がUIスレッドを食ってるか、ちゃんと「分析」するだろ?
それと、まったく同じだ。
俺はまず、目の前にある書類の山と、受信トレイに溜まった「【重要】手続きのお願い」メールの数々を、いったん全部閉じた。
そして、おもむろに愛用のツール(君ならTrelloでもNotionでも、Jiraの個人プロジェクトでも、最悪テキストエディタでもいい)を開いたんだ。
プロジェクト『俺の海外移住』、キックオフの瞬間だ。
フェーズ1:要求定義、あるいは「やらされ仕事」の全洗い出し
まずやったこと。それは**「分析」**だ。
このプロジェクトの「仕様書」は、いろんな担当者から送られてくるメール、WebサイトのFAQ、PDF、そしてググって出てきた先輩たちのブログ記事…全部だ。
あまりにも散らばってる。
だから、まずは**「タスクの全洗い出し」**をやった。
ブレインストーミングだ。思いつくまま、全部書き出す。
- 「ビザ申請(地獄)」
- 「会社への提出書類A, B, C」
- 「現職の退職手続き」
- 「住民票の転出届」
- 「年金事務所に確認」
- 「健康保険の手続き」
- 「パスポートの写真(なんかサイズが特殊)」
- 「戸籍謄本の翻訳(どこで?)」
- 「銀行口座の残高証明(英文)」
- 「航空券の手配」
- 「現地での仮住まい探し」
- 「引っ越し業者の見積もり(3社)」
- 「船便と航空便の仕分け」
- 「不用品の処分(メルカリ)」
- 「ジムの解約」
- 「スマホのSIMロック解除」
…キリがない。多分、君が今書き出したら100個は余裕で超える。
いいか、ここでビビるな。これが「要求定義」だ。
「やること」の全体像を把握しないでプロジェクトに突っ込むのが、一番ヤバい。デスマーチの始まりだ。
まず、敵の全貌を把握する。
フェーズ2:依存関係のグラフ化(ここで死ぬな)
さて、タスクが100個並んだ。
ここで、素人(失礼)は「よーし、簡単なやつから片付けるぞ!まずはジムの解約だ!」とかやっちゃう。
ダメだ。絶対にダメだ。
俺たちエンジニアは知ってる。タスクには**「依存関係(Dependency)」**があることを。
この「海外移住」プロジェクトが最悪なのは、この依存関係が複雑怪奇で、しかも**「循環参照(Circular Dependency)」**が平気で発生するところだ。
俺が実際にハマった、美しいまでの「デッドロック」を紹介しよう。
- 現地の**「銀行口座」**を開設したい。
- 銀行「OK。じゃあ**『現地の住所が確認できる書類』**と『ビザ』持ってきて」
- なるほど。じゃあ「家の契約」をしよう。
- 不動産屋「OK。じゃあ契約書にサインして。あ、初期費用は**『現地の銀行口座』**から振り込んでね」
詰んだ。
C#で、Class A が Class B を参照し、Class B が Class A を参照してる状態だ。コンパイルが通らない。
どうする?
DI(Dependency Injection)コンテナが「解決できません」ってエラーを吐く前に、俺たちが「解決」しなきゃいけない。
ここで「エンジニア的思考」が光る。
「なぜ、彼らはその書類を欲しがるのか?」
その「仕様」の**「意図」**を読むんだ。
- 銀行が「住所」を欲しがるのは、そいつが本当にそこに住む(あるいは、連絡が取れる)ことを確認したいからだ。
- 不動産屋が「銀行口座」を欲しがるのは、そいつが家賃を払える(あるいは、信用がある)ことを確認したいからだ。
この「意図」さえ分かれば、ハック(回避策)は可能だ。
俺の場合、こう解決した。
会社に頼み込んで、「こいつはウチの社員で、今、一時的にこのホテル(あるいは会社提携の仮住まい)に滞在してる。これが住所だ」っていう**「レター」**を書いてもらった。
それを持って銀行に行ったら、「OK。会社の信用があるなら、それでいいよ」と、あっさり口座が開けた。
(※これは一例だ。国や銀行によるから、必ず自分で「意図」を考えてくれよな)
見てみろ。これが「リファクタリング」だ。
非効率なプロセスを、その本質を理解することで、よりクリーンな流れに変える。
フェーズ3:『俺DB』の構築 — DRY原則は人生にも適用しろ
さて、タスクの洗い出しと依存関係の整理が終わった。
これで「いつ、何をすべきか」の順番(クリティカルパス)が見えてきた。
だが、まだだ。まだ「自動化」には早い。
次にやるべきことは、**「データモデルの設計」**だ。
WPFでMVVMパターンを使うとき、ModelやViewModelをちゃんと設計するよな?
この「移住」プロジェクトで、何度も何度も使い回される「データ」は何だ?
- 俺のフルネーム(パスポート記載のローマ字)
- 俺の生年月日(西暦)
- パスポート番号
- パスポートの発行日と有効期限
- 現住所(日本語)
- 現住所(英語表記)
- 親の旧姓(ビザ申請でマジで聞かれる)
- 過去5年間の職歴(会社名、住所、役職、在籍期間)
- 過去10年間の居住履歴(ビザ申請で(略))
……もう、うんざりだ。
これらの情報を、ビザ申請フォームに手打ちし、航空券の予約フォームに手打ちし、会社の申請フォームに手打ちし、現地の銀行口座開設フォームに手打ちし…
DRY(Don’t Repeat Yourself)原則に真っ向から反してるだろ!
「繰り返しを避ける」。これはプログラミングの基本であり、人生を効率化する基本でもある。
俺は、**「Single Source of Truth(唯一の真実の情報源)」を作った。
まあ、カッコよく言ってるけど、ただの「俺DB(データベース)」**だ。
セキュアなメモ帳でも、パスワードマネージャー(1PasswordとかBitwardenとか)のセキュアノートでも何でもいい。
そこに、さっき挙げた「何度も使う情報」を、一字一句間違いない形で、コピペしやすい形で、全部まとめたんだ。
これが、なぜ「自動化」なのか。
- 入力ミス(バグ)がゼロになる。ビザ申請で、自分のパスポート番号を1桁打ち間違えたら?…想像したくもない。手打ちするからミスるんだ。コピペならミスらない。
- 認知負荷(メモリ)が解放される。「あれ、このフォームに入れる住所、英語表記の順番どうだっけ?」とか、もう考えなくていい。俺DBからコピペするだけだ。君の脳みそ(RAM)は、そんなつまらないデータの記憶じゃなくて、もっとクリエイティブなこと(新しい職場の技術スタックの予習とか)に使うべきだ。
これが「承」。
俺は、この移住プロジェクトを、ただの「面倒な雑務」から、**「分析」と「設計」**が可能な「エンジニアリング・プロジェクト」として再定義した。
「なぜ自動化するのか?」
答えはシンプルだ。
バグを減らし、認知負荷を下げ、本来やるべきことに集中するため。
そして何より、非効率なプロセスに精神をすり減らされず、健やかに生きるためだ。
さあ、設計図はできた。
次の「転」の章で、いよいよ「実装」だ。俺が実際に使ったツール(コード)と、どうやってこの「俺DB」と「タスク管理」を連携させて、最強の「移住ダッシュボード」を構築したかを話そう。
実装、そして暴走する「自動化」 — 俺の最強移住ダッシュボード構築術
「承」の章で、俺はこの「海外移住」というクソデカ・レガシープロジェクトをリファクタリングするための「設計図」を手に入れた。
洗い出された100以上のタスク、複雑に絡み合う「依存関係」、そして「二度と手打ちしない」と誓った俺DB(Single Source of Truth)。
設計図は完璧だ。だが、設計図だけじゃ家は建たない。
WPFのXAMLでどんなに美しいUIをデザインしても、C#のコードビハインド(あるいはViewModel)がなければ、それはただの「絵」だ。
そう、ここからが「実装(Implementation)」フェーズ。
俺たちエンジニアの本領発揮だ。
技術選定(IDE)— なぜ俺は「Notion」を選んだか
まず、このプロジェクトを管理する「開発環境(IDE)」を決めなきゃいけない。
Visual Studio? VS Code? …いや、待て。今回はC#を書くんじゃない。「移住」を実装するんだ。
Trello? Asana? Jira? Backlog?
どれもいいツールだ。「カンバン」でタスク管理するなら最高だ。
でも、「承」で設計した「俺DB(コピペ元データ)」と「タスク(カンバン)」を、シームレスに連携させたい。
例えるなら、WPFのプロジェクトで、リソース(ResourceDictionary)とUI(Window.xaml)とロジック(ViewModel.cs)が、バラバラのツールで管理されてるようなもんだ。最悪だろ?
俺は、**「すべてがそこにある」**状態が欲しかった。
そこで俺が選んだのが**「Notion」**だった。
(別にAirtableでもCodaでも、君が使いやすいものなら何でもいい。だが、ここでは俺がやったことを話す)
なぜNotionか?
理由は2つ。
- 「データベース」機能が強力で、柔軟すぎるから。
- そのデータベースを、「カンバン」や「カレンダー」として「View(表示)」を変えられるからだ。
ピンときたか?
そう、これって**「MVVMパターン」**の考え方にめちゃくちゃ似てるんだ。
- Model: Notionのデータベース(俺DB、タスクDB)
- View: カンバン、カレンダー、リスト、テーブル(俺が見たい形)
- ViewModel: Notionそのもの(DBとViewをいい感じにバインドしてくれる)
この「移住ダッシュボード」プロジェクトの技術選定は、Notionに決まった。
実装フェーズ1:「俺DB」の構築 (The Single Source of Truth)
まず、「承」で定義した「俺DB」を、Notionの「データベース」機能で実装した。
やったことはシンプルだ。
| Key (プロパティ) | Value (コピペする値) |
Passport_FullName | YAMADA, Taro |
Passport_No | AB1234567 |
Passport_Expiry | 2030-12-31 |
Address_EN | 1-2-3, Honcho, Shibuya-ku, Tokyo, 150-0000, Japan |
Tax_ID | 123-456-7890 |
| …(以下、無限に続く) | … |
これを「Key」でソート可能なテーブルとして作っておく。
たったこれだけ。だが、効果は絶大だ。
ビザ申請フォーム、航空券予約、現地の謎のオンライン登録…。
「はいはい、パスポート番号ね。OK、『俺DB』からコピペ、っと」
「住所の英語表記?『俺DB』からコピペ、っと」
思考が、止まらない。
手打ちによるタイプミス(バグ)の恐怖から解放され、脳のメモリ(認知負荷)が一切使われない。
この「コピペするだけ」の体験は、Ctrl + . でVisual Studioが「usingを追加しますか?」ってサジェストしてくれた時くらい快感だ。
実装フェーズ2:「移住カンバン」のアジャイル開発
次に、洗い出した100以上のタスク。これを「アジャイル」に管理する。
これもNotionのデータベース機能で「タスクDB」を作る。
<プロパティの設計>
- タスク名: (例:ビザ申請書類Aの準備)
- ステータス: (
ToDo,In Progress,Blocked,Done) - 担当: (
俺,妻,会社の人事,不動産屋) - 期限: (デッドライン)
- 依存関係 (Relation): (例:「ビザ申請」は「戸籍謄本翻訳」に依存)
ミソは「ステータス」と「依存関係」だ。
「依存関係」は、Notionのリレーション機能で、他のタスク(「戸籍謄本翻訳」)と紐づける。
これで、「あ、これやる前に、アレ終わらせなきゃダメじゃん」っていう手戻り(コンフリクト)が防げる。
そして、このデータベースを**「カンバンボード(View)」**で表示する。
ステータス(ToDo, In Progress…)をカラムにして、タスクカードをドラッグ&ドロップで動かしていく。
まるでJiraだ。気持ちいい。
「ジムの解約」みたいな簡単なタスクが「Done」に吸い込まれていくのを見るのは、CI/CDパイプラインが「Success」で緑色になるのを見るのと同じくらい、精神衛生にいい。
「転」の核心:暴走するエンジニア魂 — 「自動化」への狂気
さて、ここまでなら「デキる人」のタスク管理だ。
だが、俺たちはエンジニアだ。
「効率化」の匂いを嗅ぎつけたら、満足するまで自動化したくなる生き物だろ?
俺は、この「ダッシュボード」を眺めながら、新たな「非効率」に気づいてしまった。
「あれ? このカンバン、結局『俺』が手動で更新してね?」
- ビザセンターからの「書類受理しました」メールが来たら、俺がNotionを開いて「ステータス」を
In Progressに変える。 - 航空会社からの「支払い期限は明日です」メールを見たら、俺がNotionの「期限」を再確認する。
- スキャンしたパスポートのPDFは、ローカルのフォルダにある。タスクカードには「スキャンした」って書いてあるだけ。
「連携」が、ない。
このシステム、APIが公開されてないレガシーシステム(役所)と、俺っていう「手動バッチ処理」で、なんとか繋がってるだけだ。
冗談じゃない。
俺は、WPFで INotifyPropertyChanged を実装し忘れて、値(Model)が変わったのにUI(View)が変わらない、みたいな中途半端な状態が一番キライなんだ。
プロジェクト『俺の海外移住』、自動化フェーズ、開始。
ハック1:メールの自動連携 (Zapier / Make)
まず、このプロジェクトで一番の「割り込み(Interrupt)」要因である「メール」をハックした。
移住専用のGmailアドレスを用意し、Zapier(あるいはMake/Integromat)を使った。
(知らない? 大丈夫、ノーコードでサービス同士を連携させるiPaaSツールだ。俺たちなら10分で理解できる)
【トリガー】
「Gmailで、ラベル『移住_重要』がついたメールを受信したら」
【アクション】
「Notionの『インボックスDB』に、件名と本文を自動で書き込む」
これだ!
ビザセンター、航空会社、不動産屋…これらからのメールは、自動でNotionに「タスク」として起票される。
俺は、Gmailの受信トレイを「監視」する必要がなくなった。
Notionのダッシュボード(インボックス)だけ見てればいい。
非同期処理(async)の完成だ。 メールという「重いI/O処理」を待たずに、俺は俺のタスク(awaitの続き)を進められる。
ハック2:ドキュメントの一元管理 (Cloud Storage)
次に、PDF、JPEG、Wordファイル…。
これらの「成果物」をローカルに置くのをやめた。
Google Drive(何でもいい)に移住専用フォルダを作り、Notionの各タスクカードに、その**ファイルの「リンク」**を貼るようにした。
- タスク「パスポートのスキャン」→
[passport_scan_v3.pdf]へのリンク - タスク「航空券のEチケット」→
[e-ticket_final.pdf]へのリンク
これで、俺のNotionダッシュボードは、タスク管理ボードであると同時に、**「すべてのドキュメントへのインデックス」**になった。
空港のチェックインカウンターで、「Eチケットどこだっけ?」ってスマホを慌てて探す必要はない。Notionの「航空券」タスクを見れば、そこに「正解」のリンクがある。
ハック3:最強の「移住ダッシュボード」の完成
最後に、Notionの「ページ」機能だ。
「俺の海外移住ダッシュボード」という名のトップページを作った。
そこに、
- 「俺DB」(コピペ元)
- 「移住カンバン」(今やるべきこと)
- 「カレンダーView」(デッドライン一覧)
- 「自動インボックス」(メールから来た新しいタスク)
- 「ドキュメントリンク集」(クラウドストレージ)
これらを、すべて1画面に埋め込んだ。
完成したよ。
俺だけの「移住管理コックピット」が。
WPFで作るモダンなダッシュボードアプリみたいだろ?
データソース(メール、DB、ファイル)はバラバラだが、ViewModel(Notion)がそれをいい感じに集約・加工し、View(俺のダッシュアボード)にバインドする。
俺は、この「View」を見るだけで、プロジェクトのすべてを把握できる。
ぶっちゃけ、このダッシュボード構築に夢中になりすぎて、一晩溶かした。
「ビザ申請のWebサイト、UIがクソなら、こっちでスクレイピングして状況を自動取得するC#のコンソールアプリ書くか?」とか、エンジニアの悪い癖(あるいは、美徳)が暴走しかけた。
…いや、待て。それは「やりすぎ(Over Engineering)」だ。費用対効果が悪い。
「NoCode/LowCode」ツールで解決できることは、それでやる。それも立派な「技術選定」だ。
この「自動化」は、単なる効率化じゃなかった。
これは、**「精神の安定(Peace of Mind)」**をもたらすための「実装」だったんだ。
自動化の先にあるもの — エンジニアよ、人生を「デバッグ」し続けろ
「転」の章で、俺はついに「最強の移住ダッシュボード」を完成させた。
Notionをコックピットに、メール(Zapier)、クラウドストレージ(Google Drive)、そして俺の脳内(俺DB)が、すべてAPIで繋がった(ような気がする)状態だ。
正直に言おう。
これを構築した時点で、俺はもう**「勝った」**と確信していた。
このプロジェクトの成否は、もうビザが通るかどうかじゃない(いや、それも大事だが)。
この「混沌(カオス)」を、俺が「管理(コントロール)」できる状態に持っていけたこと。それが「勝ち」だった。
ダッシュボードがくれた、本当の「余裕」
このダッシュボードが稼働し始めてから、俺の移住準備は劇的に変わった。
変化1:脳のメモリが完全に解放された
「あれ、あの書類、いつまでだっけ?」「Eチケット、どのメールだっけ?」
これが、ゼロになった。
俺はもう、何も「覚えて」いない。
俺の脳は、新しい職場で使う予定の .NET の最新機能や、現地の交通事情を調べることに全振りできるようになった。
俺の「記憶」は、すべてNotionという外部ストレージ(SSD)にある。俺の脳(RAM)は、常にクリアだ。
変化2:空港でのドタバタ(例外処理)が消えた
出国の日。空港のチェックインカウンター。
「お客様、ビザの確認書類と、現地での滞在先の証明書をお願いします」
昔の俺なら、ここでパニックだ。「ええっと、どのメールだっけ…あ、スマホのフォルダ…いや、印刷した紙がカバンに…」
今の俺は、違う。
スマホでNotionのダッシュボードを開く。
「航空券」タスクにあるGoogle Driveのリンクをタップ。Eチケット表示。
「ビザ関連」タスクにあるリンクをタップ。ビザ発行通知PDF表示。
「住居」タスクにあるリンクをタップ。仮住まいの契約書PDF表示。
すべてが10秒以内に終わる。
カウンターのお姉さんもニッコリだ。これが「スマート」ってやつだ。
変化3:ストレスが「楽しさ」に変わった
一番デカいのが、これだ。
あれだけキレ散らかしていた「非効率なアナログ作業」が、もはや苦痛じゃなくなった。
なぜなら、それは俺の「ダッシュボード」をアップデートするための「イベント(事象)」に過ぎないからだ。
役所から「この書類も追加で必要です」って謎メールが来ても、イラっとしない。
「お、新しい『タスク』が来たな。Zapierが自動で起票してくれてるはずだ。依存関係は…これとこれだな。OK、ToDoに放り込んでおこう」
まるで、Jiraに新しいバグ報告が上がってきたのを、冷静にトリアージ(仕分け)してる感覚だ。
自動化(Automation)は、俺から「ストレス」を奪い、代わりに「プロジェクト管理の楽しさ」を与えてくれたんだ。
なぜ、自動化するのか? — What Truly Matters
最初のフック(起)で、俺はこう問いかけた。
「Relocation Reality Check: Why Automate?(移住の現実:なぜ自動化する?)」
「ストレスを減らし、本当に大事なことに時間を使うため(more time for what truly matters)」
俺がこの「自動化」で手に入れた「本当に大事な時間」。
それは、
- 新しい職場のC#コーディング規約を読み込む時間だったり、
- 家族と「あっち行ったら、あそこのメシ食いに行こうな」って笑い合う時間だったり、
- 日本でお世話になった人たちに、ちゃんと「ありがとう」を伝えに行く時間だったりした。
もし、俺があの「非効率」に真正面から付き合い、毎晩書類の山と格闘し、デッドラインに怯えていたら…
きっと、もっとイライラして、大事な人たちに優しくできなかったかもしれない。
新しい挑戦へのワクワクよりも、手続きの面倒くささが勝って、憂鬱になっていたかもしれない。
俺たちは、ビザ申請のプロになるためにエンジニアになったんじゃない。
俺たちは、非効率な作業に人生を消耗するために、コードを学んだんじゃない。
俺たちが日々、C#とWPFに向き合ってやっていること。
それは、単なる「プログラミング」じゃない。
それは、**「物事を構造化し、問題を特定し、依存関係を解き明かし、最適なプロセスを設計し、実装する」**という、最強の「思考訓練」だ。
この「エンジニア的思考」は、Visual Studioを閉じた後、現実世界でこそ、最強の武器になる。
エンジニアよ、世界を「ハック」しろ
これから君が飛び出す「海外」という新しい環境。
そこは、ワクワクと同じくらい、「非効率」と「理不尽」と「なんでだよ!」の宝庫だ。
- なぜ、このWebサイトは未だにIEでしか動かないんだ?
- なぜ、この手続きは「郵送」しか受け付けないんだ?
- なぜ、ここのネットワークはこんなに不安定なんだ?
そのたびに、キレるな。いや、キレてもいい。
だが、その「怒り」を、「分析」と「設計」と「実装」へのエネルギーに変えろ。
君のその「エンジニア的思考」は、君の人生をデバッグし、リファクタリングし続けるための「一生モノのスキル」だ。
コードがバグるように、人生もバグる。
プロセスが非効率なら、リファクタリングすればいい。
手作業が面倒なら、自動化すればいい。
俺がやった「移住ダッシュボード」なんて、ほんの一例だ。
君なら、もっとスマートなやり方を見つけるかもしれない。
Pythonでスクレイピングするかもしれないし、自前でスマホアプリを作るかもしれない。どんとやれ。それが君だ。
海外で働くエンジニアとして、俺が君に提供できる「知ってよかった得する情報」や「人生術」は、これに尽きる。
君のその「エンジニアリング能力」を、仕事(コード)だけに閉じ込めるな。
君の人生(ライフ)そのものを、もっと快適で、もっとクリエイティブで、もっと君らしいものにするために、そのスキルを使い倒せ。
さあ、準備はいいか?
君の「海外」という名の、壮大な新プロジェクトのキックオフだ。
存分に、世界をハックしてくれ。
応援してる。

コメント