しょっさん、2020年にやった技術的祭りをまとめる

大晦日です。Fit Boxing2 も21日連続達成です。満足です。

さて、あまり満足いかなかったのは、2020年の過ごし方です。反省と自戒も込めて、2020年の技術的スキルについて自分を振り返ります。公私混同でまとめていきます。私は今年、これだけのことをやった。いや、これしかできなかった。

# Salesforce 関係

公私混同とはいえ、社内的なことはおおっぴらにいえないので、公開事例だけにとどめます。

## 認定資格

2019年は、[Salesforce 認定システムアーキテクト](https://tandc.salesforce.com/credentials)を取得しました。次の必須資格のうち、デベロッパーだけ持っていたので、そのほかの三つですね。Lifecycle and Deployment は一度落としました。

### 取得必須資格：

- Salesforce 認定Platform デベロッパー
- Salesforce 認定Development Lifecycle and Deployment デザイナー
- Salesforce 認定Identity and Access Management デザイナー
- Salesforce 認定Integration Architecture デザイナー

さて、2020年ですが、[Salesforce 認定アプリケーションアーキテクト](https://tandc.salesforce.com/credentials) を取得しました。偉い。がんばった。アプリケーションビルダーもすでに持っていたので、今年受験したのは、Data Architecture と Sharing and Visibility です。アプリケーションとはいっても、データモデリングの考え方やアクセス認可についてという部分なので、ガチ開発と言うよりは、その前の段階の設計の部分ですね。まぁ「デザイナー」とついていることでもお察しですが、プリセールスロールとしては重要な部類です。Salesforce として、どのような設計を推奨しているかを理解できるので一通り学んでおくことはオススメします。

### 取得必須資格：

- Salesforce 認定Platform デベロッパー
- Salesforce 認定Platform アプリケーションビルダー
- Salesforce 認定Data Architecture and Management デザイナー
- Salesforce 認定Sharing and Visibility デザイナー

### Trailhead

- [【Salesforce公式】アーキテクトジャーニー：データアーキテクチャと管理](https://trailhead.salesforce.com/ja/users/welcome4/trailmixes/architect-data-architecture-and-management-ja)
- [【Salesforce公式】アーキテクトジャーニー：アプリケーションデザイン](https://trailhead.salesforce.com/ja/users/welcome4/trailmixes/architect-application-design-ja)

年明けには、いい加減 PD2(上級プラットフォームデベロッパー)取得しないとあかん(3度落ちてる)ので、来年も気を引き締めて頑張ってく所存です。

## 外部公開記事

外向けに Salesforce / Heroku の記事(qiita)をなるたけ書くようにしてます。私の立場的に、社内のSEよりも社外のパートナーさんたち向けに必要な情報をまとめることが多いという状況も踏まえてですね。

- [Salesforce で Client Credentials フローな指定ログイン情報を使いたい](https://qiita.com/sho7650/items/44db491f94e993ad5a1d)
- [Postmanを使ってSalesforce APIにアクセスする (特別なシナリオの OAuth 2.0 ユーザ名パスワードフローの場合)](https://qiita.com/sho7650/items/60da77b5532d2d81e01c)
- [[Salesforce] カスタム認証プロバイダの作り方 ~Client Credentials 編~](https://qiita.com/sho7650/items/f3287819fbcfe0473a6a)
- [Salesforce で所有者を変更しても、共有の直接設定を残しておきたい](https://qiita.com/sho7650/items/08367ee3ba49078e7567)
- [[Heroku] index.html をダイレクトに開く静的コンテンツサイトを、すぐ公開したい](https://qiita.com/sho7650/items/47e56d35e56415df5669)
- [Heroku でアプリケーションを本番リリースする](https://qiita.com/sho7650/items/6fa6a1497c77ce386097)
- [[Heroku] Bitbucket から CircleCI を使って自動デプロイする](https://qiita.com/sho7650/items/b2e0a5d2f187dc0467ec)
- [[Salesforce] OAuthを利用する「認証プロバイダ」を作成して、指定ログイン情報と外部データソースを定義したい](https://qiita.com/sho7650/items/d09165ca79f9dca0df81)

アドカレもあるので年末に集中しますし、むしろそこに集中しすぎなのと、そこで語り尽くせなかった何かを年明けに公開する傾向にあるのが悪いクセです。来年は、もっと定期的に公開できるようにしたい所存。

とりあえず、海外でもあまりない情報で、自分がいやな思いをしながら作った傑作中の傑作たちなんですが、このような利用用途が少ないためにあんまり閲覧もLGTMもされないという貴重な技術記事たちです。ホントに必要な人に届け、この愛。

資格取得した内容なども含んでいて、勉強した内容をちゃんと生かせている実感があります。

# [シェルスクリプトマガジンへの寄稿](https://shell-mag.com/)

2015年あたりから継続して連載させていただいている、ありがたい雑誌でございます。ホントにありがたい (-人-)

今年は昨年から継続している"Webアプリケーションの正しい作り方"です。偉そうなタイトル過ぎて、ホントにおこがましい。自分をなんだと思っているんだと、昨年からずっと反省してます。内容は、経費精算の雑なアプリケーションをリファクタリングしながら、良い設計・良いコードへ進めていくという内容です。

- [Vol.64 ( 2020 . February )](https://shell-mag.com/vol-64/): 連載4話目 - [認証機能の実装](https://shell-mag.com/webapp-64/)
- [Vol.65 ( 2020 . April ) )](https://shell-mag.com/vol-65/): 連載5話目 - システムアーキテクチャの検討
- [Vol.66 ( 2020 . June )](https://shell-mag.com/vol-66/): 連載6話目 - [アプリの開発・テスト環境を考える](https://shell-mag.com/webapp-66/)
- [Vol.67 ( 2020 . August )](https://shell-mag.com/vol-67/): 連載7話目 - [フロントエンドとバックエンドアプリを作る](https://shell-mag.com/webapp-67/)
- [Vol.68 ( 2020 . October )](https://shell-mag.com/vol-68/): 連載8話目 - [クリーンアーキテクチャで作る](https://shell-mag.com/webapp-68/)

ホントは[12月号](https://shell-mag.com/vol-69/)で最終回を迎える予定だったのですが、この頃に体調を崩して延期になってます。来年の2月号で載る予定です(原稿は書き終わってる)。

アーキテクチャのデザインやフロントエンドとバックエンド部分は、これまでの経験に裏付けをしながら準備をしていったものです。まとめとしてはそこそこのものになったと思いますが、ページ数がいかんせん少ない。雑誌の連載って難しいです。

そして、インフラ屋なのに何を血迷ったか、[Clean Architecture 達人に学ぶソフトウェアの構造と設計](https://amzn.to/350l16a)(AA)に従って、クリーンアーキテクチャのデザインに手を出してしまいます。おい。8話目と9話目と続いてクリーンアーキテクチャで実装を終える仕組みですが、本来のクリーンアーキテクチャ通りでなかったりして反省しきりです。

データベースの扱いについて、クリーンアーキテクチャでは、インターフェイスアダプタ層にSQL、フレームワークとドライバにORMという配置が例として載っています。この方式だとフレームワークが変わったときにインターフェイスアダプタに影響が出ます。よく考えたらそれでいいんですが、執筆当時は影響を抑制したい・関心を徹底的に分離したく、データベースに関わる部分をすべてフレームワークとドライバ層へおいやりました。SQLだって方言があるからというのが個人的見解です。

それってどうなの感ありますが、インターフェイスアダプタはデータベースで必要なデータの変換などに注力すればいいじゃんと考えたわけです。よくよく考えたら、そうするとデータベースでどのようなデータ形式で保持するかどうかってのは、SQLの方言と同程度には影響するんです。MySQLからPostgreSQLやOracleに変わったとき、私の考え方でもインターフェイスアダプタでのデータ変換には影響が出るはずなんです。まったく完全に互換性のあるデータ形式ではないでしょう。ああ、なるほど先人たちはよく考えていました

ということで、ここで反省しておきます。間に合えば、原稿に手を入れるかもしれない(多分、間に合わない)。

# 個人的趣味的技術ログ

仕事や家に関わるようなこと以外は、特に何かを成し遂げた感じのない、いわゆる趣味的な技術スキル向上は0に近い年でした。まぁでもTypeScriptやIPv6あたりは今後のお役立ちになるだろうし、ここを元にして次の何か新しいことでもしてみたいですね、来年はね。

## 今年読んだ技術本

毎年「今年は読むぞー」って気合い入れながら年初を迎えるんだけど、まぁ読まなすぎる。マンガは数百冊読んだはずなのに、一体何をしているんだ俺は。

- [東京大学工学教程　システム工学　システム理論I](https://bookmeter.com/books/9776723)
- [iOSアプリ設計パターン入門](https://bookmeter.com/books/13923289)
- [Vue.js入門 基礎から実践アプリケーション開発まで](https://bookmeter.com/books/13103155)
- [レガシーコードからの脱却 ―ソフトウェアの寿命を延ばし価値を高める9つのプラクティス](https://bookmeter.com/books/14326315)
- [プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発](https://bookmeter.com/books/15271021)
- [JavaScript Primer　迷わないための入門書](https://bookmeter.com/books/16075978)
- [Node.jsデザインパターン 第2版](https://bookmeter.com/books/13720654)
- [体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践](https://bookmeter.com/books/2462902)
- [X68000パーフェクトカタログ](https://bookmeter.com/books/16852266)
- [iPadはかどる! 仕事技2021](https://bookmeter.com/books/16879209)

## 一般のご家庭であるわが家こそのネットワーク問題

今年は、テレワークが続くようになって、Internet の帯域不足に陥りました。IPv4 PPPoEに限界を感じて、IPv6へと移行したものの、各プロバイダの制限によって苦しい目に遭います。ようやく落ち着いたとはいえ、10人以上のアクティブ利用者がいるわが家では、ちょっとした会社並のトラフィックが平気でやりとりされる、という恐ろしいことに気がつきました。結局のところ、一般のご家庭用ではなく、ビジネス回線がホントは必要なんだなーとずっと感じてます。

今は、IPv6は平均して[300Mbps+](https://fast.com/en/share/370Mbps.html)

![Screen Shot 2020-12-31 at 11.56.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37263/84f7068a-9bb8-ef47-e566-22cf1ceaa9c0.png)

IPv4はだいたい[download 100Mbps+, upload 200Mbps](https://www.speedtest.net/result/10673050010)という感じですね。

![Screen Shot 2020-12-31 at 11.59.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37263/1d8068b0-3b96-79ba-1fe1-8f8222177039.png)

[transix IPv4固定](https://www.mfeed.ad.jp/transix/staticip/)仕様の所為だと思いますが、安定して100Mbps前後出てくれるのはありがたいです。助かります。とはいえ、たまに帯域不足に陥ったりするので、来年はビジネス回線も多少考慮しないとならねぇかなと考えてはいます。

### note.com でのネットワーク関係の記事

- [おうちのネットワーク・トポロジーを変更してみた](https://note.com/sho7650/n/nf6da54b24fdb)
- [せっかくのIPoE化もDS-liteの制限で台無しだったので、代替策を考えた](https://note.com/sho7650/n/n5a00e1a582bf)
- [transix の AFTR の NAT変換テーブルについて調査してみた(途中経過)](https://note.com/sho7650/n/n25c48e3938ef)
- [Telegraf + InfluxDB + Grafana でネットワークを可視化してみた](https://note.com/sho7650/n/nc60176d4ace2)

### qiita でのネットワーク関係の記事

- [Edgerouter X(ER-X) 用に ndppd をカンタンにビルドする (ひかり電話なし)](https://qiita.com/sho7650/items/da9bc34f1640223aaf99)
- [Edgerouter (ER-X) で DS-lite だけしてみる (ひかり電話なし)](https://qiita.com/sho7650/items/23d668d246166338c398)
- [Edgerouter (ER-X) で NDプロキシを使って IPv6通信を行う (ひかり電話なし)](https://qiita.com/sho7650/items/f0d90957e860456f4481)
- [Edgerouter (ER-X) で IPoE + DS-lite で IPv6/IPv4 環境を構築する (ひかり電話なし)](https://qiita.com/sho7650/items/6dd4c8145411686d012d)
- [NETGEAR スイッチングハブの設定後 "Admin Mode" を "Enable" にすること](https://qiita.com/sho7650/items/56eb76755fe0da8295e8)
- [ER-X(Edgerouter) でInterlinkの固定IPサービスを利用する (ひかり電話なし)](https://qiita.com/sho7650/items/2d8d3aae5246619c9c1e)

いろいろと大変だったけど、IPv6いじれるようになったりしたこの経験は今後役に立つ場面あるだろーなと思いつつ、根っからのインフラ屋さんであることを痛切に感じたころですね。楽しかった。しんどかったけど。

## そのほかの技術的なお話

あとは気まぐれや、そのときの気分でエッセイを綴ってたことが多いこと氏でした。[note.com](https://note.com)をがんばってみようとしたりしたのもあるかもしれません。そんなに長続きしませんけどね。

### note.com での技術的エッセイ集 '20

[エンジニア小咄](https://note.com/sho7650/m/m60dbc090eecf)でも覗いてくれと思いつつも、なんとなくまとめてしまうから、人生の時間が短くなってしまうのよね。年初に書いたエンジニア向けの記事がちょっとバズって、今年は頑張れると思ったけど、それまででした。人生は長く険しいものである。

- [インフラエンジニアへ期待すること](https://note.com/sho7650/n/n688439664a4e)
- [インフラエンジニアとアプリケーションエンジニアの混沌の歴史](https://note.com/sho7650/n/n291066e94fe2)
- [頭がぽーっとしていたら、昔を思い出した](https://note.com/sho7650/n/n6761c3231256)
- [プロとしてお仕事を続けていくということ](https://note.com/sho7650/n/n5a038b54d34c)
- [エンジニアが視点を変えるということ](https://note.com/sho7650/n/n3b1904848631)
- [老害のスタート地点](https://note.com/sho7650/n/ned17a6a57187)
- [変えないエンジニアと、新しいものだけを使いたいエンジニア](https://note.com/sho7650/n/ne613606704dc)
- [何かを始めるための、その１](https://note.com/sho7650/n/n5dc4fd47e147)
- [「ありがとう」ということの大切さ](https://note.com/sho7650/n/n92b8e1999959)
- [note 有料記事の勘所がわからない](https://note.com/sho7650/n/na9e2f55b2134)
- [オンライン飲み会のススメ](https://note.com/sho7650/n/ne708827dea1b)
- [リモートワークで、困ったりすること](https://note.com/sho7650/n/n7147678e6b53)
- [リモートワークに重要なのは机と椅子だ](https://note.com/sho7650/n/n3fda077cca34)
- [「エンジニアのための図解思考 再入門講座」を読んで、今すぐシステムを自分で作り上げろ](https://note.com/sho7650/n/nea4b13a3d0b0)
- [気がついたらディスプレイが売っていない](https://note.com/sho7650/n/na17bdb8751ca)
- [ポモドーロ・テクニックで運動不足を(ちょっと)解消する](https://note.com/sho7650/n/n2bf6b0bf8253)
- [Macでの動画コンテンツ(gif)の作成に手を出してみる](https://note.com/sho7650/n/n4edd37719422)
- [Apple Pencil で、絵も字も書きたいときに役立つツールたち](https://note.com/sho7650/n/n2a9b9b6753fa)
- [Krisp で Web会議のノイズを削減させてみる](https://note.com/sho7650/n/n048b1771e45f)
- [システムのインフラを作ることは、こんなにも楽しい](https://note.com/sho7650/n/nf6c4488f5327)
- [Happy Hacking Keyboard Professional HYBRID Type-S が家に来た](https://note.com/sho7650/n/n0f224bbf3ee2)
- [HHKB Pro HYBRID Type-S を 1日使ってみて](https://note.com/sho7650/n/n5fcc6c32df66)
- [[HHKB] キーカスタマイズすると広がる世界 [Karabiner]](https://note.com/sho7650/n/n305357ca3151)
- [Karabiner さん、"input_sources"が日本人にとって便利すぎる](https://note.com/sho7650/n/nadb86344fbd0)
- [久しぶりに ATOK に帰ってきた](https://note.com/sho7650/n/nd00c8ec843da)
- [M1 MacBook Air が到着したので、ベンチマーク以外のことについて書いてみる](https://note.com/sho7650/n/ncff40f6cc422)
- [M1 MacBook Air の環境構築(導入アプリ編)](https://note.com/sho7650/n/n84ce562fa00c)


### qiita でのそのほかの記事

qiita はほとんど書いてなかったんだなー、ははーんて感じ。Salesforceとネットワークばっかりの年だったんだねぇ。テレワークに合わせて、家の中のいろんなものを数値化したくて、この記事も書いたんだよね。

- [[RasPi] Enviro+ で部屋の状態を数値化してみた](https://qiita.com/sho7650/items/1d4877aa17810d70c75b)

# まとめ

エッセイ中心なアウトプット多すぎるけど、これはこれでまぁ。何も書かないよりかはマシ。それよりも、この程度を書くのに1時間以上かからないように、この冬休みにアウトプット効率化について考え直す。これだわ。