駆け出しエンジニアの「ポートフォリオどうしよう？」を解決するサービスをリリースしました

## はじめに

駆け出しエンジニアのみなさん、ポートフォリオ[^1]作成に悩んでいませんか？

[^1]: 駆け出しエンジニア界隈の「ポートフォリオ」とは、技術力などを示す個人開発サービスを指します。

駆け出しエンジニアにとっては、企画から開発まで自力でできる力を示すために、**いかにポートフォリオを作り上げるか**ということが重要です。
しかし、初めての人がゼロから1つのプロダクトを作り上げるのはとても大変です。

- みんなはどんなポートフォリオをどんな技術で作っているんだろう？
- 自分と同じくらいの規模のプロダクトのソースコードを見てみたい

そんな悩みを解決するために開発したのが、このポートフォリオ集約サービス**「Fledge Hub」**です。


**https://fledge-hub.com**

https://fledge-hub.com

[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322882/77f8d061-be7d-b902-cf76-d967a162d9c3.png)](https://fledge-hub.com)


## サービスについて

サービスに関して登録できる情報は、以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322882/8802c084-adb9-cdec-fa85-b8d456656da2.png)

検索は、タイトルなどのフリーワード検索だけでなく、タグ検索も可能です。
なんとなく「Railsを使って診断系サービスを見てみたい」と思ったときは、以下のように検索することができます。
![Image from Gyazo](https://i.gyazo.com/caa5f763085394b83f1a381d585cbce4.gif)

ユーザー一覧から、そのユーザーが作成したサービスを見ることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322882/7e5ff015-02dd-8d5f-fb34-df87e2d9a601.png)


## こだわりポイント

### 投稿時にOGPを取得する

フォームを見ればわかるのですが、入力項目がかなり多いです。できるだけ入力しなくてもいいように、サービスのURLからOGPを画像として取得するようにしています。
でも、追加でさらにスクリーンショットを登録してもらえるとめっちゃ嬉しいです。


### ログイン

ログインはできるだけ楽にしたいけど、バリデーションエラーに対応できるようにしたいということで、GitHubログインでデータ取得＆登録という動線にしました。これはQiitaを参考にしています。
学習開始日はデフォルトだとGitHubの登録日です。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322882/b08a1036-14be-2cd2-81fc-7bbbb8a6eaaa.png" width="600px">


### 外部アカウント

投稿者をGitHubのアカウント、Twitterのアカウント、ブログなどと紐付けしたいなと思っていたので、アカウント名 / URLを入力できるようにしています。これもQiitaを参考にしました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322882/b2ace7bd-5eb6-6326-a9d5-da9a79890ec3.png" width="500px">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322882/af4bf789-37d1-ed67-3346-49c4d879afdc.png" width="300px">
実装については[こちら](https://blog.aiandrox.com/posts/tech/2021/06/30/)


## 使用技術

### Ruby 3.0, Rails 6.1

みんな大好きRailsです。


### Hotwire(Turboのみ)

フロントの開発にはあまり時間を割きたくなかったのと、DHHが推奨しているということで興味があったので、Hotwireを採用しました。とはいっても、Stimulusは現時点では使っていないのですが。
Turboのおかげで、何も設定しなくてもページ遷移がさくさくになるのが楽ですね。このさくさく感はぜひ体感してください。
ちなみに、ストックボタンの非同期処理はTurboStreamを使いました。

まだStimulusは使っていないのですが、さくさくと開発速度の両立でHotwireはなるほどいい選択肢になるかもしれないと思いました。ただ、DSLなのでわざわざ選ばれにくいというのは納得です。
サービス開発でコスパを求めるならHotwireはありだと思います。私もまだまだ浅瀬ちゃぷちゃぷですが。


### Tailwind

できるだけ拡張性の高いCSSフレームワークを使いたかったのと、流行っているらしいという興味によって、Tailwindになりました。
CSSを書く感覚でクラスを書けるというのは本当でした。最初はドキュメントやサンプルとにらめっこしていましたが、そのうち大体の感覚でスタイルを当てられるようになりました。
「Tailwind card」とかで検索すれば、ある程度完成されたコンポーネントも出てくるのでよかったです。

クラスを見れば一目瞭然なので、グローバルなCSSが汚れない点は大きなメリットだと感じました。
しかし、共通化しようとするとグローバルにせざるを得ないので（フォーム用のクラスは`application.scss`に定義している）、結局……とはなりました。
あとは、やはりパッと見のクラス表記が汚い。

とはいえ、書きやすさとデザインの自由度でめちゃくちゃ気に入りました。
今後、ある程度自分でデザインをいじるものを開発するならTailwindを使うだろうなと思っています（デザイン雑にするなら他のCSSフレームワークかな）。


## 共同開発について

このサービスは元々私が発案し、なんやかんやがあって、私が卒業したプログラミングスクールRUNTEQ内でのOSSにしました。

https://prtimes.jp/main/html/rd/p/000000016.000057664.html

開発に携わってくださった方は十数名、リリースまでは半年ほど掛かりました。
業務で学んだコードの書き方を活用できたり、やってみたいと思っていた技術を試すことができたので、個人的に楽しかったです。また、他の人のコードレビューを通して、それぞれの就職先での知見エッセンスを得られたような気もします。

私のわがままを通したところもありますが、みなさんの協力のおかげでリリースすることができました。本当に感謝の気持ちでいっぱいです。
今後も開発したいことはたくさんあるし、他の人の意見から改善もしていきたいと思っています。


## 最後に

過去にポートフォリオを作った経験のある、駆け出しエンジニアだった方へ。
自分の開発の軌跡を見返すために、そして、未来の駆け出しエンジニアのためにも、ぜひあなたのポートフォリオも登録していただけると嬉しいです。
（サービス終了していても大丈夫です）（駆け出しすぎたエンジニアの投稿も大歓迎です）