【ヤフオク出品自動化】Hack U 2016 名古屋会場で発表してきました #hacku【Double-Au】
Hack U 2016 名古屋会場に参加し、ヤフオクの出品を自動化する自動楽売Double-Au(ダブルオウ)をなんとか実質1人で開発して発表してきました。
先に言っておくと、開発期間中は寝ながら頭の中で開発しないと不安だったりと滅茶苦茶大変でしたが、終わってみるとHack Uは本当に楽しかったと思っています。
ブログを書くまでがhackなんだよな #hacku
— ほつた (@hotu_ta) 2016年9月25日
- ヤフオクの出品を自動化するDouble-Au(ダブルオウ)について
- Hack U 2016にエントリーするまで
- テーマ自動○○でエントリー開始速攻ポチるものの開発は実質1人
- 開発期間前半
- 開発期間中旬
- 開発期間下旬
- 前日から当日発表直前まで
- 発表
- まとめ
- 最後に
ヤフオクの出品を自動化するDouble-Au(ダブルオウ)について
スライドを見ていただければ大体分かると思いますので若干割愛させていただきます。
検索フォームのところはこれを採用しました。
jquery.tableCheckbox.jsよさげなので採用する
— ほつた (@hotu_ta) September 23, 2016
平均落札価格の相場取得は、近い商品の価格の4割前後を設定してヤフオクの落札商品から複数取得して割って平均落札価格を出せば良かったのですが、面倒だったのでサクッとオークファンから平均落札価格をスクレイピングして表示してしまいました。
そう言えば、なんでAPI使わなかったのという質問がかなり多かったです。肝心なところをスライドに書けてないのでここに書いておくと、スクレイピングが大好きだからというのが一番の理由です。また、出品APIは個人では使えず企業でないと使えないようで、Amazonの検索APIやヤフオクの検索APIは*1制限や制約が多くて扱いづらいかなと思ったからです。
というよりもAPIをRubyでどうやって使えば良いのか、未だにあまりよく分かっていないのでAPIをどうやって扱えば良いのかしっかり勉強したいと思っています。
ベータ版を公開中なので、もし良ければ触ってみてください*2。
そういえば、YouTubeの映像が乱れていますね。うーん。どうにかならないのかなぁ。
Hack U 2016にエントリーするまで
Hack U 東海大学 2015が終わったあたりでHack Uの存在に気づきました。
今年もHack U 東海大学があるのかなと思っていたのですが、どうやら今年はHack U 2016で大学縛りを無くしブロックごとにハッカソンを行うみたいです*3。
Hack U 2016 東京会場に出場したかったのですが、9月に入ってから発表前日まで北海道旅行をしていたので開発が完全に間に合わないと考え断念しました。
しかし、なんとしてでもHack U 2016に出たかったので東京以外を模索することになったのです。 *4 10月中旬に基本情報技術者試験の勉強も控えていて、大阪大会の11月までとかあまりダラダラ開発するのは好ましくないので名古屋へ行こうと決め、名古屋のエントリーが始まった瞬間に応募してしまいました。
テーマ自動○○でエントリー開始速攻ポチるものの開発は実質1人
今回のテーマを見た瞬間に、これはやるしかないなと思ったのも参加した理由です。 あの面倒過ぎるヤフオクをいい感じにHackできれば優勝できるんじゃないかとエントリーしたときは燃えてました。
自分はかなりのヤフオク出品ヘビーユーザーでAucTownを使って出品の面倒をかなり減らしているのですが、それでも本当にこの価格で良いのかとか価格を考えるのが一番ネックかなと思っていました。
ただ、自称東大だからなのか、キャンパスが小さくて狭いからなのか、Hack Uに出たい人が周りに誰もいませんでした。 *5 ただ、Hack U 2016の出場条件として2人以上のチームであることでしたので、プログラミングがあまり出来ない後輩に頼んでチームとして申し込んでもらいました。 開発の協力をお願いしたのですが、ちょっとしたアドバイスぐらい*6だけで開発に少しもコミットしてもらえませんでした。これは仕方ないですね。
実はエントリーした直後、後輩にもう開発やめたいと愚痴を言いまくっていました。 「開発ヤバイよ…ヤバイヤバイ…」*7
開発期間前半
北海道旅行で開発の進捗ほぼ0。
トンネルだらけで開発がまともに出来ないから新幹線はダメ
— ほつた (@hotu_ta) September 2, 2016
東京大会に出れない腹いせに「NTTドコモ×TBS TV HACK DAY」に遊びに行くことに。
予選敗退したもののハッカソンガチ勢がたくさんいて、ガチなハッカソンとは何なのかを知る貴重な経験になりました。
ハッカソンとかアイデアソンはどんなに技術力が優れていてもウケないと駄目だからセンスが問われるよね
— ほつた (@hotu_ta) September 7, 2016
そして、気持ちを切り替え、どうにか名古屋会場に向けて開発をする事にしました。
開発のモチベが下がるのでがんばRubyと呟いてモチベを上げていく
— ほつた (@hotu_ta) September 14, 2016
GitHubのコミットログなどを見て振り返ってみたいと思います*8。 どうやら、キーワード検索の部分でデザインやopen-uriだとヤフオクの検索が上手くできず悪戦苦闘して1週間ほど費やしてしまったみたいです。
コードをコピペしたり改変したりとかいろいろしても真ん中というかセンタリング出来ないのにPingendoでフォーム作成したらいい感じになってるフォームが出来上がって数時間返せってなってる
— ほつた (@hotu_ta) September 12, 2016
開発期間中旬
がんばRuby ガンバルビー ガンバ。。。
— ほつた (@hotu_ta) September 14, 2016
最初はDBを全く使わずに、取得したデータをzipで変数を結合してeachするという謎な物凄くレガシーなコードを書いていたのですが、kaminariを使ってページオートメーション*9を実装したくなり、DBを使わないと無理そうだったので慌てて書き換えました。
最初からDB作ればよかったのにと過去の自分に言ってやりたい
— ほつた (@hotu_ta) September 18, 2016
動けばいい的なレガシーコードの書き換えとかこれほどつらいものはないよ
— ほつた (@hotu_ta) September 18, 2016
中旬に差し掛かり、実際にHerokuにデプロイしてみてからバグの修正やじわじわと開発した方がいいのかなと思ったのでデプロイしようとしたのですが、Herokuお馴染みのPostgreSQL問題でなかなか正常に動かず数日ほど費やしてしまいました。
なんか急に例の開発が楽しくなってきて良い感じになってる
— ほつた (@hotu_ta) September 11, 2016
— ほつた (@hotu_ta) September 21, 2016
来週末の遠征の手配したからもう例の開発から逃げられないな
— ほつた (@hotu_ta) September 13, 2016
開発期間下旬
例の開発の進捗がかなりまずいのでがんばRuby
— ほつた (@hotu_ta) September 20, 2016
下旬に突入してそろそろまずいと思い開発スピードを上げて、出品完了画面まで仮で作ってスマホを振って操作できるようにしました。 そしてひたすらバグの修正。
開発する時間よりバグをなおしたり動かないものを動くようにする時間のほうが多い気がする
— ほつた (@hotu_ta) September 22, 2016
開発期間下旬に入ってあの映画を見ることに我慢することが出来なくなって観てしまいました。 あの映画とは、ずばり「君の名は。」です!!! 最初観たときは、もう開発なんてどうでもいいや気分になってしまいました。
例の映画見たんですけど控えめに言って滅茶苦茶最高でした
— ほつた (@hotu_ta) September 13, 2016
結局5回も「君の名は。」を見て、ほぼ開発を放棄してしまいました。 そして、後輩にまた開発やめたいとか愚痴を言いまくっていました(n回目)。 「開発本当にヤバイよ…ヤバイヤバイ…」
— ほつた (@hotu_ta) September 22, 2016
開発に行き詰ったので君の名は見に行きたい
— ほつた (@hotu_ta) September 19, 2016
君の名はを見るとなんか開発が捗るんだけど冷めるとまた見たくなって開発が捗らなくなってループに悩まされてる
— ほつた (@hotu_ta) September 22, 2016
開開開発なんてぶっ飛んで欲しい
— ほつた (@hotu_ta) September 24, 2016
あーこんなガバガバ制作物で名古屋に行くとか本当に遊びに行くようなものだ
— ほつた (@hotu_ta) September 23, 2016
なんだかんだ言って、ダミー出品するところまでは完成しました。
前日から当日発表直前まで
全くイラストが無かったので、せめてスマホを振るところのイラストがあったらなと思っていたので、授業中に急いで作りました。このイラストだけは、滅茶苦茶いい感じに出来たと思っています。
授業が終わった後に、とあるもくもく会に行ってバグを修正したり、スライドを作ったりしていました。
freestyle-mokumoku.connpass.com
明日発表で絶対に事故りそうなので事前に発表者ノートを整えておこうと思う
— ほつた (@hotu_ta) September 24, 2016
試しに、まあまあ出来上がったスライドをサポーターの方々にレビューしてもらったところ、酷すぎたのかボロクソにレビューされました(笑)
HackUのSlackでスライドの相談したときヤフーの方々が滅茶苦茶丁寧にレビューしてくれたのでスライドの腕前は最高だと思う
— ほつた (@hotu_ta) September 25, 2016
本音を言ってしまうと、この調子でスライド以外もボロクソにレビューしてサポートしてもらいたかったです*10。
明日無事に名古屋のカラオケ屋で開発や発表練習出来るのかなと思いながら寝る
— ほつた (@hotu_ta) September 24, 2016
発表直前の朝、とあるパンバイキングに行き、ひたすらパンを食べながらどうにか実際に出品できるようにしようと頑張っていました。 490円とコスパは最高だったのですが、評価通りパンが冷めていてあまり美味しくなく、なんで名古屋に来たのにパンばかり食べてるんだろうと思いながらもくもくと開発していました。
ただ、PhantomJSのバグなのか出品画面でどう頑張ってもカテゴリの検索ボタンを押すことができず断念。 ChromeDriverだと正常に動いたのでそれならHerokuでChromeDriverを動かしてどうにかしようとしましたが、HerokuのChromeDriverに関連するBuildpacksがまともにメンテされておらず、11時まで悪戦苦闘するも断念。
11時になって、Slackでもう開場したよという話だったのでとりあえず会場に行くことにしました。 本当は10時開店のカラオケ屋に行ってひたすら発表の練習をする予定でしたが、結局いけませんでした*11。
発表
トップバッターだったので滅茶苦茶緊張しました。全く発表の練習が出来ていなかったのでどうなるかと思っていたら、なんとデモ実機が映らないトラブルに見舞われました。それで気を取り直したのですが、スクリーンを見ずにデモ実機を見て操作してしまったのでまともに見せられていなかったみたいで滅茶苦茶後悔しています*12。
幸運にも発表前にほんの少し練習して、これはデモを1分以内に収めても発表が間に合わないことが分かっていました。なので時間配分はかなり気にしていたのですが、やはり後半慌ててしまって「入れ替わってる!?」と決めることが出来なかったのが一番悔しかったです...。
発表する前は、東京より名古屋の方がやはりレベルが低いかなとか勝手に思っていました。
名古屋大会の平均年齢の低さやばい #hacku
— ほつた (@hotu_ta) September 25, 2016
ですが、他の発表を見ていていくと東京会場に参加していたと人よりも低いのは平均年齢だけで、技術レベルが高すぎの方が何人もいて手のひらを返すように名古屋を見直しました。
Hack U 名古屋会場:最優秀賞&Happy Hacking賞「ヲタフク」 オタクなどの服に詳しくない人向けの自動コーディネートおすすめデバイス。USBに取り込んだ画像データをその日の天気、気温、ラッキーカラーを加味しておすすめコーディネートを提案。 #hacku
— hirose504 (@hirose504) September 25, 2016
実は、他チームのSlackチャンネルを定期的に覗いていたのですが、このスライドをもう見た瞬間にもう最優秀賞は無理だと思っていました。
これであなたもおシャンティ!!!! #HackU pic.twitter.com/sPOzu56PD5
— ごまき⊂((・x・))⊃ (@gmsesame) September 25, 2016
Hack U 名古屋会場:優秀チーム1「ReScuVer」 スキューバーダイビング時の緊急事態に対応するアプリ。ハウジングに入れた端末が緊急時に浮上し緊急事態のあった位置を地図でお知らせ。 #hacku
— hirose504 (@hirose504) September 25, 2016
Hack U 名古屋会場:優秀チーム2「姫ソムリエ」 童貞を殺す服を着たオタサーの姫を撮影し自動的にスコアリングするアプリ。DeapLearning技術を使用。姫による被害の最小化を期待。 #hacku
— hirose504 (@hirose504) September 25, 2016
中学生が発表だなんて、もう自分はおっさんです。
プレゼンの大トリは、なんと、中学生!!!! #HackU pic.twitter.com/8EH77noZTk
— ごまき⊂((・x・))⊃ (@gmsesame) September 25, 2016
展示会では、軽くブースを見回り、優勝しそうなチームに軽く挨拶しました。 それからインタビューが来ましたので、あまり説明できなかった仕組みの部分について、発表のときと比べれば丁寧に説明できたかなと思っています*13。
そして、なんとヤフオクの開発に携わってる方がブースの近くにいらっしゃって、滅茶苦茶「ヤフオク出品やら何やら面倒だしだめだよね」的な話をして滅茶苦茶盛り上がっていました*14
— ほつた (@hotu_ta) September 25, 2016
審査発表で、賞はゲットできなかったのですが、総評で「もうサービス化したらどうかな」的なことを言われて、まるで「君の名は。」を見たときと同じように涙目になってしまいました。
そして、懇親会でピザ以外やっと名古屋らしい食べ物が食べれて幸せになりました。
中でも手羽先を食べすぎました*15。
あと、串があったのですが写真をうまく取れていなかったみたいです。
懇親会のときの社員LTはものすごく面白かったので、やはり”スライド”の腕前は皆さん本当にすごいと思います*16。
社員LT始まった⊂((・x・))⊃ #hacku pic.twitter.com/k2bFppoAme
— ごまき⊂((・x・))⊃ (@gmsesame) September 25, 2016
クリエイティブな発想は合コンが生み出している #hacku pic.twitter.com/appL8KdIrn
— ごまき⊂((・x・))⊃ (@gmsesame) September 25, 2016
まとめ
某Slackに定期的に流れるテンプレで慰められてる
— ほつた (@hotu_ta) September 25, 2016
(*゚∀゚)o彡゚NAGOYA!NAGOYA! #hacku
ビルの中から見えた名古屋城と名古屋市内風景 pic.twitter.com/3bvmVsjAbT
— ほつた (@hotu_ta) September 25, 2016
賞は取れなかったけど本当に楽しかった #hacku
— ほつた (@hotu_ta) September 25, 2016
Hack U初めての参加でしたが、控えめに言って最高でした。
今更なのですが、東京大会に出ていたらもしかすると優秀賞くらいゲットできたかもしれないなとか割とどうでもいい悔しさが色々と心のなかで残っています*17。 この悔しさを胸に、今後もこのDouble-Auを滅茶苦茶いい感じになるまで開発をしていき、いつか近いうちにサービス化が出来たらなと思っています。ただ、企業しか出品APIが使えないのでいい感じに出来たら適当に合同会社でも作ってAPI使いたいなと思っています。夢のような話ですが、本当に今自分がやりたいことなので、こんなことを年度内までには絶対にやりたいです。
そして、何よりも言いたいのが、こんな自分でもやれば1人だけで開発して成果物を作ることが出来るということです。 ただ追い込まれなければ、こういう力を発揮することは難しいのではないかと思います。 自分で追い込むのもありですが、だらけてしまうなんて事があったら、こういうハッカソンなどに積極的にチャレンジして追い込まれて開発をするのが1番なのではないでしょうか*18。
ハッカソンはいかにテーマとは関係ない作品を作って技術の無駄遣いやらハイクオリティなスライドを作って受けを狙ってテーマに無理やり繋げるかなんだと改めて思い知った #hacku
— ほつた (@hotu_ta) September 25, 2016
最近ハッカソンに参加して思っているのですが、本当にこれですね。
最後に
最後に、丁寧にサポートをして下さいましたサポーターの方々には感謝しようにもしきれません。
そしてHack Uスタッフの方々、参加した皆さん、本当にお疲れ様でした。
またどこかで参加された方とお会いすることでしょう。 もちろん来年もHack Uがあればリベンジしたいです。
実質1人開発だったけど普段と比べて圧倒的に技術力が伸びたし得るものが非常に大きかったので来年も出たい #hacku
— ほつた (@hotu_ta) September 25, 2016
次は絶対に何としてでも賞を取りたいと思います。
9/28 追記 一部、日本語がおかしい点やみづらいところがあったので修正しました。
*1:ちゃんと見ていないので多分間違っていると思いますが
*2:UIとかかなり酷いのでその辺りのマサカリは勘弁してください。今後頑張ります...。
*3:なんと京都工芸繊維大学がHack U 2016期間中にやるのでもしかするとHack U 東海大学やるかもしれないですね。ヤフーさん自称東大で是非とも今年も開催をお願いします!
*4:どの会場に出場しても問題ないことを確認した上で出場しました。
*5:Twitterで一緒にやりたい人〜!と声をかけなかったからかもしれませんが、結局周りにデザインとかフロントエンドが出来る人いないみたいです...。
*6:これだけでも本当にありがたい限りなのですが...。
*7:今から思うとこんな感じでした。※エントリー直後は、まだこのネタを知りません。
*8:現在Privateに設定してあります。
*9:本当はもっと見るを実装したかったのですが...。
*10:ただ、自分も開発期間下旬になるまで秘密主義で何を開発するのか、全く伝えずにひたすら開発していたのがちょっと良くなかったよなと反省しています。
*11:こうなるのなら行けばよかった...。
*12:終わった後、サポーターの方に指摘されて気づきました
*13:怖くてまだ動画を見返せていません。
*14:あまりに駄目すぎて伝えきれなくて悔しいです。
*15: 口の周りにごまがついてしまっていて、スタッフの方に指摘されなければそのまま新幹線に乗ってるところでした(笑)
*16:飛び入りで図書館の自動化スクリプトについて発表しようかなと思っていたのですが、あまりの凄さに唖然としてしまいLT発表しませんでした。
*17:ヤフー賞とかあったら絶対に受賞出来てたのに...。