• ベストアンサー

C++ 図からソースコード自動生成

図からソースコードを自動生成するソフトがいっぱいありますが、これは内部でいったいどのような仕組みになっているのでしょうか? 内部の詳細を詳しく知りたく投稿させていただきました。 試しに、C++とjavaのクラスの定義(1クラスのみ)を図から行えるようなプログラムの作成を試みております。 以下2点で悩んでおります。 (1)2つの言語に対応するため中間言語を作る必要はあるのか? (2)図からコードを作る部分の開発が全く進みません。 似たプログラムの解説をしているサイトや本や公開されているソースコード、アドバイスありましたらご教授くださいませ。

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

まず、どんな形式でも構いませんが、図を保存するためのデータ構造を決める必要があります。そのデータ構造を中間言語と呼べなくもありません。そして、そのデータ構造は、実際の出力コードに変換しやすいものに設計しておくべきです。 C++とJavaでは、一口にクラスといっても仕様が大幅に異なります。C++のクラステンプレートやメンバテンプレートはJavaではほとんどが使えませんし、逆にJavaのfinalをC++で表現するのは、なかなか骨が折れます。ライブラリの違いをどうするかの問題もあります。 こうした部分をどうするのか、予め方針を決めておく必要があります。考えられる選択肢としては、 1. C++とJavaの両方に共通の仕様のみ記述可能にする。 2. 両方の言語の仕様を記述できるようにしておき、コード生成時に対応できない場合はエラーにする。 3. 予めユーザーに使用言語を選択させ、その言語の範囲で記述可能にする。 といったところでしょうか。

hourensou2003
質問者

お礼

早速のレスありがとうございます。 アドバイス通り、言語に共通な部分と言語オリジナル部分をきちんと分けて生成したいと思います。 1クラスの自動生成だけでも思っていたより難しそうですね。がんばってみます。^^;

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

「図からソースコードを生成する」のではなく、「ソースコードから図を作成する」ことも考えて見ましょう。 図はあくまでもデータを可視化したもの。データ構造をまず決めない事にはスタートできません。今回の場合そこが一番難しいところだと思います。言語仕様のうち可視化できる部分を抜き出す作業をしなくてはなりません。それが結果的にUML図で表現できれば正解です。 Java なら先ず「リフレクション」を調べてみてください。リフレクションでUML表現できる情報をソースコードから取得して可視化してみてください。そしたら何をすべきかが見えてくると思います。 リフレクションで取得した情報をデータ構造として表現すればあとは難しくはないと思います。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

クラスの生成だけなら「原理的には」簡単です。 というのも、普通は、クラス図から C++ なり、Java なりのクラスのテンプレートを生成することだけを目的としているからです。 だから、この点では、「ソースコードの生成」ではなくて、「クラステンプレートの生成」だと考えた方が良いと思います。 ※さらに、シーケンス図からソースコード生成したりするともっと大変ですけど。 さて、この場合、「図」を出発点にするのではなく、 ・クラスがある ・そのクラスの中には、属性と操作がある  操作には……  名前・返却値の型・引数(の型) etc. がある。  属性には……  名前・型 etc. がある。 というのを、例えば、XML で表します。 これをスタートにした方が良いと思います。 これをスタートにして、「図」である UML に展開する これをスタートにして、「ソースコード」に展開する ですから、既にある図を読み込んで、そこからソースコードにするのは、非常に大変です。 逆に、図を書く際に、普通のお絵かきソフトとは違って、内部的に、XML かなにかの、構造を保ちながら、図を書くようにします。 例えば、「属性と操作の間にある線を引く」ではなくて、「属性を追加する」→「他の属性や、操作があるかどうかを確認して、必要に応じて区切り線を表示する」 というアプローチになると思います。 いずれにしても、正味「図からソースコードを生成する」のは、大変です。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

UML からソースコードを生成するようなソフトをイメージしていらっしゃるのかなと思いますが。 この場合、「図」とは言っても、UML 自体が構造的に定義されています。なので、UML からのコードジェネレータだったら、とりあえず、原理は簡単です。 (実際に作るのが簡単とは言いませんが) ですから、この図形の構造自体を、中間言語として(最近は、XML で記述するのがはやり)持っておくようです。 このようなものをイメージされているのでしたら、UML の仕組みの方に当たってみてください。「原理的」には簡単です。

hourensou2003
質問者

お礼

レスありがとうございます。 ずばり、大目的はUMLからソースコードを自動生成できるようなプログラムの組み方を学ぶことです。 ですが、技術力不足で1クラスのソースコードを自動生成することさえできません。ネットには、ソフト自体はフリーであるので、動きを確認することはできるのですが・・・。 もしよろしければ、1クラスのソースコード自動生成プログラムのヒント頂ければ、幸いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • eclipseの自動コード生成について

    お世話になります。 eclipseツールバーにある ウインドウ→設定→Java→コード生成の コードとコメントというタブについて 例えば新規Javaファイルを選んだ際に日本語化されたEclipseのデフォルトでは /* * 作成日: ${date} * * この生成されたコメントの挿入されるテンプレートを変更するため * ウィンドウ > 設定 > Java > コード生成 > コードとコメント */ ${package_declaration} ${typecomment} ${type_declaration} というようになります。 この${○○}というところはどのように編集したらよいでしょうか? 例えば${date}を自分で日付のフォーマットを変えたいときなどはどうしたらよいでしょうか? もしくは新しく自分で変数(${abc})などと定義できるのでしょうか? ざっと全部のメニューをみたのですが、 自分のやりたいことの情報が得られませんでした。 ご存知の方がいらっしゃいましたら宜しくお願い致します。

    • ベストアンサー
    • Java
  • javaのソースコードからUMLを自動生成してくれるソフト

    システム開発を新しく手伝ってくれる人にソースコードを説明する際にUMLで説明をしようと考えています。 しかし今のシステムをUMLで書くのはめんどくさいので、javaのソースコードからUMLを自動生成してくれるソフトがあればいいなぁと思っています。 ご存知の人がいれば教えてください。

  • UMLからソースを自動生成するソフト知りませんでしょうか?

    フローチャートからソースを自動生成してくれるソフトはどのようにしたら作れるのか、いろいろ悩んでおります。 いろいろ調べた結果、「dia2code」というソフトは発見できたのですが、どうもLinux環境でないとソースを見れないし、いまいちよくわかりません。 もし、これに似たソフト(ソースコードが公開されてるとありがたいです。^^;)をご存知でしたら、紹介してください。どうぞ、よろしくお願い致します。

  • C言語のソースコードの書き方

    C言語のソースコードの書き方に関する質問です。 0を5個と1を4個の、合わせて9個の数字を並べて出来上がる数列のパターン(126通り)を全て羅列させるプログラムを作りたいと考えていますが、そのためにどういった方針を立ててソースコードを書けばよいかが分かりません。 どういった構造かだけでも構いませんので、教えて頂けると幸いです。 よろしくお願いします。

  • QRコード生成プログラム

    題名の通り、QRコード生成プログラム(C言語)を探しています。 できれば、文字列を入力するとQRコードの配列(黒は1、白は0のように表現)を生成するところまでのが欲しいです。 個人で作るのはなかなか難しいのでWebで見つけようとしましたが、Windowsで動くものしか手に入れられませんでした。 linuxで動くソースを持っている方、もしくはlinuxで動くソースが掲載されているページのURLをご存知の方は、どうか教えて頂きますよう宜しくお願い致します。

  • 参考にすると良いオープンソースのコードを探しています

    独学でPHPを学び、入門書やサンプルから簡単なプログラムを書いたり、既存プログラムの修正を行えるようになりました。しかし以前一度自分で作ったプログラムをインターネットで公開したら、こんな素人のどうしようもないコードは出すなと非難轟々のメールが届きました。実開発でも使えるアプリが書けるレベルになるには、この先どんなコードを参考に書いていけばよいのか困っています。 作ったプログラムをオープンソースとして公開しても恥ずかしくないようになりたいのですが、セキュリティにも問題なく、参考にすると良いオープンソースのプログラムでお薦めのものはないでしょうか?

    • ベストアンサー
    • PHP
  • C++ソースからクラス関係を生成するツール(無料版)

    C++ソースを解析して、クラス図を生成できる無料ツールはありますか。 クラス図とまではいかなくても、例えば、ツリー図のようなものでも かまいません。 要は、クラスの関係を一目で把握できるデータを自動で生成するツールが 無料で入手できないか、と思っています。 よろしくお願いします。

  • 麻雀ソフトのソースコード

    こんにちは。 現在、麻雀ゲームの開発を目標にして C言語の学習に励んでいます。 そこで、参考となるソースコードを探しているのですが、 全アルゴリズムを公開しているサイトは無いのでしょうか? 一部を公開しているサイトは見つけたのですが、 中々求めているものが見つかりません。 贅沢な相談ですが、よろしくお願いします。

  • c言語やjavaのソースを読みたいのですが

    c言語やjavaのソースを読みたいのですが ゲームやアプリのプログラムを公開しているサイトを御存知でしたら 教えてください。言語の開発環境は、VC++・vc#・Eclipse・visualBasic(2005)です。

  • Cのソースコード集について

    ファイル1個分くらいの小さいC言語のプログラムのソースコードが 沢山のっているサイトがあるのですが、知っている方がいたら教えてください。 確か海外のサイトで、いろんな人が自由にソースを投稿できたような気がします。 SourceForgeの小さい版みたいな感じで、Linuxなどのソースも扱っていました。載っているソースには自作PingやExploit系などがあったと思います 自分は今Cを勉強していて、上達するために他人のソースを読もうと思ったのですが、Linuxカーネルは難しすぎますしGNUの周辺のユーティリティ系も沢山のファイルに分割されていて自分には難しかったので以前にみたそのサイトのコードで勉強しようと思ったのですが どうやって行ったか忘れてしまいました。 なので勉強のために規模の小さいソースプログラムが必要なので 類似サイトなどでも何でもいいので情報をお持ちの方は教えてください。

このQ&Aのポイント
  • g3310のスキャンアプリの場所はどこでしょうか?
  • g3310のスキャンアプリはどの場所にありますか?
  • g3310のスキャンアプリはどこで見つけることができますか?
回答を見る

専門家に質問してみよう