スマホアプリ開発の敷居が随分低くなってきたようなので、チャレンジして見ることに。
ストアで公開するには色々お金もかかりそうですが、それはそれとして動くものができるかどうか、ボケ防止かねて試してみようと思います。
Monacaに登録しようとしたら何も悪い入力していないのにCSRF attack detectedという恐ろしいエラーが出ます。

原因検索して、Chrome入れました。
HTML5を使ったアプリを開発しようという人間がIEをデフォルトにしているとは想定外なんでしょうね(^^;)。
メールアドレスとパスワードだけで登録完了。
しばらく無料のベーシックプランで遊んでみようと思います。
プロジェクトを親子関係にして、親でナビゲーションを含むサイトデザイン、認証等、基盤となる仕事。
子プロジェクトは機能単位に分割。それぞれ他のプロジェクトをビルドすることなく追加、削除可能。

例えば赤枠の部分をそれぞれ別のDLLに切り離したい。ブログ追加するためにサイト丸ごとビルドし直したくない。
PHPなどスクリプト系の言語では当たり前の構造ですが、ASP.NETそれもWebFormでそれをやるとなると?
- 親プロジェクトを通常のWebFormアプリとして作成。Web.sitemapを追加しておく。
- 親プロジェクトの直下に子プロジェクト用のフォルダ作成。子供の数が多くなりそうな場合は専用のフォルダ(Modulesにしました)作成。
- ソリューションと一旦閉じてModulesの中に子プロジェクトを作成。ソリューション用のディレクトリは作成しない。テンプレートは空のWebサイト。作成したら一旦ソリューションを閉じる。
- 親ソリューションを開く。既存のプロジェクトの追加で、上で作成した子プロジェクトを選択。
- 子にSite.Masterを追加。ContentPlaceHolderのIDを親プロジェクトのIDと合わせる。例では親にデフォルトのWeb Formsサイトを使ったので、「MainContent」一つに。デザインはどうでも良い(実行時には親プロジェクトのSite.Masterが適用される)。
- 子にSite.Masterを使ったWebFormを追加。最終的なプロジェクトの構成は下記のような感じ。

- 子プロジェクトのビルドの出力先を、親プロジェクトのbinフォルダに設定変更後、子プロジェクトをビルド

- 親プロジェクトのサイトマップに子プロジェクトのメニューを追加。親プロジェクトを実行。

- 子プロジェクトのページもちゃんと親プロジェクトのヘッダとフッタがついて表示されます

- お買い得品のページに認証かけてみたら、ちゃんとログイン画面へはじかれました。

年齢的にはVB6を知っていてもおかしくない年齢ですが、N88-BASICやF-BASICの後、自宅でメモ帳とブラウザさえあればプログラミングができるJava(アプレット)とJavaScriptへ移り、プロバイダのサーバーでPerlを使ってしばらく遊び、その後仕事としてプログラムにかかわるようになったのは.Net(VS2003)になってからなので、VB6は通っていない。
依頼はプログラムから送信しているメールの署名を変えてくれ、という簡単なものですが、メールの内容をプログラムで組み立てるのがメインのお仕事、というプログラムなので、署名もがっつりコードの中。
どうしたものかと調査した結果です。
結論からいうと、仕様が分かっているなら慣れたC#で一から書いた方が後々のため。
書き直すにしろ、プログラムの動作を確認するには開発環境があるのとないのでは大違い。
MSDNで64Bit版を探したのですが、無い(当然か)。
Windows10に入れることはできるが、アンインストーラが対応していなので、削除は困難という情報もあり。
PCを汚したくないのでいったん諦める。
確か昔、Visual Studioが自動でアップグレードしてくれたはず、と思い調べたら、VS2008まで付いていたアップグレードウイザードがVS2010以降は消えたようで、必要ならVS2008を入れろ、と。
ダウンロードのリンクが切れているので、MSDNからVS2008を落として入れたところ、入ることは入りましたが、変換ウイザードを走らせると、VB6関連のDLLが見つからない、VB6の開発環境を入れろ、というエラー。結局そこへ舞い戻るのか、と言う感じ。
MSDNサブスクリプションのライセンスあれば、1万行まで無料で変換してくれるというので登録してみました。
ライセンスの問い合わせやっているのか、登録してもしばらくメールが来ませんでした。
30分以上待たされた気がします。
使ってみた結果は、最初スゲー!と思いました。
ほとんど修正無く(ちょっとエラーが出ましたが、直ぐ修正できるエラーでした)、見た目もそのまま動きました。
しかもデフォルトのまま変換したら、VS2015のC#になってるし(バージョンと言語は最初に選択できたもよう)。
ところが、いざ公開という段になってDLLが大量に追加されていることに気づきました。
元のプログラムは、exeと同じ場所にiniファイル(bcc先等設定)とデータの入ったcsvファイルを置いて実行する形になっていたのですが、同じフォルダにdllが10個以上追加されたら、紛らわしくてしかたありません。フォルダ丸ごとxcopyから配布方法を変えようとすると、やはりクリックワンス?ということで発行したら、exeやiniファイルの場所どこよ?csvはどこにおけば?ということになり、iniファイルはApp.Configへ、csvフォルダも参照してユーザー設定保存できるように変更。
いじり出すとメール送信はわざわざ外部のDLL使う必要ないよね、で書き直し。
SOAPのDLLもWeb参照に切り替え、で結構書き直しました。
他人の書いた、しかも慣れた言語ならまだしもVB6のコード(いきなりDim strHoge As String * 8みたいなのが並んでいて目が点になりました。なんでStringに数字を掛けるわけ??とか)を読み一から書くよりは短時間かつ間違いなく書き換えられたとは思いますが、ソリューションに一つだけだったプロジェクトが12個になっているのはう~んちょっとと言う感じ。
出来るだけソースコードを書き換えなくても大丈夫なように、補間のライブラリを作成するというのは自動変換の考え方としては正しいのでしょうが、求めていたのとはちょっと違う気がしました。無理なものを求めている気がしますが…。
フォームの作成は結構面倒。コントロールに名前をつけるのも時間がかかったりする。
頑張って作っても、前の方が使い易かった、とか言われる。
できればこれだけでも流用したい、と思ったらVS2008の変換ウイザードが動く環境を作るか、いっそのことXAMLに変換する?
OK
キャンセル
確認
その他