質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3286閲覧

メルカリのスクレイピングするandroidモバイルアプリをつくりたい!

ryuuabis

総合スコア24

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/29 00:38

前提・実現したいこと

自分で要件定義してアプリを作成した事がない初心者です。
(UdemyでちょっとしたReactNativeアプリ1つとDjangoアプリ3つ程作成程度。
深い基礎知識みたいなものはないと思います)

https://play.google.com/store/apps/details?id=jp.hiraky.furimaalert&hl=ja&gl=US 
このアプリみたいなものを作りたいです。

こちらメルカリの希望商品を価格帯や送料負担、商品状態など設定しておいて
新着商品が出たら通知してくれるアプリなのですが、
商品が10までしか登録できないので自分でスクレイピングできるandroidアプリを作成したいです。

発生している問題

長文になってしまいすみません。 必須で考えないといけないこと、先に設計しないとできないこと、他に必要な知識など 教えていただけたら幸いです。 よろしくお願いいたします。 質問1 言語はReactNativeかPythonでやりたいのです。 基本はReactNativeを使って、スクレイピングするところだけPythonとなるのでしょうか? スクレイピングの知識が今はないのですが、特殊なスクレイピング技術が必要なのでしょうか? 質問2 スクレイピング先はメルカリのWebサイトとアプリどちらの方から取得しているのでしょうか? 質問3 アプリ内に広告を入れるかまだわからないのですが後からコードを書き換えて簡単に広告を入れることができるのでしょうか? 質問4 アプリ内でメルカリからヤフオク、ラクマなど切り替えるシステムの仕組みはどのようになっているのでしょうか? 質問5 スクレイピング登録でアプリに一定期間ログインしないと検索オフにする仕組み(アクセス業務妨害対策で必要?) 質問6 アプリ作成の流れがよくわからず、要件定義して一つずつ機能を作っていく形だと思っています。 ネットなどの知識や質問サイトなどの知識で進めていく形で大丈夫なのか少し不安です。 メンターなど雇って教えてもらいながら作成するべきでしょうか? 質問7 SQLなどのデータベースなどの知識は必要でしょうか? 質問8 スマホの機種によってできないものなどあるのでしょうか? 要件定義<必須> ・スクレイピング(商品価格帯、商品名、商品画像、除外ワード、送料負担、販売状況、 所品状態、出品者、何日前に出品したか) ・検索画面、スクレイピング登録画面、その他設定画面 ・登録画面の作成、更新、削除 ・プッシュ通知 ・検索画面で検索するといま現在出品している商品が表示される ・スクレイピング登録画面で検索すると最近新規出品したものしか表示されない ・アプリに一定期間ログインしないと検索オフにする(アクセス負荷対策?) ・設定画面でフリマ切替え、プッシュ通知、問い合わせ、ヘルプ、データ引き継ぎ <あったら良い機能> ・ダークモード切り替え ・アラーム音変更、調整

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fiveHundred

2021/04/29 02:26

メルカリはスクレイピングの行為を規約で禁止しています。 最悪の場合、垢BANやアクセス禁止になります。 そして、アプリで行う場合となると、基本的に利用者のIDや端末で行うことになり、利用者に対して垢BANやアクセス禁止処置が行われることになります。 こうなってくると利用者が「あなたのせいでメルカリが使えなくなった」ということであなたに責任を取らせることになりますが、そのようなアプリを作りたいのでしょうか?
guest

回答2

0

メルカリのデータのスクレイピングが禁止されているかどうかは諸説あるようですが、
ログインしない状態で、一般のユーザーがアクセスする以下の頻度でアクセスし、
メルカリのサーバーに負担をかけない(15分に1回のアクセス)というのを仮定します。

(メルカリにログインしてスクレイピングするのは明らかに規約違反なのでできません)

[質問1]
ReactNativeは言語じゃなくてアプリケーションフレームワークです。(言語はTypeScript
かJavaScript)
例えばアプリはReactNative(TypeScript)で作り、スクレイピングする部分をpythonの
flaskで作ってサーバーにデプロイするやり方はあるでしょう。

(検索すると、ReactNativeは本職の人でも開発が辛いっていう意見が出てきてますけどね)

「スクレイピングの知識が今はないのですが、特殊なスクレイピング技術が必要なのでしょうか?」
→スクレイピングに特殊も普通もないと思います。

[質問2]
「アプリから取得する」の意味がちょっと分かりません。
データの取り先という意味ならwebサイトでしょう。

[質問3]
できますが広告バナーを入れるとこはほかのコンテンツやインタラクティブ要素と重なっては
いけないという約束事があるので、それを考えずに作ると手直しが必要になる場合があります。
https://qiita.com/dario_okazaki/items/7892b24fcfa787faface

[質問4]
多分スクレイピングやってるサーバー側がヤフオク、ラクマ、メルカリに分かれてて、フロント
エンドからデータの呼び出し先を変えているんじゃないでしょうか。

[質問5]
サーバー側でデータ取得する仕組み前提なら、サーバー側の取得頻度を気を付ければ、アプリ側
でそのような必要はないと思います。

[質問6」
人それぞれだからわからないとしか。
一般論として、まず調べてやってみて、とても無理そうと思ったらお金出すことになるでしょう。

[質問7]
複雑な検索をしたいならあった方がよいと思う

[質問8]
ReactNativeは環境に依存するライブラリもあるらしいので、できない機種もあるでしょう。

投稿2021/04/29 02:46

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/29 02:56 編集

低評価入れた人は、低評価を入れた理由を書いてください。
ryuuabis

2021/04/29 08:39

アカウント作成して頂いたのでしょうか。 思っていたこととだいぶ違い、おかげさまでスッキリしました。 私が今使っているアラートアプリなのですが、新規出品されると毎回1分いないなどで通知が来てますがメルカリ側サーバに結構負荷をかけているということですね。 回答頂いたものを参考にしてとりあえず作成していきたいと思います。ありがとうございました!
guest

0

ベストアンサー

baitokunさんがすでに丁寧な回答をしてくださっているので
この回答をベースに補足するような形で回答します。

規約違反になるかどうか

baitokunさんの回答の

「ログインしない状態でのスクレイピングならOK」

というのがよく分からなかったので調べました。
「スクレイピングは利用規約で禁止されているが、利用規約はユーザ登録時に同意するものなので、
ログインしていない状態のスクレイピングは利用規約とは関係ないのでOK」
ということのようです。

質問7

質問7
SQLなどのデータベースなどの知識は必要でしょうか?

自分専用のアプリなら規模的に、データーベースがなくても問題にならない範囲のスクレイピング頻度に抑えられそうなので大丈夫かもしれませんが、
公開するつもりならデータベースは必須です。

質問3で「広告」について話しているので、
「自分専用ではなく他の人も使えるように公開するつもり」
であると判断し、
質問5より
「商品ごとにスクレイピングを行おうとしている(ユーザーAがゲーム機A・シューズB・TシャツCを通知希望商品として登録している場合に、ゲーム機Aの新着が来てるかどうか・シューズBの新着が来てるかどうか・TシャツCの新着が来てるかどうかをそれぞれ一定周期でチェックするようなイメージ)」
であると判断しますが、
仮にこの作ろうとしているアプリの利用者が10人いて、それぞれのユーザが通知希望商品を10個登録するとしたらそれだけで100商品です。
1分に1回スクレイピングしても100分かかり、1商品の検索頻度は100分に1回です。
利用者・通知希望商品が増えるたびどんどん遅くなってしまいます。

フリマアラートはそういった仕組みではないですし、もちろんデータベースも使ってます。

質問6にも関連しますが、
ざっくりとした処理の流れ、もしくはフリマアラートがどんな仕組みになってるのかくらいは
他の人に聞いてから、開発に着手した方がスムーズに進むと思います。
MENTA(https://menta.work/)
とかで聞けば1kくらいで教えてくれる人いるんじゃないかと思います。

投稿2021/04/29 05:38

編集2021/04/29 17:15
PgMidori

総合スコア184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/04/29 07:28

補足ありがとうございます
ryuuabis

2021/04/29 08:32

とてもわかりやすい回答ありがとうございます! >仮にこの作ろうとしているアプリの利用者が10人いて、それぞれのユーザが通知希望商品を10個登録するとしたらそれだけで100商品です。 1分に1回スクレイピングしても100分かかり、1商品の検索頻度は100分に1回です。 利用者・通知希望商品が増えるたびどんどん遅くなってしまいます。 登録している商品を順番にスクレイピングしていくから商品が増えるごとに順番待ちがおこり検索時間が増えてしまうということでしょうか。 データベースを使えば作成したアプリのユーザーごとに分けてスクレイピングして、他のユーザーと同時にスクレイピングできるようになるみたいな感じでしょうか?
PgMidori

2021/04/29 17:13

> 登録している商品を順番にスクレイピングしていくから商品が増えるごとに順番待ちがおこり検索時間が増えてしまうということでしょうか。 「登録している商品を順番にスクレイピングしていく仕組み」 にした場合はそうなります。 1分に1回、1商品の新着確認のためのスクレイピングを行う場合、 100商品なら全部チェックするのに100分 10000商品なら全部チェックするのに10000分かかっちゃいます。 10000商品を100商品の時と同じ100分でチェックするためには、 スクレイピングの頻度を100倍の0.6秒に1回にする必要がありますが、 これはもう明らかにメルカリのサーバーに負荷をかけてますし、メルカリ側から何らかの対処をされると思います。 > データベースを使えば作成したアプリのユーザーごとに分けてスクレイピングして、他のユーザーと同時にスクレイピングできるようになるみたいな感じでしょうか? その場合もユーザーが増えれば増えるほど必要なスクレイピングの回数は増えてしまうはずです。 多くの人が使えるように作るなら、 ユーザーがどれだけ増えてもスクレイピングの回数は変わらないような仕組みにしないといけないと思います(フリマアラートはそういう仕組みになってるはず)(逆に10人とかしかこのアプリを使う予定がないなら別にどんな仕組みでもなんとかなると思います)。 ぜひ自分で考えてみて、 詰まったらまたteratailなりquoraなりなんなりで質問してみてください。
ryuuabis

2021/04/29 19:59

なるほど確かにそうですよね。 作成したアプリ(ReactNative)とスクレイピングサーバ?(Flask)のやりとりは 常にユーザーの取得したい情報を更新続けて溜めていき、 スクレイピングサーバ(Flask)とメルカリサーバのやりとりでは 1分ごとなどに設定して溜めていた取得したい情報まとめてスクレイピングしていく みたいなことができたらメルカリ側に負荷もかからないような気がするのですがまた実装が難しそうですね。 無料でここまで教えていただき、実装の流れなど大変勉強になりました。 少しずつ分解して実装していきたいと思います。 詰まりましたらまた皆様の力をお借りしたいと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問