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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Q&A

解決済

3回答

2697閲覧

開発環境と仕様書をつなぐ、アイデア募集

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

5クリップ

投稿2015/11/26 11:39

いつもお世話になります。
Visual Studio 2010/2013 Expressを使って開発しています。
以前に、登録したら、質問できなくなったようなバグがあり、ずっとゲストで質問してました。
ゲストだと、せっかくご回答をいただいてもお礼もいえず、とても心苦しく思ってましたが、今日久々に登録してみたら、うまく登録できたようなので、これからは固定ハンドルで、よろしくお願いします。
ちなみに、2015年12月10日の集まっtailにも参加しようと思っているので、ぜひよろしくです。
固定ハンドルではないですが、おおむねC#のタグつきでゲストユーザーというかたちで特定できますね。

今回は、雑談的なアイデア募集です。
最近、Excel/PDFで仕様書をいただくことが多く、そのあまりの操作性の悪さ(スクロールとか、ページ単位で扱えないとか、コピーペーストして文字だけをうまく編集できないとか、画面からはみ出すほどのサイズとか、画面サイズにすると見えないくらいの小さい文字とか)に辟易しています。

Visual Studioから、Excel/PDFで何ページにもわたった仕様書から該当部分をダイレクトに呼び出して見ることができたら、どれほど効率的に開発できるだろうかと夢想したのですが、せいぜいフルパスを//でコメント行に書いておいて、コピー&ペーストして起動するくらいしかないでしょうか。

なにか開発環境と仕様書をつなぐ、よいアイデアをおもちの方がいらっしゃったら、ぜひお聞かせください。

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

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

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

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

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

guest

回答3

0

実際に試した事は無いですし、ドキュメント全体の体系や、個々のドキュメント内部の体裁に強く依存しているので、利便性が向上する保証も無いですが・・・

雑談的なアイデア募集

とのことなので、ほんの思い付きを回答してみます。

非常に古い情報で恐縮ですが、下記ページの解説のようにExcelをWeb公開する事が可能です。
対話機能を利用してExcelファイルをWeb公開する

そして、ExcelのWeb化は、VBScriptやPowerShellで ちょっとした ツールを作成しておけば、受領した設計書を所定のフォルダに放り込むと自動的に実施可能です。もしドキュメント類もSubversionやGitなどのバージョン管理ツールで管理しているとすれば、ワークスペースを最新化すると同時に更新されたドキュメントをWeb化するといった仕組みも実現可能だと思います。

PDFの場合は更に簡単にWeb公開可能です。

それで、ソース側のコメント部分に、設計書の見出しや項目番号など、記載場所を特定できるような情報を記載しておけば、Webページ内の検索で該当箇所にたどり着けるのではないかと思います。
また、たとえばドキュメントがSubversionでバージョン管理されているなら、たった一つのリビジョン番号で、ドキュメント体系全体のベースライン(基準となる断面)を管理可能なので、その番号をソースの先頭に記載しておけば、設計書のどのバージョンのどの部分がソースの各部分に対応しているかを紐付けることも出来るかもしれません。

ほんの思いつきですが、ご参考まで。

投稿2015/11/26 15:31

pi-chan

総合スコア5936

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

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

退会済みユーザー

退会済みユーザー

2015/11/27 00:20

ありがとうございます。 雑談なので思いつき歓迎です。 Web試してみます。
退会済みユーザー

退会済みユーザー

2015/11/27 00:28

試しました。 ExcelのBookの場合、タブが変わっても同じURLというところは、やや不便ですが、xlsファイルを見るよりは、ずっと手軽でいい感じです。 これはよさそうです。
guest

0

ベストアンサー

URLスキーマの拡張で提案をしているところを恐縮なのですが、、
VISUAL STUDIO の EXPRESS EDITION にも「ツール」→「外部ツール」の項目があるようでしたら、こちらを利用するほうが楽に実現できそうです。なかったらごめんなさい。。
下記画像の例のように登録すると、
(「カレントテキスト」($(CurText))を指定すると、コードウインドウで範囲選択中の文字列が渡されます)
「ツール」メニューのなかに SAMPLE と書かれたメニュー項目が増えていると思います。これを選択すると、メモ帳が開くと思います。さらに、コード中の文字列、たとえば class を範囲選択した状態でこのメニュー項目を選択すると メモ帳アプリから

ファイル class.txt が見つかりません。
新しく作成しますか?

と訊かれ、引数として class が渡されていることが推測できます。

さらにこのメニュー項目を、「ツール」→「カスタマイズ」→「コマンド」→「コンテキストメニュー」に割り当てれば、テキストを選択して、右クリックのメニューから該当コマンドを呼び出せるようになります。
自前のexeコマンドやスクリプトを呼び出してもよいでしょうし、引数をやりくりして直接adobe readerなどを呼び出しもできそうです(が、ふさわしいコンテキストメニューの場所を見つけられていないです...)

イメージ説明

イメージ説明

投稿2015/11/27 05:36

編集2015/11/27 05:45
hsk

総合スコア728

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

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

退会済みユーザー

退会済みユーザー

2015/11/27 05:42

おー。 雑談で試行錯誤なので、全然お気になさらず。 そうですか。Visual Studio Expressでも外部ツールを使えるのですね。 早速試してみます。
退会済みユーザー

退会済みユーザー

2015/11/27 06:30

ツールー外部ツールを設定するところはできました。 カスタマイズでcontext menuにするところで苦戦中。
退会済みユーザー

退会済みユーザー

2015/11/27 07:11

カスタマイズ-コンテキストメニューでポップアップする一覧で、エディタコンテキストメニューを選べばよいのかなと思っています。 コマンドの追加で、カテゴリをツール、コマンドを外部コマンド3(3番目だったので)とし、選択したボタンの編集でPDF/Excel起動として閉じてみたのですが、コンテキストメニューには登録できていません。 でも、メニューバーにはあり、先ほど作ったツールで起動できてます。 かなりご機嫌です。
hsk

2015/11/27 07:40 編集

うまくいってらっしゃるようですね。 カスタマイズ-コンテキストメニューでの登録箇所は、"エディタコンテキストメニュー|コードウインドウ" でいけるようです。 あらかじめ、外部ツールでコマンドを登録しておき... (例) タイトル "GOOGLE検索" コマンド "C:\Program Files\Internet Explorer\iexplore.exe" 引数 "https://www.google.co.jp/?q=$(CurText)" カスタマイズ-コンテキストメニューで、[ツール]の[外部コマンド1]~[外部コマンドn] のどれか(私の場合、外部コマンド6行目に先のコマンドを登録したので、外部コマンド6)を追加しました。 すると、コードウインドウ上で任意の英数文字列を範囲選択して右クリックすると、コンテキストメニューのひとつに"GOOGLE検索"が現れ、選択すると範囲選択した内容をGOOGLE検索してくれる(正確にはgoogle検索の一歩手前...)ようになりました。 オリジナルコマンドに任意の文字列を渡せれば、いかようにも出来そうですね。
退会済みユーザー

退会済みユーザー

2015/11/30 02:54

VisualStudioのできがよいことは感じていたのですが、ほんとうにこれはいいですね。 楽するためにかける手間と工夫は、惜しくないです。
guest

0

本当に雑談レベルで申し訳ないです。。
次のような構成をちょっと考えつきました。
スクリプトを組む手間をかけねばなりませんので結果的に効率的になるかどうかわかりません。(EXPRESS EDITION でなければ、拡張機能を用いるほうがずっと高機能なものが出来そうですが)時間ができたらちょっと作ってみようかな...
####なんちゃってgopherプロトコル
0.Windows の URLスキームのハンドラうち gopher プロトコルを拝借してスクリプトまたは実行ファイルを呼び出す。
0.スクリプトまたは実行ファイルはURLを正規表現などで解釈し、PDF該当ページ(またはアンカーのある場所)やEXCELシートを開く。

VSのコード上のコメントに file://... gopher://... http://... https://... ftp://... などと記載すると、CTRLキーを押しながらクリックするだけで開くので(独自URLスキームは残念ながらだめでした)、使われていないであろう gopherプロトコルを拝借します。
http://fernweh.jp/b/windows-de-urlscheme/
http://garafu.blogspot.jp/2014/02/url.html

Adobe Reader では、開く位置のページ指定や名前?(a named destination)指定ができるようなので引数で指定します。
http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf

EXCELの場合は、スクリプトまたは実行ファイルからOCX経由で操作して、目的のシート上のセルへ移動して表示します。

gopher://PROJ12120/ABSTRACT.PDF?P=15
gopher://PROJ12120/DATABASE.XLSX?S=ERD&F=T_PERSON

みたいにコメントに記載して、スクリプトは上記URLを正規表現で内容分解して、acrord32.exeを呼び出したり、excel ocxを操作したりします。

####スクリプトのあるローカルのhtmlファイルを呼び出す
ローカルにURLを解釈してビューアなどを開くスクリプトを記載したhtmlファイルを置き、コメント行に file://path/script.html?N=PROJ12120&D=ST.XLSX&S=TANTO1&F=MAINPGM などと記載して、EXCELないしPDFのビューアを操作します。URLは、document.location から得られると思います。
http://www.ipentec.com/document/document.aspx?page=javascript-get-parameter

URLのパラメータは、もっと可読的な記述方法にしたほうがよいかもしれません。

投稿2015/11/27 01:39

編集2015/11/27 01:49
hsk

総合スコア728

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

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

退会済みユーザー

退会済みユーザー

2015/11/27 02:16

ctrl+clickで起動できるのは知っていましたが、それをスクリプトで処理するのはありですね。とてもおもしろそうです。 スクリプトを実行するexeはどこに置けばよいのでしょう? このくらいのexeなら、10分くらいでできますね。 argsを取得して、splitして、 Process.Start(excel, args); でokですもんね。 これはいいな。
退会済みユーザー

退会済みユーザー

2015/11/27 02:18

あーhtmlでスクリプト処理しないとだめなのでしょうか。 それはちょっとわたしには厳しいな。C#しか使えないので。。。
hsk

2015/11/27 03:00 編集

そうですね、gopher拝借方式でしたら、実行権限があるパスならば (開発した)exeファイルをどこにおいても(Program Filesのサブフォルダでも、デスクトップ上でも)良いでしょう。レジストリに、そのパスを含めて書けばOKです。 http://garafu.blogspot.jp/2014/02/url.html [余談] file:// で直接exeを開けるか?? file://c:/windows/notepad.exe と記載して、メモ帳が開くところまでは確認したのですが、file://c:/windows/notepad.exe%20args のように引数を指定すると、残念ながら "notepad.exe args"というファイルを探しにいってしまってだめでした。
hsk

2015/11/27 02:59 編集

gopherスキームのレジストリにメモ帳(c:\windows\notepad.exe)を指定して、VSのコメント上から起動できることを確認しました。レジストリ commandキーの既定値へ c:\windows\notepad.exe %1 と指定したところ、gopher://sample/sample/ と呼び出した場合、メモ帳へ渡されるコマンドライン引数に"gopher://sample/sample/"がそのまま入ることも確認できました。 gopherプロトコルは、もともと検索のためのプロトコルとして用意されていましたが、httpプロトコルに押されて廃れました。「仕様書の検索」ということで、私的に再び陽の目に浴びさせてあげるのも良いかも...
退会済みユーザー

退会済みユーザー

2015/11/27 04:42

Regeditで、 [HKEY_CURRENT_USER\Software\Classes\gopher] @="URL:gopher Protocol" "URL Protocol"="" [HKEY_CURRENT_USER\Software\Classes\gopher\DefaultIcon] [HKEY_CURRENT_USER\Software\Classes\gopher\shell] [HKEY_CURRENT_USER\Software\Classes\gopher\shell\open] [HKEY_CURRENT_USER\Software\Classes\gopher\shell\open\command] @="\"C:\\test\\VisualStudio2pdfxls.exe" %1 としてみて、ソフトを作り、 namespace VisualStudio2pdfxls { public partial class Form1 : Form { string[] args = Environment.GetCommandLineArgs(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string path = string.Join(" ", args, 1, args.Length - 1); Process.Start(path); MessageBox.Show(path); } } } としてみました。 で、VisualStudioのソースに //gopher://C:\test\testsample.pdf としてみたのですが、そもそもVisualStudioでここで「controlキーを押しながら」みたいなポップアップがでないですね。。。 なんか手順を間違えてるかな。
hsk

2015/11/27 05:15 編集

早速トライされましたね。仕様次第で、使い勝手のよいソリューションを構築できそうですね。 //gopher://C:\test\testsample.pdf は //gopher://C:/test/testsample.pdf とする必要があります。URLに \ は無理だったかと(するなら%5C)。 --- とりあえず、まず次のような中身の.regファイルで登録をしてみて、コマンドプロンプトから start gopher://sample と打ち込んだところ、メモ帳は無事開きました。 --------- Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Classes\gopher] "URL Protocol"="" @="SAMPLE" [HKEY_CURRENT_USER\Software\Classes\gopher\shell] [HKEY_CURRENT_USER\Software\Classes\gopher\shell\open] [HKEY_CURRENT_USER\Software\Classes\gopher\shell\open\command] @="c:\\windows\\notepad.exe" --------- 適当なcsファイルに /// <summary> /// こめんと /// </summary> /// gopher://sample/ public class SampleClass { ... と書いたコードの gohper://...部分は、青くアンカーとして認識され、マウスオーバーさせると gopher://sample/ Ctrl キーを押しながらクリックしてリンク先を表示します と表示され、メッセージどおりに操作すると、メモ帳が表示されました。 (teratail のコメント欄には、画像がアップロードできないのですね..)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問