2019年の自分の OSS 活動について振り返る

こんにちは。[Salesforce Platform Advent Calendar 2019](https://qiita.com/advent-calendar/2019/salesforce-platform) の 15日目のエントリになります。

# はじめに

今回は、去年のいまごろから1年間で自分がどれくらいのコードをプライベートで書いてきたかを自分のために振り返りたいと思います。みなさんへの宣伝もかねて :yum:

<b>凡例</b>
:star: 新規
:sunflower: 更新

# Dependency Injection Sample for Apex Trigger

:star: https://github.com/takahitomiyamoto/di-sample-apex-trigger

> [作った時のブログ](https://qiita.com/takahito0508/items/59291ef464aa3c5c2c36)

Dreamforce 2018 で得たインスピレーションをぶつけた、我ながら自信作です。いまだ Apex トリガのレガシーなパターンを使っているかたも多いようですが、大規模開発においては同じようなコードをコピペしなければならないし、テストコードも書きづらいですし、もっと疎結合に設計したほうがかしこいです。

今後このパターンを浸透させていきたいので、2020年の落ち着いたタイミング（3月あたり）に「Apex トリガ入門」的なステップアップで勉強できるような資料を作成して公開していこうと思います。

# Apex Basic

:star: https://github.com/takahitomiyamoto/apex-basic

大阪で定期的に主催している開発者向けの勉強会で使用するために作成しています。自習用の教材となっていて、問題と解答のコードを公開しています。

> [大阪での Apex 勉強会 #01](https://accenture-technology.connpass.com/event/137259/)

Apex 初級の勉強会しか開催していないため、まだ初級編しか公開できていません。前出の「Apex トリガ入門」的なステップアップ教材は、ここに中級編・上級編として作っていくイメージです。

# LWC Basic

:star: https://github.com/takahitomiyamoto/lwc-basic

こちらも、大阪で定期的に主催している勉強会で使用するために作成しています。

> [大阪での LWC 勉強会 #01](https://accenture-technology.connpass.com/event/142560/)
> [大阪での LWC 勉強会 #02](https://accenture-technology.connpass.com/event/155592/)

このテーマの勉強会をこれまで 2回開催しましたが、LWC が人気のため早くも第3回目が来年開催決定しています。Apex と比べても日本語のリソースがとても不足しているため、どんどん増やしていきたいと思っています。

# Salesforce DX Project Template for Remote Development on VS Code

:star: https://github.com/takahitomiyamoto/vscode-remote-sfdx-project

Salesforce の統合開発環境をサッと作るために用意しました。けっこう便利です。

> [作った時のブログ](https://qiita.com/takahito0508/items/f2bf8bbd503e8865747f)

ただ、自分の端末のスペックが弱くて、Docker を動かさずに [Salesforce DX Project Template を利用した開発をクイックスタートするシェルスクリプト](https://qiita.com/takahito0508/items/9f71dc2bda51c2744e87) でテンプレートのみ使ったりしています。これだけでも十分便利なんですけど、やはりセットで使いたいですね。。。:sweat: 新しい端末を買おう。

# Heroku Buildpack for Salesforce - Org Development

:star: https://github.com/takahitomiyamoto/salesforce-buildpack-org-dev

Heroku Pipeline を Salesforce のデプロイにどうしても使ってみたくて、でも CI に Scratch org は使いたくなくて、自作しました。[Heroku Advent Calendar 2019](https://qiita.com/takahito0508/items/0f30e441dd5fba673560) にも寄稿しています。

個別の設定をハードコードしちゃってるので、汎用性はまだありません。これからいい感じにしていきたいと思っているところです。

# Einstein Platform Service App

Einstein Platform Service API を気軽にコールするためのクライアントを LWC で作りました。

:star: https://github.com/takahitomiyamoto/einstein-platform-service

今年 [Einstein Champions Program](https://www.salesforce.com/campaign/einstein-champions/) に選ばられたこともあり、ますます Einstein Platform Service API について詳しくならないといけないと思っています。

[Winter '20 のアップデート](https://releasenotes.docs.salesforce.com/ja-jp/winter20/release-notes/rn_einstein_platform_services.htm) では JSON 構造に変化があったことと、LWC から Apex 経由で外部の Web API をコールアウトする方法を試してみたかったため、[Developers meetup での登壇の機会](https://medium.com/takahitomiyamoto/einstein-platform-update-winter-20-release-5db0b68b7d2d) で挑戦してみました。今後もバージョンアップに合わせて、コードを追加していこうと思います。

# salesforce manifest generator

Salesforce を Org Development Model で開発する際によく利用する package.xml の自動生成ツールです。

:sunflower: https://github.com/takahitomiyamoto/salesforce-manifest-generator

[初めてアドベントカレンダーに参加した時のエントリ](https://qiita.com/takahito0508/items/f5dac3ac214bc75142cf) で発表して以来、けっこう根強い人気があって今年までメンテナンスを続けていました。今後は、[sfpowerkit](https://github.com/Accenture/sfpowerkit) の [同様のコマンド](https://github.com/Accenture/sfpowerkit#sfpowerkitorgmanifestbuild-beta) が正式リリースされる予定なので、そちらをもって retired しようかと思っているところです。

# scraping-trailhead-scores

Trailhead のスコアを selenium の Web Scraping で一気に取ってくるツールです。

:sunflower: https://github.com/takahitomiyamoto/scraping-trailhead-scores

Trailhead のプロファイルページの構造が変更されるたびにメンテナンスを続けてきました。しかし、直近の大幅なアップデートにより、スーパーバッジの数が表示されなくなってしまいました。。。

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Hi <a href="https://twitter.com/trailhead?ref_src=twsrc%5Etfw">@trailhead</a> , I would like to get the number of superbadges on new trailhead profile page, but I cannot see it. <a href="https://t.co/Sz9Y9sKTck">pic.twitter.com/Sz9Y9sKTck</a></p>&mdash; Taka *heat* Miyamoto (@takahito0508) <a href="https://twitter.com/takahito0508/status/1188629858785484800?ref_src=twsrc%5Etfw">October 28, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

これにより、スーパーバッジの数を取得する部分のコードをコメントアウトせざるを得ない状況になっています。解消されるとよいのですが :cry:

# 所感

8個、思ったより少なかったです。もっともっと書かないといけませんね :stuck_out_tongue:

# 来年に向けて

一発目の大きなイベントとして、1月の <b>[Japan Dreamin' 2020](https://www.japandreamin.com/)</b> をがんばります。今回は2つの登壇を控えていて、そのためのコードも年末年始で書きあげます！お楽しみに。そして、ぜひ会場で一緒に盛り上がりましょう。

- [Don't Stop Deploying!! SFDX時代のデプロイ体験 リターンズ](https://www.japandreamin.com/sessions/dont_stop_deploying/)

- [ハンズオンで学ぶ！テクニカルアーキテクト体験ワークショップ](https://www.japandreamin.com/sessions/technical_architect_workshop/)

#  おまけ

幸運にも、[Dreamforce 2019](https://www.salesforce.com/dreamforce/) に参加してきました。去年も参加したのですが、今年もいろいろな体験をすることができました。その感動を medium ブログにまとめていますので、よかったらご覧ください。

- [Reflection of my Dreamforce 2019](https://medium.com/takahitomiyamoto/df19/home)

以上になります。それではまた。