🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1054閲覧

PythonプログラムをRailsで作成したwebアプリケーション上で実行させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/10/10 13:21

編集2019/11/27 02:42

#0,今回の質問を通して実現したい内容
※APIの開発者は私ではありません。その人のことをA氏と呼称します。
##「A氏が作成したライブラリが使用され、かつA氏がPython3で作成したAPIを実行して得られた画像と数値を、web上に公開すること」

###1,わからないなりに、とりあえず調べて理解したこと、理解できなかったこと
APIについて知らないと、そもそもお話しにならないと感じたので、qiita等々からわかりやすく書かれていると感じるものを選んでとりあえず読んでみました。その中で理解できたもの、理解できなかったものを上げていきたいと思います。

####1-1,理解したこと
参照したサイト

APIがなんたるか?という基本的なことについては理解できたのではないかと思います。

以下、私のAPIに対するイメージ
「AとBというソフトウェアがあった時に、AにはあるがBにはない機能を、Bで使いたい!よし!BからAの機能を呼び出して使ってしまおう!そうすれば、開発の二度手間をせずに済む!これを担っているのがAPIだ。」
かなり大雑把なのは堪忍してください。

####1-2,理解できなかったこと

上記のURLなどの「実際にAPIを作るときの注意点」や「作り方そのもの」については、実際に作った経験がないので、全く理解できませんでした。

###2,私のスキルセット
・Ruby + Rails5を用いて簡単なアプリケーションが作成できる。
・HTTP通信等については理解している。
・レベルは低いが、Python3も使用することができる
・progateにて、JavaScriptは2周ほど触ったことがあり、APIについて知ろうと検索した内容で出てきたスクリプトについて抵抗がない。

###3,私のスキルセットから私が考えたweb公開手順
#####「Railsで作成したwebアプリケーションに、PythonのAPIスクリプトを組み込めばいいんじゃないの???それでherokuなりAWSなり使ってデプロイしちゃえばいいやん!!」
######しかし
1時間程度探してみましたが、そんな手順どこにも書いておらず(探し方がダメなのかもしれないですが)、「Rails --api」についての情報のみ得ることしかできませんでした。
Railsで作成したアプリケーションに、Pyhton3で作成したAPIは組み込めないのでしょうか??

このことから、Python3で書いてあるAPIの内容を、Rubyで書き直さなければいけないのではないか?という結論に至りました。

それでできるのであればそうしても良いのですが、APIは私が開発したものではありません。さらに、このAPIには、A氏が開発した独自のライブラリが使用されています。
それもRubyで書き直すとなると、工数がかなり増えてしまいそうで、締め切りを守れるかわかりません。ちなみに、締め切りは今年の末になっています。

###まとめ
締め切りの点も踏まえ、Python3で書かれているスクリプトをなるべく書き換えないような形でwebに公開したいと思っています。
私の考えたweb公開手順については重視していないので、「こんな方法あるよ!」や「これ勉強すれば組み込めるよ!」といった情報がいただけるととても嬉しいです。
もちろん、「いや、Python3からRubyにスクリプトを書き換えないとRailsじゃ動かないよ??頑張って徹夜してでも書き上げなさい!スクリプトがあるだけましじゃん!」というような意見でも結構です。
「Rails使うまでもないよ!」や「Rails使うだけが、webに公開する手段じゃないよ!」というものでも結構です。
どのような方法が存在し、定められた期間の中で、目的達成のために最も最適な方法は何か?を知りたいので。
どなたか、ご教授いただけると幸いです。
よろしくお願いします。

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

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

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

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

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

yu_1985

2019/10/10 17:29

わからないことがたくさんあります。 具体的な実装がどんなものかわからないのでなんとも言えませんが、そもそもなぜすでにPyhton3で実装されたAPIを動かすのにわざわざRailsを使おうとしているのかがわかりません。 そのままそのPython3で作られたモジュールをサーバ上で動かして公開するのではなぜダメなのでしょう?
退会済みユーザー

退会済みユーザー

2019/10/10 17:56 編集

技術的なことではなくて、なぜそんな無意味なことをするのかがわからないから教えろ、ということですね? 私もなんでこのようなことをするのか、実は全くわかっていないんです。 まず、今回のは卒業研究の一環です。 教授に何かやりたいことない?と聞かれたのですが、残念ながら望んで入った学部学科ではないので、特にやりたいと思うこともなく、、、。 「とりあえず、何かできること列挙して?」という運びになり、「Railsでアプリケーション作ったことあります」と発言したところ、Python3で書いてあるAPIの取得結果をweb上で公開してほしいということになりました。 自らPython3をRailsで動かしたい!!という訳ではありません。それならフレームワークとしてDjangoを使う方が少なくとも自然だと思うので。 しかし、今回のタスクのゴールが「webで公開すること」なので、やらざるを得ないということです。 そして、私はRailsを用いたアプリケーションしか作ったことがない(=webに公開したのはRailsで作成した物のみな)ので、これ以外に実装方法がわからず二進も三進も行かない状態、ということです。 さらに、A氏が実装したAPIに関しては、研究室内の物であるため、外への公開ができないという理由から、ここでの質問で、そのスクリプトをお見せできません。 これで納得していただけますか? もしご納得いただけたら、この誰がどうみてもなんでこんなことやるんだろ?というタスクを達成するための方法を1つでも教えていただける幸いです。 非常に不親切な質問であることはわかっていますが、teratailで回答されている方はみなさんが私なんかよりもずっとエンジニアとして優秀であることを私は知っています。 ほんの少しのヒントや、こうやればできるんじゃないか?ということだけでも励みになります。 どうか、ご回答のほどよろしくお願い致します。
yu_1985

2019/10/10 18:03

「A氏がPython3で作成したAPIを、web上に公開すること」が目的に入っているのですが、「A氏が実装したAPIに関しては、研究室内の物であるため、外への公開ができない」というのが矛盾しているように思えます。 ソースは公開できないけどAPIは公開できる、ということなのか。 「Python3で書いてあるAPIの取得結果をweb上で公開してほしい」ということであれば、APIをどこかで動かしてて、そのAPIに対してRailsで実装したアプリでリクエストを送ってレスポンスとして得られたものを処理して表示すればいいのでは、と思うのですが。 最終的に公開すべきものは何でしょうか?
退会済みユーザー

退会済みユーザー

2019/10/10 18:15 編集

>「A氏がPython3で作成したAPIを、web上に公開すること」が目的に入っているのですが、「A氏が実装したAPIに関しては、研究室内の物であるため、外への公開ができない」というのが矛盾しているように思えます。 →僕の記述ミスです。A氏が書いたスクリプトそのものをご提示することが不可能ということです。A氏のスクリプトを実行した結果、KEGGというソフトウェアから得られた物に、A氏が改良を加えた物(=スクリプト内に改良が記述されている)をweb上で公開せよ、というタスクです。おそらく、改良部分が研究室内から漏れてはいけないということです。 >「Python3で書いてあるAPIの取得結果をweb上で公開してほしい」ということであれば、APIをどこかで動かしてて、そのAPIに対してRailsで実装したアプリでリクエストを送ってレスポンスとして得られたものを処理して表示すればいいのでは →その通りです!!そのために何を勉強したらよいでしょう?私なりに、調べてみたところ、RestAPIやFlaskなどを勉強する必要があるのでしょうか? >最終的に公開すべきものは何でしょうか? →A氏のスクリプトを実行した結果、得られた物です。今回の場合は、グラフと数値になります。
yu_1985

2019/10/10 18:21

質問を踏まえた上で回答を記載しました。 が、その「Python3で作成したAPI」の実物がわからないのであまり踏み込めません。 まずはそれをどうやって動かすかを調べてください。 「API」と言っていますが、もし単なるスクリプトなのであればシェルコマンド経由で呼び出して実行すればいいんですけどね。
退会済みユーザー

退会済みユーザー

2019/10/10 18:31 編集

もう1往復ですが、このやりとりを続けさせていただくことを許してください。 指導院生にAPIと言われたので、「ほう、これがAPIという物なのか」と盲目的に信じ込んでしまっている可能性が高いです。 私の言っているAPIというものは、ターミナルで動かしています。その結果、得られたグラフと数値をweb上で公開するということになります。 これスクリプトですか? スクリプトである場合、Rails5からシェルコマンド経由で呼び出す方法について、詳しく書いてある文献等教えていただいてもよろしいでしょうか? これはさすがに甘え過ぎかもですが・・・
yu_1985

2019/10/10 18:33

ターミナルで動かす、というところで何をしているかもう少し具体的に書けますでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/10 18:41 編集

python3 ファイル名.py というコマンドで実行しています。 その結果、スクリプトが存在している、同フォルダの中に、pdf形式のグラフが表示されます。 同様に、もう一つのスクリプトを実行したものについては、数値が出力される、という話になっているのですが、院生からそちらのファイルはまだもらっていないので確認はできていません。 ちなみに、数値の方は、オプションをつけて実行しなければならない形になっていると聞いています。 以下のような感じです。 python3 ファイル名,py -p
yu_1985

2019/10/10 18:42

それはスクリプトですね…。もうご自分でスクリプトと仰ってますが…。 APIという言葉が出てきたのは、そのスクリプトがどこかのAPIからデータを取得しているとかではないですか?
退会済みユーザー

退会済みユーザー

2019/10/10 18:52 編集

やはりそうでしたか、、、方々をAPIで検索していたから二進も三進もいかなくなってたんですね、、 とりあえず、スクリプトだとわかってよかったです。 >APIという言葉が出てきたのは、そのスクリプトがどこかのAPIからデータを取得しているとかではないですか? おそらく以下のURL先に書いてあるKEGG APIからデータを取得してきています。 https://www.genome.jp/kegg/soap/v2.3/doc/keggapi_manual_ja.html つまり、今回の場合は、Rails5でターミナル経由にこの2つのスクリプトを実行するためのコードを書く方法を知り、書けばよい、という結論になるのでしょうか?
yu_1985

2019/10/10 19:11

ざっくりそんな感じでいいと思います。 一応回答の方に追記します
退会済みユーザー

退会済みユーザー

2019/10/10 19:42

ありがとうございます。
guest

回答1

0

ベストアンサー

  • Python3のモジュールをサーバ上で動かす方法

ついでにその構築方法

  • REST APIのデータのやり取りについて

これらがわかれば行けそうな気がしますが、そのモジュールがどういったものなのか具体的にわからないのでこれ以上はなんとも言えません。
APIが動いてさえくれれば、あとはその動いてるAPIにリクエストを送ってデータを取ってきてもらうだけだと思うんですが…。

※追記
該当のモジュールはただのスクリプトのようなので、それをRailsの中から呼び出して、取ってきたデータをRails側で表示すればよさそうですね。
APIの仕様がはっきりしてるなら自前でやってもできそうな気がしないこともないですが、既存のスクリプトで何をどうやって取ってるのかを見て、使うべきデータをどこで取ってるのか、を見るべきところかと。

それができたら次はそのモジュールを使わずに自分でRubyで実装してみるのもいいかもしれませんね。

投稿2019/10/10 18:19

編集2019/10/10 19:14
yu_1985

総合スコア7588

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問