カテゴリ機能への仮説全否定。クレジット決済の導入

んにちは、

初めまして、Masaです。

 

ゴリゴリ開発できるエンジニアになるベク

今日もコツコツやっております。

 

先日からずっと戦ってきたカテゴリ機能のことについてです。

 

f:id:masataka_sugita:20190529211317p:plain

f:id:masataka_sugita:20190602203539p:plain




中身がこんな感じで

同じ繰り返しで、DBから引っ張ってきた要素分eachで回すのだろう

とざっくりとした自分の中で仮説を立てました。

 

その仮説を元に実装に入りました

実装することで仮説の解像度が高まり仮説のボロが出てきた。。

 

初めの仮説ではeach文の中にeach文を入れて回そうと考えていました。

 

f:id:masataka_sugita:20190602204551p:plain

f:id:masataka_sugita:20190602204608p:plain

こんな感じでeachの挙動を確認し、

いざ取り掛かろうとしたところ、

回せないことに気がつきました。

 

中身の、子。孫。が何度も回ってしまうと気づきました。

 

調べても直書きする方法しか出てこず

この時点で仮説が破綻しました。

 

おそらくhoverした際に

そのカテゴリの下層カテゴリを引っ張って来なければならない。

裏で紐ずけて表にだす。こんなような処理が正しいのかなと・・・

 

しかし。

 

具体的な実装方法が浮かばず、

チーム開発の進捗に影響が出ると判断し、

チーム開発での必須機能を作りあげた後に

取り掛かろうと思います。

 

今作っている機能は

クレジットカード決済の導入です。

 

PAY.JPというもので導入できるらしいが

https://pay.jp/docs/cardtoken

個人情報を扱う機能なので慎重に行いつつ

外部の機能を使わせていただく分

自分の知らない分野で処理が行われるので

何か不具合が行なっても対処できるようにしていきます。

 

コツコツ頑張ります。

 

本日の学習時間12時間。

 

最後まで読んでいただきあるがとうございました。

カテゴリ投下完了!gemの取り扱いには注意が必要!初Qiita執筆!

こんにちは、

初めましてMasaです。

 

やっとカテゴリテーブルにデータを投下することができました。

f:id:masataka_sugita:20190601204112p:plain

カテゴリテーブル

親カテゴリ、子カテゴリ、孫カテゴリしっかりと関連が取れていて

いい感じに出来上がりました。

 

gem万歳!

ancestry万歳!

 

と思っていましたが

 

親要素が取り出せない。。

github(https://github.com/stefankroes/ancestry)見る限り便利そうないろんなメソッドがあって

親要素を取り出せそうな雰囲気だあったので

ancestryの少ない情報量を片っ端から見て試して見たが取れるメソッドがなかった。。

 

テーブル見たら親カテが何かわかるし

idで番号を指定してやれば簡単に取れる。

 

が、

 

それでは変化に弱いものになってしまう。

・もし親カテゴリは増えたら?

・もし親カテゴリが減ったら?

 

という変化に対応させるには

idで持ってくるのではなく、

「親カテゴリ!」

として引っ張るメソッドを見つけなければ!!

そうしなければチームのメンバー全員の機能が満たせれなくなるかもと

いう危機感(gemを導入した責任)で奮闘、悩みまくってました。

 

メンバーに相談したら解決方法が見つかった。

 

親カテゴリのancestryカラムはNULLとなっているのでそれを利用したらいいのでは?

 

やってみた。

f:id:masataka_sugita:20190601210608p:plain

⬆︎ダメだった

 

f:id:masataka_sugita:20190601210644p:plain

⬆︎これもダメだった

 

f:id:masataka_sugita:20190601210815p:plain

⬆︎取れた!!

 

今までの知識で全然いけた・・・泣

gemのメソッドにとらわれすぎは良くないですね^^;

 

そしてこれにきづかせてくれたメンバーに感謝です。。

 

と、ここまででやっっとカテゴリ機能の下準備が終わったので

チームメンバーにカテゴリテーブルを使ってもらいつつ

 

明日はこの取得した親のレコードたちを使って子カテ、孫カテを引っ張って

viewに反映させてカテゴリ機能を実現させていきたいと思います。

 

本日の作業時間12.5時間

・qiita記事執筆

・カテゴリデータの投下

・ancestryについての理解

・フロントへの考察

・Web業界調べ

書いた記事

https://qiita.com/Masataka_Sugi/items/2a9d5de1ba119c1f6da2

最後まで読んでいただきありがとうございました!

 

チーム開発6日目 カテゴリデータ投下地獄 ~メソッド組む難しさ~ / gem 「ancestry」導入

こんにちは、

初めましてMasaです。

 

チーム開発6日目

カテゴリデータの投下

 

昨日に引き続き本日も

カテゴリ機能の、下準備。

 

というのもカテゴリは製作者側が提供しなければならないので

seed.rbにデータを書き込んで入れなければならない。

 

数百あるカテゴリを

階層構造で紐づけて書かなければなカテゴリとしての機能を持たない

そこで色々調べて

テーブルの構造に

経路列挙モデルというのを採用してみた

ancestryというgemが便利で

この記事と

https://qiita.com/NAKANO_Akihito/items/d42a6ceae40933af2352

この記事を

https://qiita.com/Sotq_17/items/120256209993fb05ebac

参考に導入してみた。

githubはこちら

https://github.com/stefankroes/ancestry

 

うまいこと使えて

f:id:masataka_sugita:20190530213340p:plain

このように投下できた

f:id:masataka_sugita:20190530213533p:plain

このコードで

f:id:masataka_sugita:20190530213627p:plain

これが再現できて

「いい感じ!もしかしてこれが保守性か?メンテナンスのしやすさか!?」

と思っのもつかの間・・・

 

子カテゴリどうするんや・・・汗

子カテゴリをテーブルに投下するに必要な要素として

f:id:masataka_sugita:20190530214547p:plain

・親投下した際の変数(上で言うlady)

・投下物(上で言うトップスとか)

 

これが親カテ×子カテ分ある

さすがにベタガキは非効率だなと思い

 

メソッドを組んでみたが

これが難しい。。。

引数に色々持って来なければならなくて

each文で回すにも限界があった

 

無理くりメソッド組んで引数私まくって条件分岐しまくればなんとかして

できるかもしれなかったが

とてもじゃないが解読できたもんではない・・

他の人からみて絶対に解読できない

明日になったら自分でも解読できないのではないか

 

そもそも

子カテでそれなら孫カテはどうなるんだ・・・

と思い無理にメソッドを組むのはやめて

めんどくさいがメソッドより見やすいベタガキを選んだ。

 

悔しかった。

結局負けてしまったが

自分でメソッドを考えて

デバッグして色々思考錯誤する過程は本当に楽しいかった

本家であるメルカリは絶対にいい感じのメソッドを組んで

追加でカテゴリが増えても大丈夫なようになっているはずと思うので

 

今回のこのカテゴリの初期データ投入は頭の片隅に置いていいて

これからスキルアップしていつかリベンジする。

 

本日の学習時間10時間。

明日は予定があるので作業できるかわからないが

隙間時間に業界のこと会社のことなどを調べ

 

就活の準備をしていこうと思ういます

 

最後まで読んでいただきありがとうございました!

階層構造のDBそしてカテゴリの表示・・・【チーム開発5日目】


チーム開発5日目

 

使用言語は

Ruby,Rails

 

今触っているタスクは

メルカリにあるカテゴリの機能

https://gyazo.com/503d24e377f7ed36dcc67c471bb8b6d8

f:id:masataka_sugita:20190529211317p:plain

カテゴリ

この機能を作ろうと試みている

 

・この機能をサーバー・フロントを通して行う上で

大きな課題が現状として3つある。

 

1つ目:

dbにカテゴリを投下しなければならない

ただ投下するならできるが

今回作ったdbの使用は

f:id:masataka_sugita:20190529212651p:plain

カテゴリテーブル

現在はこんな感じになる。

隣接リストモデルで作るのか

経路列挙モデルで作るか

調べて決めなければならない

 

綺麗に親➡︎子➡︎孫として正確に

idを降らなければならない。

seed.rbに書いて本番環境で自動で初期値としてカテゴリが入るように

プログラムを組まないといけない

 

2つ目:

jqueryを率いてhover時にカテゴリが現れるようにしないといけない。

これに関しては調べた感じいけそうではある。

 

だが、

3つ目:

カテゴリをうまいことdbに入れたあとはdbから引っ張ってきて

viewに入れないといけない、

renderを利用してうまいこと回さなけれなならない。?

と考えている

というのも正直に書くととんでもない量になってしまって

いかにも非効率なことがわかる

 

この3つが今の段階で

カテゴリ機能のサーバーサイド、フロントの課題である

昨日からずっと調べているがdb設計に関する知識がないというか

rails触っているとSQLの知識がつかないので

SQLアンチパターンといういかにも解決できそうな記事を見つけても

解読できない、、

 

チーム開発の進捗にも影響がで始める前に解決したい。

まずはテーブルにカテゴリを入れるところから・・・

 

頑張ります。

 

学習時間

10:00~22:00

11時間。