コーダーがRailsでサービス作って得たもの

2017年12月に誰でもポートフォリオページを作ることができる[銀河フォリオ](https://folio.ginga.earth/search_users)というサービスのβ版を半年くらいかけてリリースすることが出来ました。

サービスを作っていく中で分かったことがあったので、これからサービスを作ってみたいと思っている方やスキルアップをしなくてはいけないけど何から手を付けようかと思っている方への何かのきっかけになると嬉しいです。

いろいろ回り道をすることがあったので少しでも近道にお役に立てれば幸いです。

# サービスを作ろうと思ったいろんなきっかけ

## 1.自身の技術革新をしていかなければという危機感
元々お仕事でサイトのコーディングをしていたのですが近年のフロントエンド界隈の複雑化やサーバーサイド側の発展などついていけてないことに危機を感じ、何か新しいことをやっていかねば淘汰されてしまうという思いが漠然とあったと思います。
今回のサービス作りは技術革新をしていくのには最適でした。理由は下記に書いていきたいと思います。

## 2.Railsを始めたきっかけ
知り合いの方がRailsで作られたサービスを運営しており、お仕事としてコーダーとして参加しました。コーディングするのにRailsの知識が必要となり調べ始めたのがきっかけでした。その中でも[小学生でもわかるRuby on Rails入門](https://openbook4.me/projects/92)というサイトを見つけて一通り読んでみて自分にも出来るかも！と手ごたえを感じ、Railsでアプリケーションを作ってみることにしました。

## 3.銀河フォリオを作るきっかけ
私自身フリーランスで活動しており営業活動が苦手でした。モノづくりにできる限り時間を使って営業活動が出来るようなサービスがあったらと切に思いました。そこで、ポートフォリオが作れるサービスを思いつきました。何よりこのポートフォリオサービスが自分のポートフォリオになると思いました。最終的なゴールは銀河フォリオからお仕事が受注できるような仕組みが作れて個人で活動する方が活動しやすい環境を作るのが目標です。

# サービスを作ってみて勉強になったこと

## 1.開発環境はLinuxがやりやすかった
Windowsをメインに使っていたのでWindows環境でRailsの開発環境を整えることにしました。調査したところ[Rumix 2](http://ruby.morphball.net/rumix/)をインストールすればRubyプログラミング環境を整えられると書いていたので導入して、Railsの開発を始めましたが下のような問題が起こりました。

- Linux環境（たしか持っていたラズベリーパイ）で動かすのにWindowsの開発環境で作ったRailsのGemfile.lockファイルに「`-x64-mingw32`」という記述が入り、いちいち修正する必要があった
- 何か新しいGem（例えばImageMagickやPostgreSQLを使うようなもの）を使うのにLinux環境とWindows環境でインストール手順が異なり結構苦労する。（Windowsで作成したRailsをLinuxで動かすのに環境の違いなどで動作しないことが多々あった）

上記の理由から開発環境もWindows上でLinux開発環境が作れるVagrantで行うことにしました。
あと、技術をする人がLinuxの環境に近いMacを選ぶ理由がよく分かりました。

## 2.有料だけどRubyMineを導入する価値があった
RubyMineを導入していなかったらおそらくサービスをリリース出来てなかったと思えるくらい効率が上がります。コーディングもGitもSSHもSFTPもRakeもGenerateも全部RubyMine上で出来てしまいます。一番大きな恩恵はブレークポイント設定してデバッグがしやすいことでした。他のツールをほぼ使う必要がなくなり、コーディングツールとしても非常に使いやすいです。お仕事のコーディングでさえRubyMine上で実施しています。とにかく、よくできたツールです。

## 3.CSSフレームワークの導入
お仕事のコーディングはお仕事内容によってルールが決められていたりするのでなかなか導入できなかったのですが今回はCSSフレームワークを導入してコーディングをしてみようと思い、「Bootstrap」と「Foundation」の二つのCSSフレームワークを本格的に試してみることにしました。

最初、デザインを作らなくてもある程度の見た目が作れる「Bootstrap」はプロトタイプを作るのに使用しました。機能が足りなさそうだったので次に導入したのは「Foundation」でした。重厚なCSSフレームワークで機能がたくさんあり使いやすかったのですが開発環境でCSSを書き換えるたびに、precompileが走り数十秒待たされることになって効率が悪くなり結局はがしてしまいました。

この「Foundation」はレスポンシブサイトを作るのに便利な機能がたくさんあり、お仕事でフィードバックできるようなノウハウがつまっていたのでFoundationを参考に必要な機能を実装しました。

はがしてしまいましたが普段、コーディングする方はぜひこのFoundationの思想に一度触れてみてほしいです。導入の価値は絶対にあります。

## 4.新しい技術を試しやすい
仕事でコーディングをやっていくのになかなか新しい技術を導入するきっかけがなかったりするのですが、自分で作っているサービスなので新しい技術をどんどん試すことができます。ある意味では実験の場として活用することが出来ます。ここで試してうまくいったことを仕事にもフィードバックしやすいというメリットがあります。

サービス作りも出来て技術を習得するのに課題も作りやすく一石二鳥でした。モチベーション維持にもつながります。

## 5.一つのサービスをひたすら磨き上げるのが非常に勉強になる
最初は小さなサービスをたくさん作り勉強しようと思いましたが一つのサービスをじっくり育てることがとても重要だと気づきました。一つのサービスの質を上げ技術基盤を育てることがスキルアップに繋がっているように思います。サービスをしっかり作り上げて培った基盤で次の技術やサービスへつなげていこうと思います。

## 6.他のサービスのUIが良く出来てることに気づく
UIを作るのにいろんなサービスを見て勉強しているのですがUIが似ているサービスでInstgramとかPinterestのUIが良く出来てると気がつきます。普段違和感なく使っているサービスですがなんというか画面遷移とかUIの使い勝手の辻褄があってたり、技術の高さが良くわかります。サービスを作る前ではあまり意識していなかったことでした。

## 7.サービス脳が育つ
他のサービスの作りの観察もそうですが、サービスを作ることが生活のサイクルに一旦なってしまうとサービスのアイデアがいろいろ思いつくようになりました。思いついたものは作るのが追い付かないのでSimpleNoteにストックしておいて銀河フォリオの手がある程度離れれば次のサービス作りにもチャレンジしたいです。

## 8.サービス作りと仕事は両立できる
最初はサービス作りと仕事を両立できるのか？と不安になりました。サービス作りは朝１～２時間毎日と休日に実装するというルールを決めて継続できています。忙しい時期も1時間ほど時間をとって行っていますが意外に続けられます。

毎日成長していくものがある、得ることがあると思えることがとても大事だと感じました。サービスを作ると心の安定になることに気が付きました。
仕事で待ち時間が出来たとしてもサービスづくりが出来ることで時間を大切に使うことが出来ました。

# 今後やっていきたいこと

## 1.サービスでマネタイズ
サービスを作っていくのが楽してついつい忘れがちなのですが、サービスでお金を生んでいくことも考えなければなりません。サービスでお金を生むことがサービスの質を高めたり次のサービスを生むための資金になるからです。

## 2.お仕事としてRails開発に携わってみたい
今現在はコーディングで生計を立てているのですがいずれはRailsでお仕事をしていきたいと望んでいます。これまで培ったコーディングの技術なども活用できることも大変楽しみです。

# 最後に（宣伝も）
銀河丼という創作してる人やエンジニア、フリーランス（自営）など、あらゆる個人プレーヤーのためのマストドンインスタンスを運営しています。興味がありましたらぜひ参加してほしいです。

銀河丼はMastodonの一インスタンスなのですが、Mastodonにはいろんな挑戦をしている人がたくさんいて、そこから刺激や勇気をもらうことも多かったです。（分散型SNSという仕組みが、そういった土壌作りに何かしら関係しているのでしょうか？？？）

銀河丼のみなさんにはポートフォリオのアイデアをたくさんいただきました。ありがとうございました！！
[銀河丼](https://gingadon.com/)

銀河フォリオのサービスの方もどうぞよろしくお願いします！
[銀河フォリオ](https://folio.ginga.earth/)