【Repを支える技術】全体の構成編
こんにちは!
今回は僕が2年間開発・運営している「Rep立教大学シラバス検索システム」の技術を紹介しようと思います。今までTwitterでちょくちょく発信していましたが、まとめてみます。
ぜひ「サービスを作ってみたい学生」の方に読んで欲しいです。
なるべく”普通に”
Repの構成はいたって普通です。
普通にしているのには理由があり、Repは1年後誰がコードを触っているかわからないので、誰が見てもすぐに理解できるようなコード・仕組みにする必要があるのです。これが企業のプロダクトと大きく異なる点です。
ドヤ顔で話すことではないですが、技術選定やコスト計算などの視点でやることを精査していくのは個人が開発するサービスでは必要なことです。
サーバーサイド
Railsを使っています。現在バージョンは5.1.6
となっています。
最初は4.2.6
でしたが、ありがたいことにリリースから2年も経ちセキュリティパッチも含まれるような更新があるためこの前アップデートしました。
また、テストをちょくちょく書いたり、2万を超える授業データを扱うための工夫がたくさんあります。
さらに細かい内容はサーバーサイド編で書こうと思います。
書きました👇
フロントエンド
Railsのviewsやassetsといった機能をそのまま利用しています。
webpackerではなく、Sprocketsを利用しています。
度々思うのですが、Rails5.1からwebpackerが標準装備になった割にSprocketsを利用し続けるプロジェクトはまだまだ多いですね。RepでもしばらくはSprocketsを利用していく予定です。これもコミッター学生の学習コストなどを考慮しています。ちゃんとチェックしていないですが、RailsTutorialでwebpackerが標準的に取り扱われるくらいになったら導入かな(いつかな)。
cssはscssを利用しています(それ以外に書くことがないくらいにシンプル)。
さらに細かい内容はフロントエンド編で書こうと思います。
PDF生成や時間を掛けない方法など工夫盛りだくさんです。
書きました👇
インフラ
AWSを利用しています。
正直コストの面で後悔はありますが、勉強になったのでok🙆
- EC2
- RDS
- S3
などを利用しています。これができればwebサービスは運営できますね。
さらに細かい内容はインフラ編に書こうと思います。
分析・クローラー
- GoogleAnalytics
- Redash
- RikkyoCrawler
Repではユーザーを知り、成長を計測するためにGoogleAnalyticsやRedashを導入しています。
また、毎年1万件追加される授業データを取得するプログラムも重要な要素となっています。
詳しくは分析・クローラー編に書こうと思います。
最後に
いかがでしたでしょうか。
概要を読んだだけでも普通すぎる構成だと思います。冒頭に書いた通り、それが狙いなわけですが書いていて虚しくなるくらい普通ですね。
今回はとてもざっくり書きましたが、これからその”普通”を維持するための(もしくは普通を維持出来ていないところの)工夫を書いていこう思います!