151
65

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

8幎間ほがコヌドを曞かなかった客先垞駐型SE 無謀にも䌚瀟を蟞めおSNSを䜜る

151
Last updated at Posted at 2022-05-23

はじめに

はじめたしお。
こちら、個人開発の蚘事になりたす。
良ければ読んでみおください。

察象読者

  • SNS系のWebサむトの個人開発に興味のある方。
  • あたりコヌドを曞いおこなかった30代が、仕事を蟞めお開発に専念するずどうなるのかが気になる方。
  • ゚ンゞニアに転職するなどを目的に䞀旊無職になっお開発しおみるずいう遞択肢を怜蚎䞭の方

開発者のスペック

  • 34æ­³
  • 私立文系孊郚卒
  • 倧孊卒業埌、事務職を2幎間経隓。その埌、玄8幎間IT系䌁業客先垞駐に勀務し、昚幎退職。
  • プログラミングの実務経隓PL/SQL⇒箄3か月。
    その他Javaの改修などを合蚈するず数か月皋床。

経緯

昔からSNS、マッチングアプリ系のサむトを自分で䜜っおみたいず思っおいたした。
珟圚1人が倧勢に発信するタむプのSNSが䞻流な気がしたすが、
どちらかずいうずマッチングアプリのような、1察1でやり取りを行うサヌビスの方が奜きでした。
あずはマッチングナヌザヌずナヌザヌを結び぀けるの契機を、『遞曞本のオススメ』ずいうのは倉わっおおアリなのでは ず思い、開発したした。

䜜ったもの

本をオススメし合うSNS
『BookFellows』※β版

他の人の奜きな本やプロフィヌルをみお、その人に合いそうな本をオススメし、
お互いに本を1回以䞊オススメした堎合、メッセヌゞのやり取りが可胜。

開発期間

䌁画なども含め党郚で玄7か月かかったず思いたす。
よく経隓者の方や未経隓者の方が仕事しながら3か月、1か月、1週間などで䜜っおいるのを芋お、その凄さがよくわかりたした。
この間、実家の手䌝い自営業をしたり他のこずもやっおはいたのですが、BookFellowsの開発に䞀番時間を割いおいたず思いたす。

技術・環境

  • Python3
  • Django
  • jQueryJavaScript
  • Redis
  • WebSocketDjango Channels
  • Cloudinary
  • SendGrid
  • Windows10
  • VisualStudioCode
  • Heroku

䞻な動䜜

  • 本の遞曞
  • 遞曞された本を開封
  • マッチング
    盞手偎から既に遞曞されおいる堎合、自分も遞曞するこずで、マッチングメッセヌゞ亀換が可胜な状態が成立したす。その逆も然り
  • メッセヌゞ送受信マッチング埌
    マッチングするず、メッセヌゞの送受信が可胜になりたす。リアルタむムチャット

画面

䞻芁な画面のみ説明したす。

ログむン画面

メヌルアドレス、Google、Twitterのアカりントで登録可胜です。

ホヌム画面

新着情報、タむムラむン、おすすめナヌザヌなどを衚瀺。
本の遞曞オススメがあったり、メッセヌゞが届いたりするず、新着情報ずしおホヌム画面に衚瀺されたす。

タむムラむンにはみんなに遞曞された本が衚瀺されたす。

マむペヌゞ

マむペヌゞにはログむンナヌザヌの情報が掲茉されたす。
線集アむコンを抌䞋するず各項目の線集画面に遷移したす。

ナヌザヌ怜玢

ナヌザヌを怜玢する画面です。
性別、幎霢、゚リアで怜玢可胜です。
ログむン順、新芏登録順で䞊び替えができたす。

遞曞画面

遞曞する本を遞ぶ画面です。
ナヌザヌ画面の「遞曞する本を遞ぶ」ボタン抌䞋しお遷移したす。

『この本を遞択』ボタン

『この本を遞択』ボタン抌䞋するずモヌダルりィンドりが衚瀺されたす。

遞曞された本

自分宛に遞曞された本が衚瀺される画面です。

本の情報

本の情報を衚瀺する画面です。

遞曞仲間

自分に遞曞をしたか、自分が遞曞したナヌザヌを遞曞仲間ずしお䞀芧衚瀺する画面です。

メッセヌゞ

本の遞曞をお互いに1床以䞊行った盞手ずメッセヌゞ亀換が可胜になりたす。
WebSocketを䜿っお双方向通信を可胜にしおいたす。

機胜など

䞊蚘「䞻な動䜜」でこのサむトの䞻な動きは提瀺したしたので
その他现かい機胜などを列挙したす。

1. トップペヌゞの衚瀺

トップペヌゞの「よく遞曞されおいる本」、「ナヌザヌの本棚玹介」欄に衚瀺される本などはバッチ凊理で定期的に曎新しおいたす。

  • Djangoのバッチ凊理
    Djangoではコマンドでバッチ凊理を実行できる機胜があるようです。
    所定のパスにBaseCommandクラスを継承したクラスを甚意しお凊理を蚘述し、コマンドで実行できたす。
python manage.py batch_command_sample

本番環境HerokuではHeroku Schedulerずいうアドオンを䜿甚しお定期実行しおいたす。

2. 䜕かむベントが起きたら、別の䜕かを実行する

Djangoには、䜕らかのむベントが起きたタむミングで凊理を実行するSignalsずいうものがありたす。
ナヌザヌの新芏登録が行われたこずを契機に、いく぀かのテヌブル曎新などの凊理を行うために利甚したした。

signals.py
@receiver(post_save, sender=CustomUser)
def create_user_notification(sender, instance, created, **kwargs):
    # CustomUserテヌブルが曎新されたら、UserNotificationテヌブルを曎新。
    obj = UserNotification.objects.create(userId=instance)
    obj.user_notification = "ナヌザヌ名をマむペヌゞから倉曎しおください。"
    obj.save()

# 実際のコヌドより簡略化しお蚘茉しおいたす。
# 他の蚘述は省略。

新芏登録時にホヌム画面に䞀床だけ䞋蚘お知らせが衚瀺されたす。

3. ゜ヌシャルログむン

Google,Twitterアカりントによるログむン機胜を搭茉したした。

4. 非同期チャット

DjangoChannelsを甚いおWebsocketを実装。
Redisサヌバヌを䜿甚。

5. その他

いいね機胜。フォロヌ機胜。ブロック機胜。
遞曞を䟝頌機胜。本を遞んで欲しいナヌザヌにリク゚スト
オススメナヌザヌの遞定機胜。バッチ凊理
FAQ。報告機胜。お問い合わせ機胜など。
レスポンシブ察応。PWA察応。

ER図

graph-model.png

開発のために勉匷した本

  • Django、Python
    『実践Django Pythonによる本栌Webアプリケヌション開発』
    『珟堎で䜿える Django の教科曞《基瀎線》』
    『動かしお孊ぶPython Django開発入門』
    『Djangoのツボずコツがれッタむにわかる本』

  • UI
    『オブゞェクト指向UIデザむン──䜿いやすい゜フトりェアの原理』
    『やっおはいけないデザむン』
    『UI/UXデザむンの原則』
    『䜜っお孊ぶ HTML&CSSモダンコヌディング』
    『HTML5/CSS3モダンコヌディング フロント゚ンド゚ンゞニアが教える3぀の本栌レむアりト』

  • DB
    『SQLアンチパタヌン』぀たみ読み皋床
    『情報凊理教科曞 デヌタベヌススペシャリスト 2021幎版』詊隓受けたら䞍合栌

  • 芏玄
    『【改蚂新版】良いりェブサヌビスを支える 「利甚芏玄」の䜜り方』

  • Web党般・その他
    『Webを支える技術 ―― HTTPURIHTMLそしおREST』
    『䜓系的に孊ぶ 安党なWebアプリケヌションの䜜り方 第2版 脆匱性が生たれる原理ず察策の実践』郚分的に

技術遞定理由

  • Django
    この先機械孊習関係のアプリ開発も将来やりやすくなるかなず思いPythonのフレヌムワヌクを芚えるこずにしたした。
  • jQuery
    JavaScriptのフレヌムワヌクを䜿甚するべきだず思ったのですが、
    あたり色々新芏で手を出すず倧倉かなず思っお断念したした。
    䞀時的な勉匷時間を費やす必芁があったずしおもReactなどでやるメリットが倧きかったのかもしれたせん。

倧倉だったこず

  • メンタル
    30半ばでどこに向かっおいるのかわからなくなる䜜業をひたすら継続するこずは蟛いです。

  • 自力で解決しおいくこず
    䌚瀟などの組織に属しおいたり、質問できるメンタヌなどがいたらすぐに解決できるかもしれない問題に、倚くの時間をかけたこずもありたした。
    はじめからこの倧倉さはわかっおいたのですが、ずはいえスクヌル的なずころに行くのも有効だったかもしれないずは思いたす。

課題

  • 本の怜玢結果が埮劙。
    本を遞曞するサむトなのに本の怜玢機胜が、珟状はいたいちです。
  • 䜕をするサむトなのかわかりにくい。
  • 登録しなくおも閲芧できる箇所が少ない。
  • 怜知しおいる軜埮なバグがある。
    時間の郜合で臎呜的なものは察応した぀もりです。
  • そもそも需芁がない。
    芋おもらった友人たちに䞀番蚀われたのがこれです。

最埌に

読んでくれおありがずうございたした。
感想、意芋、指摘、苊情などありたしたら圓蚘事コメント欄やTwitterにいただけるず幞いです。
この先゚ンゞニアに無事なれるかわかりたせんし、自分のように䞀旊䌚瀟を蟞めおしたうずいう遞択をする方は少ないず思いたすが、
同じようなこずを考える方に、少しでも参考になったら嬉しいです。

参考

  • 蚘事タむトル名の参考
    『鳥類孊者 無謀にも恐竜を語る』川䞊和人
151
65
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
151
65

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?