苦節二年の時を経て職業錬金術師になれた話

前日の8日目は、[piyopiyo.ex](https://piyopiyoex.connpass.com/)のオーガナイザーのお一人 @t-yamanashi の「[Ectoを使ってみよう](https://qiita.com/t-yamanashi/items/13e12dc98de0c3e59db7)」でした！

---

Elixirの使い手をアルケミストと呼ぶそうです。
アルケミストは日本語で錬金術師、錬金術師は科学発展の歴史の中で金を合成しようとした人たちです。

私は今年からElixirで錬金（make money）することができ、雌伏の時を経て職業錬金術師になれたと思うのでそれについて書こうと思います。


# Elixirとの出会い

Elixirを知ったのは2019年の後半ごろで、当時の自分は対人関係と忙殺されるだけで積みあがるものがない状況に悩みを抱えていました。

そんな状況下でも、高校生の頃に漠然といだいたプログラマーへの憧れは10年以上たっても消えておらず、twitterで情報収集をしては少ない時間をみつけて勉強していました。私はクラス志向の言語になれることができず（今でもまだなれていません）、漠然と関数型の言語を学びたいと思っていました。

そんな折、twitterでは @piacerex がElixirエバンジェリストとして布教をしており、気軽に（リモートからも）参加・質問もできる [fukuoka.ex/kokura.ex](https://fukuokaex.connpass.com/event/) があることを知りました。

気づけば、「[プログラミングElixir](https://www.ohmsha.co.jp/book/9784274226373/)」（このころは第一版でした）を購入し、読み、fukuoka.ex, kokura.exに参加し、Qiitaの記事を読み書きしていました。

最初は`Enum.map/reduce`やPhoenixのデータフローの考え方にだいぶ苦戦したのを覚えています。


# 大量の時間投下

私はElixirと出会うまでに

* 試験設備のシステムエンジニア（IT業界におけるSEのイメージとは異なると思います）
* 試験設備の運用開発管理
* 組み込みLinux上で動作するプログラムの開発

を経験していましたが、プログラミングを主とした（と思った）ことはなく、決断・判断、納期と対人折衝に忙殺される時間が多く、自身を職業プログラマーとは思えませんでしたし、実際もそうでなかったと思います。

いろいろな悩みから離職した私は、「お金はないが時間はある」状態を利用し、プログラマーとしての基礎を学び直すべく興味を持ったElixirに対し大量の時間投下をしました。
（このときは職業錬金術師になりたいというよりは、ちゃんとプログラムのかけるプログラマーになりたいという思いが強かったです）

* 2019.11 Enumを使いこなせるように再帰をベースにEnumを実装する[oreore_implementation_of_myenum](https://github.com/pojiro/oreore_implementation_of_myenum)でトレーニング
* 2019.12 [Nerves.jp](https://nerves-jp.connpass.com/) slackに参加
* 2020.01 「[Sapporo.beam](https://sapporo-beam.connpass.com/)」をもじったリモートもくもく会「[OkazaKirin.beam](https://okazakirin-beam.connpass.com/) 」を開始
    * （今も毎週木曜にもくもくし続けています）
* 2020.09 [技術書典9](https://techbookfest.org/event/tbf09)で自身がPhoenixを学ぶ際につまったことを整理した「[データフローで学ぶPhoenix](https://techbookfest.org/product/5739925018247168?productVariantID=6254017705410560)」を頒布
* 2020.10 [Interface 2020年12月号](https://interface.cqpub.co.jp/magazine/202012/)で「[IoT向きモダン言語Elixirの研究 第6回　出荷後の機器のファームウェアをOTAで更新](https://interface.cqpub.co.jp/wp-content/uploads/if2012_158.pdf)」を @takasehideki と執筆
* 2020.12 [IoT ALGYAN](https://algyan.connpass.com/)のイベント「[【オンライン】豪華プレゼント付！Elixir/Nerves(ナーブス)体験ハンズオン！](https://algyan.connpass.com/event/197306/)」に協力
* 2021.05 @myasu と協力し [産業用堅牢ハードでElixir：e-RT3にNervesポーティング](https://qiita.com/pojiro/items/81f3aafb77eed47f3baa)
    * [nerves_system_f3rp70](https://github.com/pojiro/nerves_system_f3rp70)
* 2021.07 Nervesを使用した日本初のプロダクト「[Pocket LANcher](https://www.pocket-lancher.com/)」をリリース
* 2021.09 [SWEST23](https://swest.toppers.jp/)で「[【NervesJPプレゼンツ】SBCの使い方の新しいカタチ](https://swest.toppers.jp/SWEST23/program/pdfs/s2b_public.pdf)」を発表


ほぼ二年間、個人事業をしながら、学習してアウトプット、手を動かしてアウトプットを続けました。

※発表の機会を与えてくださった方・協力してくれた方には心より感謝申し上げます。:pray: :bow:
※上記からも読み取れるとおり、Nervesと出会えたことは私に非常に大きな影響を与えています。
　昨年のアドベントカレンダーでは「[なぜ僕はNervesに期待するのか](https://qiita.com/pojiro/items/99a60dc8a4427b79ddc7)」を書きました。


# 仕事への応募

> 2021.07 Nervesを使用した日本初のプロダクト「[Pocket LANcher](https://www.pocket-lancher.com/)」をリリース

までの過程でNerves, Phoenixを一通り理解し、実装できるようになったという手ごたえがありました。
（でなければ当然リリースできない）

その折、@piacerex の以下のtweetを見つけます。

https://twitter.com/piacere_ex/status/1415829458271891456

@piacerex は2019年12月のアドベントカレンダーで「[「Digitalization Dock」というコンセプト](https://qiita.com/piacerex/items/651dcbfae7f387ba996a#digitalization-dock%E3%81%A8%E3%81%84%E3%81%86%E3%82%B3%E3%83%B3%E3%82%BB%E3%83%97%E3%83%88)」を打ち出しており、その中で以下のように触れています。

> 「事業プレイヤーとしてElixirで活躍できる場」の提供をどうにかできないか
...
> 新たなElixir専業の事業会社を設立する運びとなりました

この募集はその会社からでした。
※@piacerex はコンセプトをぶち上げ、それを現実化することを続けており、
　続々と雇用創出をしていることは氏のtwitterアカウントを追うとわかると思います。


チーム開発の経験が無い点が、私の課題であり不安点でしたが勇気を出して応募しました。


# 仕事の実際

プロジェクトは2021年9月からスタートし、今も継続しています。

Elixir, Phoenixについては大量の時間投下の下積みがあったおかげで、苦労なく開発ができています。
Web分野の開発の進め方は経験不足ではありますが、キャッチアップしつつ進められています。

草を生やしプロジェクトへ貢献できるよう努めています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369713/6ec42f49-74ba-fe4d-9a34-1ec86c0b0f7b.png" width="40%"> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369713/fbd64892-790b-1058-eb00-13bb0b9a20a2.png)


また、不安点であった、チーム開発もチームメンバーのおかげですんなり慣れることができました。
チーム開発では以下のような経験ができており、大変感謝しています。

* Dockerを利用したOS差異を吸収した環境で開発ができるという知見が得れた！（チームメンバーはMac, Linux, Windowsで開発）
    * 耳では聞いていたが実際どのようにするのか知らなかった💦
* コードレビューが受けられる！
    * コードレビューを受ける経験は初めて💦
* CIが回るから安心して開発できる！
    * CIが回る環境で働くのは初めて💦


# 職業錬金術師になれたのか？

今回、Elixirの仕事を一つお受けすることができました。

そして、二年という大量の時間投下の中でアウトプットし続けたことが種まきとなり、それらが芽吹きつつあることも感じています。

また、Nerves, Phoenixを使った自身の「[Pocket LANcher](https://www.pocket-lancher.com/)」もビジネスとして育ててゆきます。

なので、**私は職業錬金術師になれた（なった）と思います。**

どの分野においても、お受けする単価に見合う仕事をし、信用を積むことが次の仕事につながります。
一喜一憂せず緊張感をもって今後も職業錬金術師として技術を（賢者の石となるよう）磨いてゆきます。

明日は、Elixirのコアな機能を深堀りする「BEAM／OTP対話」サブオーガナイザの@Gsannさんで「[ElixirでGoogleAPIを実行してYoutubeの動画情報を取得する](https://qiita.com/Gsann/items/c3f7569c5b5e2cfd1f1f)」です