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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Python

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

Q&A

解決済

3回答

3681閲覧

ソースコード文の「文法的意味」を解析してくれるソフトというのはありますか?

Jishuku

総合スコア15

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Python

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

0グッド

1クリップ

投稿2020/06/22 14:29

前提・実現したいこと

文法を勉強中の身で、ソースコードを見ても文法的意味が分からないことがあります。
たとえば、該当のソースコード内のコメントのような、コードの文の内容的意味を説明されても、
文法的意味(この単語は関数なのかメソッドなのかコンストラクタなのか等)が自信をもって判別できないことがあります。
そのようなことを手軽に解説してくれる無料のソフト(できれば日本語で)というのはありますか?

該当のソースコード

Python

1import tkinter as tk 2 3root = tk.Tk() # 画面を作る 4root.geometry("200x100") # 画面の大きさを決める 5 6lbl = tk.Label(text="LABEL") # ラベルを作る 7btn = tk.Button(text="PUSH") # ボタンを作る 8 9lbl.pack() # 画面にラベルを配置する 10btn.pack() # 画面にボタンを配置する 11tk.mainloop() # 作ったウィンドウを表示する 12

試したこと

検索して調べてみたところ、Sourcetrailというソフトをインストールしてみましたが、使い方を理解するのが難しくて挫折してしまいました。

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

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

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

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

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

gentaro

2020/06/22 15:33

> 文法的意味(この単語は関数なのかメソッドなのかコンストラクタなのか等)が自信をもって判別できないことがあります。 どんな言語だろうと、それを判別できない知識レベルでコードを読もうとすること自体、アプローチとして間違っています。まず基本的な文法をちゃんと勉強しましょう。 そのぐらいの基礎を疎かにして先に進もうとしても恐らく挫折します。
Jishuku

2020/06/23 01:33

ご回答ありがとうございます。 基礎力が不足しているのは問題ではありますが、もし今回の目的を満たすソフトがあれば、むしろ効率的な学習になる(効率的な学習になるための最低限の基礎力は備えている)と考えております。
quickquip

2020/06/23 01:37

C#のタグはなんでしょう?
hentaiman

2020/06/23 02:01

> むしろ効率的な学習になる マイナスになると思いますよ。判別などツール無しでも技術者全員が出来るし、出来ないなら地道に学習して慣れて判別出来るようになった方が今後の学習効率は上がるでしょう。
guest

回答3

0

ベストアンサー

Sourcetrailというソフトをインストールしてみましたが、使い方を理解するのが難しくて挫折してしまいました。

というコメントから、「そもそも総合的な読解力を鍛える必要があるのでは」と感じたのですが、如何でしょうか。
解析するツールなどを入れることにより、自身の成長の阻害になるような気しかしません。

まずはどんな言語でも、公式のドキュメントやマニュアルを活用できるようになることからです。
でないと、どんな言語もフレームワークもツールも無用の長物です。

できれば日本語で

という補足から、なんとしてでもやってやろうという気概が見られませんでした。
多くの公式ドキュメントやマニュアルの原文は英語ですし、「Google翻訳を使ってでも読み進める」くらいの気概はないと厳しいと思いますよ。

日本語訳のものが悪いとは言いませんが、完全ではなかったり(JavaScriptにおけるMDNとか)、ちょっとした微妙なニュアンスまで訳しきれていなかったり、正しい解釈になっていないこともあります。
※もちろんGoogle翻訳を利用した場合でも微妙なニュアンス部分は同じですが

どんなに時間がかかっても良いので、自分で意味を持たせたコードを書いて、考え、また書いて 繰り返すことだと思います。
プログラムは書いた通りにしか動かないので、そのあたりも意識すると、書けるし読めるようになるかもしれません。地道な反復(できれば自身で課題を設けて)が大事だと思います。

熟練者であっても赤の他人にコードを完全に理解するのって難しいですよ。
リファクタリングやシステム改修で対応するのは大抵他人のコードです。
「どういう意図で書かれたか」までくみ取るのは困難です。
設計も確認しつつ、使われている機能(あくまで言語の標準機能)をドキュメントで確認しがどういう役割を担っているのか考え、精査整理していきます。

そういった意味で「読解力を鍛える」ために、実際に回答しないまでも、回答するつもりでteratailに日々大量に投稿される質問を読んでみては如何でしょうか。
コードだけでなく、どのような問題が発生していて、どういう解決方法が考えられて、そのために何が質問として足りていないかを見ていくのも、読解力や総合力を鍛えるのに役立ちます。

投稿2020/06/22 21:14

m.ts10806

総合スコア80875

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

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

Jishuku

2020/06/23 02:19

ご回答ありがとうございます。 今後他人のコードを解読する機会もありえるため、総合的な読解力は確かに養うべき大事な能力であると思います。 ご指摘の「気概のなさ」はまさにその通りであると思いました。使い方が分からなかったり読解力として英語力が無いのも、結局は気概があれば克服できなくはない問題でした。 ご提案頂いた読解力を鍛える方法、是非参考にさせていただきます。
BluOxy

2020/06/23 05:07 編集

作業の効率化を主目的としてツールを使うことはどんどん推奨したいですが、能力不足を補うことを主目的にツールを使うことはやめた方が良いと思います。 Sourcetrailは恐らく、よほど設計・論理が複雑になった(ほぼスパゲッティな)プログラムに対して何とかユーザーが読めるよう工夫(解析)をしてくれるツールだと思うので、そういう目的でしか効果を成さないと思います。(そして、構文単体についてSourcetrailはJishukuさんを何もサポートしてくれないはず)
guest

0

質問の意図はわかるんですが気になったので。直接の回答ではないです、

文法的意味(この単語は関数なのかメソッドなのかコンストラクタなのか等)が自信をもって判別できないことがあります。

Pythonの文法には名前という概念があるだけで、それが関数なのかメソッドなのかクラス初期化子なのかの区別は文法上にはありません(というかメソッドはインスタンスに束縛された関数でしかないですし)。実行モデル上は変数という概念もPythonにはありません。

「文法的意味」があると思っている時点で、どこかでなにかを誤って学習しています。

名前を束縛しているオブジェクトがなんなのか? は実行時に何が名前を束縛するかで決まり、その名前を束縛している部分を見に行かない限りわかりません。

IDEには名前を束縛している場所にジャンプする機能や、Docstringに書いてある情報を展開してくれる機能がありますが、"文法を解析している"というものではないです("それだけでは済まない"という意味で)。

質問に書いてあるあなたが知りたいことは、最終的には"実行されるコードを読む"あるいは"実行して確認する"あるいは"ドキュメントを読む"以外にはたどり着けないものです。
IDEやエディタが代わりにやってくれる部分もありますが、それは補助だと思う方がいいかと思います。


もっと言うなら、関数なのかメソッドなのかクラス初期化子なのか、なんてことはコードの意味を理解するという点では、わりとどうでもいい話です。

例えば、標準関数の中でrangereversedmapsuperは関数ではなくてクラスとして提供されています。
あなたはそれに気づいていましたか?
あなたにとってそれらが関数なのかクラスなのかを判別することが、なにかの役に立ちますか?

投稿2020/06/22 23:55

編集2020/06/23 00:11
quickquip

総合スコア11235

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

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

Jishuku

2020/06/23 03:04

ご回答ありがとうございます。 私のレベルだとPythonのシステムのところの理論を理解することができなかったのですが、IDEで文法の解析はできないというご意見を理解しました。 また、私は"ドキュメントを読む"という作業を疎かにしていたので、ステップアップのため必要不可欠なものとして以後改めます。
quickquip

2020/06/23 04:03

IDEは文法の解析以上のことをしますよ。 定義箇所に飛ぶ、型ヒントや説明が付いていればそれを表示する、などができます。
guest

0

エディタにこだわりがなければPyCharmのような統合開発環境を使ってみるのはどうでしょうか。(Community Editionなら無料で使うことができます)

投稿2020/06/22 14:39

kuuote

総合スコア705

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

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

Jishuku

2020/06/22 15:07

ご回答ありがとうございます。 このソフトは耳にしたことがありましたが解析機能もあるのは知りませんでしたので、試しに使ってみようと思います。(エディタはこだわりはありません)
Jishuku

2020/06/23 03:13

こちら使ってみた(Windows32ビット版で最新の2018.3.6)のですが、目的の機能が見つけられなかったのですが分かりますでしょうか? (IDE自体にそのような機能はないというご指摘もあるので別の補助的機能でしょうか?)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問