Help us understand the problem. What is going on with this article?

【個人開発】無料サーバで使える掲示板システムを作った

More than 1 year has passed since last update.

作ったもの

無料サーバから呼び出せる掲示板システム。
システム自体は Ruby on Rails で書いているので有料サーバ必須。
RestfulAPIを呼び出して、Vue.jsで結果を表示するような仕組み。

ソースコード

https://github.com/otoriyose/otoriyose

スクリーンショット

一覧画面

01.png

詳細画面

02.png

投稿画面

03.png

未ログインでは投稿できない

04.png

ログイン画面(認可サーバ)

05.png

構造

system.png

作成に至った経緯

  • キャラレス界では未だに掲示板を使って交流している
  • 掲示板は無料のレンタル掲示板を使ったり、Perlで書かれたCGIを使っている人が大半
  • カスタマイズの自由度は低く、設置のハードルも高い
  • カスタマイズが容易な掲示板を作りたい

達成したい要件

  • 無料サーバに設置可能なこと
  • 難しい技術を必要としないこと
  • セキュリティリスクは無視しないこと
  • HTMLやCSSの知識があればデザインのカスタマイズが可能なこと
  • コーディング技術があれば更なるカスタマイズも可能なこと

実装方針

  • データのやりとりはRestfulAPIで提供
  • 掲示板本体はVue.jsを用いて、静的サイトにも設置可能にした
  • 認可サーバを設置することにより、https対応していないサーバでもある程度セキュリティが確保できるようにした
  • 管理者用の画面は有料サーバ側に設置して利用してもらう(現在未実装)

使った技術

  • Ruby
  • Ruby on Rails
  • doorkeeper
  • JavaScript
  • Vue.js
  • MySQL
  • Vagrant
  • Docker

苦労した点

  • Ruby on Rails の環境構築がむずかしい
    • PHPと同じノリでいたら痛い目を見た
  • doorkeeper の仕様がよくわからない
    • Deviseの設定が先に必要なことに気づかず長い時間を費やした
  • OAuth連携のフローが難しい
    • 認可サーバに飛ばして、トークンを返して、APIにそれを渡して…という仕組みをどう作成すれば良いのか、良いサンプルが見つからなかった(結局1から全部設計した)
  • Githubでのプロジェクト作成のお作法
    • 複数のソースを組み合わせて動作するアプリはどう配置すべきなのか(未だにベストな配置がわからない)

良かったこと

  • PHPからRubyに乗り換えたら開発効率がめちゃくちゃ上がった
  • シンプルは構造にしたので、今後なにかシステムを作ろうと思った時に流用できそう
  • VagrantやDockerで環境構築も自動化したので、開発期間が空いても安心
  • 最初に要件定義をしっかりしたので手戻りが発生しなかった
  • とにかく完成させることを目指して不要な機能はガンガン削った

良くなかったこと

  • デザインがダサい
    • リリース前には調整して、デザインサンプルを2、3個用意したい
  • ログインの導線がイマイチ
    • 他のサイトを参考にベストな導線を考えたい
  • 本番環境への適用を意識していない構成
    • 設定ファイルや環境変数を活用しよう

今後の課題

  • 管理画面を作る
  • 設置マニュアルやAPI仕様書などのドキュメントを作る
  • VPSを借りてリリースする
  • 機能を追加する

最後に

キャラレス界は技術者が不足していて化石化した技術を未だに使い続けている場所!
新規業界(?)を開拓したいプログラマにはオススメです。

dip-net
ディップ株式会社は「バイトル」「はたらこねっと」などの求人情報サービスをはじめ、人工知能専門メディア「AINOW」、スタートアップ専門メディア「スタートアップタイムズ」、アニメなどの舞台を紹介するサイト「聖地巡礼マップ」といった新しい分野のサービスを自社で開発・運営しています。
https://www.dip-net.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away