見出し画像

【艦これ】web系素人でも艦これAPIを叩きたい①2021【Ruby】

0. はじめに

これまで,艦これを画像処理を使って自動化などを行っていました.

しかし,画像処理ベースだと処理中にほかの作業ができないというジレンマを抱えていました.

そこで,画像処理ベースでなくRubyを用いた艦これAPIをベースに自動化する環境とスクリプトを作っていきたいと思います.

*Rubyの勉強にもなって一石二鳥ですね!

1. 艦これAPI関係の調査

とは言ってもWEB系の知識は皆無ですので,とっかかりがありません.

そこで,Google 先生に聞いてみた結果こんな感じの面白い記事を見つけましたので記載します.


-------------------------------------------

参考文献①艦これAPIを叩く

今のぼくにマッチした素晴らしい記事を見つけました.

しかし,分かる人には分かるのでしょう!

現状の僕には全く理解でませんでした.

*めちゃ専門的なことがきちんと書かれている気がします.

画像1

ソースコードを発見したのですがRubyで書かれています.

画像2

Rubyはhello worldくらいしか経験がないので,これくらいの規模のソースコードを見ても理解不能でした.

一応,動かそうと思ったのですが普通に理解できないエラーがでてきて諦めました.

C:\Users\mtani\Documents\GIT\IJN48\IJN48-master>bundle install
Your Gemfile lists the gem rest-client (>= 0) more than once.
You should probably keep only one of them.
Remove any duplicate entries and specify the gem only once.
While it's not a problem now, it could cause errors if you change the version of one of them later.
Fetching gem metadata from https://rubygems.org/...........
Resolving dependencies.....
Fetching rake 13.0.6
Installing rake 13.0.6
Fetching concurrent-ruby 1.1.9
Installing concurrent-ruby 1.1.9
Fetching i18n 1.8.10
Installing i18n 1.8.10
Fetching minitest 5.14.4
Installing minitest 5.14.4
Fetching tzinfo 2.0.4
Installing tzinfo 2.0.4
Fetching zeitwerk 2.5.1

インストールは上手くいってるようですが,次でコケました.

C:\Users\mtani\Documents\GIT\IJN48\IJN48-master>rake crx
rake aborted!
NameError: uninitialized constant ActiveSupport::Autoload
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:96:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:148:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:148:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:160:in `rescue in require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:149:in `require'
C:/Users/mtani/Documents/GIT/IJN48/IJN48-master/lib/naka.rb:1:in `<top (required)>'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
C:/Users/mtani/Documents/GIT/IJN48/IJN48-master/Rakefile:4:in `<top (required)>'
Caused by:
LoadError: cannot load such file -- active_support/core_ext
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
C:/Users/mtani/Documents/GIT/IJN48/IJN48-master/lib/naka.rb:1:in `<top (required)>'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
<internal:C:/Ruby30-x64/lib/ruby/3.0.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
C:/Users/mtani/Documents/GIT/IJN48/IJN48-master/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

もっとシンプルな構成のものを探します.



-------------------------------------------


参考文献②【ネタ】艦これのパケットをWireSharkを使って覗いてみた。

僕の中では結構有名なブログです.

WireSharkを使っている記事なんですが,簡単に言うと見れちゃいけないパケットの中身が見れてしまうというもの!

しかし,このAPIキーが分かったからなんなの!って感じです!

*後ほどこのキーの重要性が分かります.

画像3



-------------------------------------------


参考文献③艦これのAPIを直接叩いて操作しようと思ったけどやめた話

とうとう出会いました!

この記事が見たかったのです.

とてもシンプルな構成です.数行で艦これのAPIを叩いてくれています.

しかも,ようやくここでAPIキーの重要性を理解しました.

パケットを送信するときにAPIキーを使用するようですね!

画像4



-------------------------------------------


参考文献②N増し要員

下記の文献は,現状でもAPI使えるんじゃね!と思わせるような記事を抽出してきました.

これらおかげで今でのきっと使えると信じて調査を続けられました.


おわりに

なんか動かせそうなコードを発見したので.

次回から動かして実験していこうと思います.

乞うご期待ください.

#艦これ

#Ruby

#自動化

この記事が気に入ったらサポートをしてみませんか?