記事再公開にあたって
お詫びとご案内
今回、技術情報が少なく、宣伝的な内容となっているということで、運営より記事を一旦非公開にしたというご連絡をいただきました。不適切な記事となってしまいまして、大変申し訳ございません。
そこで、「Qiitaをご利用の方々に提供できる技術情報はなにか?」というのを考え「このアプリケーションのソースコードを公開してはどうか?」ということを思いつきました。
自分の経験から、動いているサービスのソースコードを見てみたい・・・と思ったことは何度もあります。初心者の方には、動いている他人のサービスのソースが読めるというはの、とても参考になると思いますし、中級者以上の方にも、リファクタリングのネタにできるなど、価値があるのではと考えました。
なので、記事の再公開にあたり、現段階のソースコードをそのまま公開してしまいたいと思います。ぜひ、一つの技術情報として、Qiitaご利用の皆様の役に立つことを願っています。
OKWorksのソースコード公開について
下記内容で、ソースコードを公開させていただきます。
【公開内容】
Rails 5.2.1を用いて書かれたアプリケーション。DBはMySQLを利用。
【公開URL】
https://github.com/okworks-dev/okworks_public
【利用方法】
GitHub上で読んでいただくか、forkなどをして触っていただけれればと思います。該当ディレクトリに移動した後に、下記コマンドを叩いていただければ初期設定が完了いたします。
bundle install && rake db:create && rake db:migrate && rake db:seed
【注意事項】
・著作権を放棄したり、OSSとして開発を行っていくというわけではありません。あくまでも、学習用コンテンツとしてご利用ください。
・本ソースコードの全部または一部を利用して、同種のサービスを公開することは禁止させていただきます。
・公開に当たりAPI KEYなど、秘匿情報は削除しております。
・また、秘匿情報の漏れなどを防ぐために、アップデートを行うつもりはありません。10/22時点のソースコードとなります。
いろいろややこしく恐縮ですが、ぜひお楽しみいただければと思います。
質問などについては、公式ツイッターアカウントにて受け付けています!できる限り返信させていただきます。
読みどころ
試行錯誤しながら作っているので、ぐちゃぐちゃなところもありますが、下記の点は「へー」といっていただけるかと思います。
・クローラー
app/controllers/concerns 以下に求人サイトから情報を取得するクローラーをおいてあります。
crawler.rb - 各サイトごとのクローラーを管理するクラス
site_crawlers以下 - 各サイト別のクローラー
各サイトごとに、スクレイピング方法が異なるので、そこに対応するのが一番時間がかかりました。
・コントローラー
コントローラーが肥大化しないように、できる限りモデルにロジックを隠蔽する、helperにメソッドを切り出しています。比較的、コントローラーがスッキリ書けているのでは?と思っています。
・hamlの利用とpartialの多用
hamlを使うことでコード量を劇的に減らすことができますし、構造が見やすくなります。slimを使わない理由は、slimは、簡素化しすぎていて、個人的には逆に読みづらいからです。
また、複数人で開発していることもあるので、コンポーネントをできる限りpartialに切り出すことで、再利用しやすく、デバッグも容易になりました。
といったところは、読んでいただいて面白いかと思います。また、開発環境で、動かして触っていただくのも面白いかと思います!
では、どうぞよろしくお願いいたします!
元記事
さて、早速ですが、一週間ほど前に「日本最大のIT系フリーランス案件/求人検索サービス」として
「OKWorks」をリリースしました。
リリースしたサービス
日本最大のIT系フリーランス案件/求人検索サービス「OKWorks」
https://www.okworks.me/
なにができるのか
IT系のフリーランス案件をサイト横断的に探すことができます。独自に案件を獲得するのではなく、インターネットから情報を収集し、集約しデータを提供することで、日本最大級の情報量を誇るフリーランス案件サービスです。
なぜ作ったのか?
開発者は、フリーランスのエンジニアとして働いています。企業様から直接ご相談をうけたり、つながりのある受託企業からの案件をプロジェクト的に受けております。一部、WEBメディアも運営し、そちらからの収益もあります。
そんな中で、エンジニアとしてのフリーランス案件が流れてくるメールマガジンをいくつか購読しています。そこから、案件をうけるということはないのですが、自分のスキルの相場観を把握する手段として活用しています。こんな好条件の案件が出てくるなら、まだ大丈夫だな・・・ということです。
さて、日々の楽しみである、案件チェックですが、フリーランス案件を提供する会社が続々と登場しているなとは、肌感で感じていました。Prosheetさん、Midworksさん、ITプロパートナーズさんなど・・・大小含めれば、いまでは数十社はこの事業をやっているのではないでしょうか。
さて、そうなってくると、アグリゲーションの出番です。各社のサイトを集約し、より便利で大規模なフリーランス案件の検索サービスを作りたいと思いました。
どうやって作ったのか
フリーランスエンジニア2人のチームで、約3週間で開発をしました。なるべく早くリリースすることを目標に、下記の構成で開発しています。今回は、技術的な新規性を全く考慮していません。それよりも、「フリーランス案件が市場で伸びている、それを集約することは面白くない?」というアイデアを実現することを優先しました。
言語 Ruby
フレームワーク Rails
デザインフレームワーク Bootstrap
サーバー Heroku
DB MySQL
うーん、仕事で使っているのもありますが、RailsとHerokuの組み合わせで開発するのは、本当に早いな・・・と改めて感じました。プッシュしたらデプロイされるというのは、まるで魔法ですね・・・w
苦労したこと
仕事でやっているから、ということもあり、あんまりなかったですね。イッシューを淡々と潰し、リリースまでこぎつけました。
作ってみての感想
サイトが広く一般的に使われるには、まだまだなのですが、作った本人がドックフーディング的に毎日チェックしてしまうサービスになっており、その点で作ってよかったなと思っています。
こんな良い案件あんのw こんな糞案件誰がやるのwww
みたいな発見があります。とても楽しいです。
今後については
まず長期的に、IT系のフリーランスの仕事の流動性向上に貢献したいという思いがあります。ラップトップがあれば働ける反面、案件を獲得するためには、営業や調整、交渉などめんどうなことがたくさんあります。一方、企業では人材不足が加速しています。このギャップを埋めることができれば、IT系人材はもっと働ける、もっと稼げる、もっと社会に貢献できると思いますし、企業では新しいプロジェクトをもっともっと推進していくことができるでしょう。
みなさんぜひ使ってみてください、シェアしてください!
OKWorks(オーケーワークス)をよろしくおねがいします😋
https://www.okworks.me/