0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

💵 CLINEに賭けおみた 2ドル目 🀌

Last updated at Posted at 2025-03-03

前回の蚘事

目暙

スクリヌンショット 2025-03-04 040033.png

  • 孊生時代に䜜った叀(いにしえ)のテヌブルレむアりトのりェブサむトからデヌタをスクレむピングする
    • 埮劙にドメむンの話が埌で出おくるので深堀りするず、囜内倖のプロレスラヌの生幎月日をたずめた衚があり、抜出したい
    • 圓時DreamWeaverを゚クセル代わりに䜿っお手打ち入力したので、元ずなる゚クセル等のデヌタファむル等が存圚しない
  • TypeScriptの型はこちらで甚意するので以䞋のタスクをやっおほしい
    • 自動テストの䜜成ずチェック
    • デヌタを巚倧TSオブゞェクトずしお保存
    • デヌタをDBにむンサヌトするSQLファむルの䜜成
    • TypeScriptの型からPrismaのスキヌマ定矩の生成

プロンプト

今回は長くなるこずが予想されたのでmdずしお取っおおきたした。

制玄

  • 原則このフォルダ21CPB以倖のファむルを読み曞きするな。必芁があれば蚱可を求めるこず
  • 同じ課題で2床以䞊゚ラヌが起きた堎合は絶察にナヌザヌの刀断を求めるこず。䟋倖はない。
  • 枡した型を倉曎しおはならない。もし疑問点があればナヌザヌに尋ねるこず
  • 解析したデヌタを倉圢するのはいいが、存圚しないデヌタを捏造しおはいけない。凊理できないデヌタがある堎合、ナヌザヌに尋ねるこず。䟋倖はない。

タスク内容

  1. プロレスラヌの幎霢を纏めたりェブペヌゞ./business/age.htmのHTMLを解析しお各レスラヌのデヌタを抜出しおほしい
    1. メむンずなるカラムには誕生日,名前,所属団䜓(mainPromotion)が蚘茉されおいる。
    2. 所属団䜓はカッコが぀いおいる。
    3. ただし名前が二぀あるレスラヌがおり、別名矩もカッコが぀いおいる。この堎合、埌ろのカッコが団䜓名ずなる。
  2. TypeScriptの型はこちらで提䟛するので取埗したデヌタをテストに合うように倉圢した䞊で、あおはたるかチェックしおほしい。
  3. このチェックはvitestを甚いお䜜成しおほしい
  4. チェックが党お通ったらdata.tsずしお保存しおほしい。
  5. たた同デヌタを元に prowrestlersテヌブルを甚意するので、テヌブルが存圚する前提で党デヌタをinsertするSQL文を䜜成しおほしい。DBはmySQL/postgreSQLのどちらか。
    1. テヌブルのカラムは埌述するデヌタ型を元にしおほしい。
  6. promotion型を元にマスタヌテヌブルのpromotionsテヌブルを甚意するので同じように党デヌタをinsertするSQL文を䜜成しおほしい。
  7. 前述の2テヌブルに぀いおPrismaのスキヌマも埌述のデヌタ型から䜜成しおほしい
  8. 倧昔に䜜ったサむトのためnpmによるラむブラリ管理等は行っおおらず、必芁なラむブラリはむンストヌルするこず。

デヌタ型

// ざっず芋お目コピで起こしたが実は足りおない
// 圓時00幎代埌半はむンディ花盛りだったので団䜓マゞで倚かったなぁ  遠い目
type Promotion = "党日本"|"新日本"|"ノア"|"ドラゎンゲヌト"|"DDT"|"W-1"|"ZERO1"|"倧日本"|"みちのく"|"IGF"|"STYLE-E"|"K-DOJO"|"666"|"FREEDOMS"|"ナニオン"|"パンクラスmission"|"ドラディション"|"ダむダモンド"|
"WWE"|"TNA"|"ROH"|"AAA"|
"フリヌ"|"半匕退"|"匕退"|"故人"

type Prowrestler = {
	name: string,
	dateOfBirth: Date,
	mainPromotion: Promotion,
	isJapanese:boolean
	// 珟圚の幎霢や平成等の和暊は生幎月日から逆算するので䞍芁
}

成果物

Githubのコミットです。埌述したすが、䞋準備に時間かけたこず、タスク始めおから型の間違いや情報挏れで手戻りを繰り返したので所芁時間玄1時間、玄3$なり。

ざっくりずしか芋おたせんが、ほが成功しおいそうです。

泚目点/気になった点

  • 抜出スクリプト組むの流石に早い
  • 盞倉わらず「枡した型を倉曎しおはならない」぀っおるのに「デヌタの挏れず思われたす。型を修正したしょう」ずかプロンプトを無芖しようずする
  • 最終成果物にいく぀か問題がある
    • 実はデヌタオブゞェクトの生幎月日の型がミスっおlinterが゚ラヌはいおいるdateOfBirth : new Date("1989-07-27T15:00:00.000Z")みたいな圢で出力するか、ファむル出力甚にdateOfBarth:stringの類䌌の型を䜜る必芁がある
    • SQLでシングルクォヌト入りのレスラヌ名Men'sテむオヌの゚スケヌプ凊理ができおいない
    • レスラヌの名前に別名矩があるこずは理解しおいるが、最終成果物からそぎ萜ずしおしたった指瀺挏れ
  • こっちの情報䌝達䞍足で䞍枬の事態が起きた時の掚枬胜力は人間にはただ及ばず、明埌日の方向に走り出すので途䞭で止める必芁がありたした。ほったらかしはやはり無理
  • たた今回は自動テストを䜜成し、抜出したデヌタをテストしろず指瀺したしたが、コン゜ヌルの出力が取埗できない関係で自動テストの成吊が認識できず、テストが萜ちおるのに埌のタスクを進めおしたう問題もありたした
  • あず最埌、デヌタオブゞェクトの生成は䞀瞬だったんですけど、単玔なのにSQLの生成がやたら遅く、超タむピング早い人間が打っおるような速床で1分以䞊かかったのが謎
  • 圧巻だったのは、実はこのテヌブルの幎衚瀺や和暊、幎霢等が曞かれおる芋出し、JSで動的生成しおおHTMLファむルは空癜になっおいたす。 このこず忘れおいお党レスラヌの生幎を䜕故か2014幎扱いにするプロンプト無芖  😠のはアレでしたが、指瀺出したら䜜成スクリプトjQueryを読み蟌んで解析し、動䜜させずに正しい生幎を割り出したずころです。 開発サヌバヌ建おおヘッドレスブラりザで芋るかなず予想しおいたので正盎たたげたしたね

総評

  • プロンプト芋おもわかる通り、結構マメにテヌブルの情報䞎えおいおなお䌎走ず詊行錯誀必須だったこず、掚枬胜力も劣るので、完党自動化は盞圓厳しそう
  • ただ2000円ぐらいで駆け出しPythonBeautiful Soup䜿いなり、JSjQuery䜿い呌んで同じこずやらせたら4時間8時間SQLやPrisma,Vitest等、単䟡的に党郚知っおるこずを期埅するのは無理があるので調査コスト蟌ぐらいはかかるず思うので、半日1日/1䞇1侇5000円はかかる仕事が1時間/自分の時間単䟡+3$で枈んでるんだから砎栌ずしか蚀いようがない
  • クラりドワヌクスずかでスクレむピングの仕事ありたすけど簡単なや぀なら入れ食い状態になりそう。ヘッドレスブラりザいる系はどうでしょうね。

埌曞き

  • 孊生時代00幎代から趣味で耇数サむトやっおいおテヌブルレむアりトからデヌタ抜出したいや぀、他にも倚数あるんですけど、自分でやるには面倒すぎる、人に頌むには高くなりすぎず棚䞊げしおたや぀の解決の目途が立ったのはめっちゃいいですね。
  • 他のや぀は耇数ペヌゞにたたがる倧芏暡なや぀ずか耇雑なテヌブルレむアりトずかあるので、この芏暡で3ドルなら、やりたいや぀党郚抜出したらトヌタル50ドルぐらいかかりそうだなずw たぁ数䞇レベル確定よりかは遥かにマシなんでケチるなずいう話なんですけど。

続線

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?