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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Ruby on Rails

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

2回答

659閲覧

gemの中身を腹落ちした上で使用したい(回答数を期待しています)

lemon_engine

総合スコア4

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RubyGems

RubyGemsはRubyによるプログラミングのためのパッケージマネジメントツールです。ユーザはこれを使用することで、Rubyライブラリのダウンロードやアップデートや、依存関係の自動解決が可能になります。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Ruby on Rails

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

1クリップ

投稿2020/09/12 12:37

編集2020/09/12 13:07

5点質問がございます。

私はgemをqiitaなどの記事を用いて使うことがよくあります。

しかし、gemというブラックボックスな代物をコピペで騙し騙し使い、ブラックボックスの中身を知らずして使うことがよくあるため、いつもかなり不安になりながらgemを使っています。もっといえば応用が全く効きません。この状態が堪らなく嫌なので、タイトルのような感情になりました。なので、質問をしたいと思います。

  1. 普段gemを使う際に皆さんは何を意識しながらgemを使用していますか?
  2. gemの中身を腹落ちした上で使用する場合、gemのREADMEだけでなくソースコードも見ないと応用が効かないと思います。その場合「gemソースコードのどこを見ているか」「1つのgemに対して平均して何時間くらいgemの中身を調べる時間に使っているか」「調べる際はデバッガーなどを使用したりしているのか」「gemのREADMEなどは基本的に英語で記載されているが、gemを使う人はみんな英語を理解しているのか?」

お手数おかけしますが回答頂けると幸いです!また、回答のサンプル数を増やし、gemに対して複数人がどのような考えを持っているのかも知りたいので(回答数を期待している状態)、様々な方にお答え頂けたらと思います。

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

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

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

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

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

hentaiman

2020/09/12 13:14

rubyそのものに対しては同じ疑問は湧かないんですか?
lemon_engine

2020/09/12 13:32 編集

昔同じ疑問をRubyで感じ質問をしたのですが、「中身がどう動いているのかは分かってないけど、メソッドの挙動が分かっていればプロダクト開発はできる」といった回答でした。 それからは公式ドキュメントを読んだり小さなアプリを作ったりirbなどで試したりして、挙動を把握しながら使っています。
hentaiman

2020/09/12 14:04

どの程度の規模のgemから疑ってかかってるんですか? 自分はruby知らんので求められる回答者の対象では無いけど、他の言語でもマニアックなライブラリなんかは動作確認と情報検索はしますね
lemon_engine

2020/09/12 14:13

gemの規模感などはドキュメントの量以外で見た目から判別ができないので(≒そのレベルの人間)、全てのgemに対して疑ってかかります。 「動作確認と情報検索」ありがとうございます!
m.ts10806

2020/09/12 21:24

車の運転を、内部の仕組みをすべて理解して運転している人ってどれだけいるだろうか 飛行機に乗る時に飛行機がなぜ飛んでいるか気にしている・知って乗っている人はどれだけいるだろうか
m.ts10806

2020/09/12 21:26

>5点質問がございます。 2点しか書いてないけど、あと3点何だろうか、というのは見る人みんな気にするのではと思いますが、 低評価が付いている通り、この質問への回答はあまり期待できないのでは。 「そういうもの」として使ってる人が圧倒的に多いからです。 gemに載せるライブラリとか作るつもりですか?
guest

回答2

0

ベストアンサー

gemの中身を腹落ちした上で使用する場合、gemのREADMEだけでなくソースコードも見ないと応用が効かないと思います。

必ずしもそうではありません。特に、C言語で書かれたGemは、Rubyしか知らないとソースコードを読むこともできません。


特にそのGemへ興味がある状況でなければ、ソースの読解は必要に迫られてからでじゅうぶん間に合います(しっかりしたドキュメントがあれば、ソースまで行かなくてもことが片付きます)。中身を見ずに済むブラックボックスは、良いブラックボックスです。

投稿2020/09/12 12:57

maisumakun

総合スコア145183

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

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

maisumakun

2020/09/12 13:00

状況によっては、ドキュメントに書いてあること「だけ」を頼りにコードを書いたほうがいいことすらありえます。 ドキュメント化されていない実装の詳細に依存したコードを書くと、将来gemのバージョンを上げた際に中身が書き換わっていて、うまく動かなくなる危険があります。
lemon_engine

2020/09/12 13:06

・ソースの読解は必要に迫られてからでも十分間に合う ・中身がC言語で書かれれている場合があるので、中身を理解できない場合もある ・中身をみずに済むブラックボックスは、いいブラックボックス ・バージョンアップで動かなくなることを考慮するとドキュメントだけでコードを記載した方がいい場合もある 総じて、「ドキュメントの理解だけでも十分なんとかなる」 ご回答ありがとうございます!
maisumakun

2020/09/12 13:08

もちろん、「ドキュメントが不十分」、「ドキュメントと実際の動作が違う」などでソースまで追いかけないといけない場面も、なくはないですが、毎回毎回というわけではありません。
lemon_engine

2020/09/12 13:11 編集

ありがとうございます! 原則「ドキュメントの理解だけでも十分なんとかなる」 しかし、ドキュメントの不備などでソースまで追いかける必要もある。必要に応じて使い分けるのが大事。 と理解しました!
guest

0

いつもかなり不安になりながらgemを使っています

何が不安にさせている要因なのか、をもっと掘り下げると腹落ちするかもしれませんね。

追記

「ブラックボックスの中身を知らずして使う」ことの不安と、掘り下げの内容に乖離があると感じました。

掘り下げの理由を見るに、
プロダクト開発者はgemを完全に理解している
→ 対して自分はgemを理解できていない
→ 完全に理解せず使うのは良くない
と断定している。

もっといえば応用が全く効きません

この部分も、完全に理解したら応用できるようになる、と決めているように思えます。

実際に質問の内容も「gemのREADMEだけでなくソースコードも見ないと応用が効かないと思います」と決めています。

これらから読み取れるのは、「みんなソースを理解し、だから応用として使えてる」でお話をされているなと思いました。

それが、冒頭では「ブラックボックスへの不安感」なのに、質問内容が 「gemのソースコードの読み方」というすれ違いを生んでいるかと思います。

自分が決めつけていた事象をしっかりと分解して考え、質問すると的確な回答を得られるかと感じました。

話を聞いた上で分解してみると

  1. gemを理解せずに使うことは良いのか?
  2. gemを使う時、ソースコードを読んでいるか?
  3. gemを理解し、そのgemの様々な機能を使うにはどうしているか?
  4. gemのリファレンスが英語で理解できない、おすすめの方法はあるか?
  5. 初心者がgemのソースコードを読む時、どこから読み始めると理解できるか?
  6. gemのコードリーディングをする時のおすすめの手法やテクニックはあるか?

のような質問になるかなぁと思いました。

今回の場合、疑問と質問が混ざっており、また1つの内容に対して質問が多すぎると中々得られるものが少ないです。
トピックに対して別の質問に分けてみると良い回答が得られるかも知れませんね。

また自分の回答としては、完璧を求めすぎると中々先に進めません。
もっと目的思考で考えてみると柔軟になって良いのかなと思いました。
例えば「応用を効かせたい」のが、gemの色々な機能を使いたい、という内容だった場合
リファレンスで他の機能を持つメソッドだったり、サンプルコードを実行してみてどういう結果が得られるか見てみる、などのアプローチがあると思います。
目的を明確にすると、いろんなアプローチ方法が見えてくると思いました。

しかし、中身を知りたいという欲求はとても良いことだと思うので、ぜひ色々なgemのコードを読んでみると良いと思います!

投稿2020/09/12 13:20

編集2020/09/12 14:14
necocoa

総合スコア209

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

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

lemon_engine

2020/09/12 13:29 編集

「ブラックボックスの中身を知らずして使う」ことが不安な要素で、それに対する個人的な解決方法になり得るのではないかという事柄を今回質問として挙げさせて頂きました。 掘り下げると、皆さんが普段プロダクト開発をどのようにして行っているのかが分からず、自身の方法が間違っているのではないかという不安が質問に現れているのだと考えております。それゆえに回答数を期待しており、様々な角度から皆さんがどのような方法で技術に触れ合っているのかを知りたいという意図があります。
necocoa

2020/09/12 14:15

少々長くなってしまったので、本文の方に返答を追記しました。
lemon_engine

2020/09/12 14:45 編集

長文での回答、ありがとうございます! 私の思考を分析した上で、それを理路整然で分かりやすい回答に載せている文章力と論理的思考力に畏敬の念を感じずにはいられません。 決めつけの部分や質問したかったことの部分はまさにその通りです。一般的なソフトウェアエンジニアは無能な自分とは違って「みんなソースを理解し、だから応用として使えてるだろう」と考えています。また質問もその質問がしたかったというものばかりです。回答者が増える明日に、別枠で質問を投げたいと思います。 夜分遅くにありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問