« 2013年9月 | トップページ | 2015年2月 »

2015年1月

2015年1月31日 (土)

VisualBasic VBでExcelのシート取り込み,読み込み

VisualBasicでExcelシートのデータを取り込みたいのですがネットを探しても自分が欲しいピンポイントのクラス,コードが見つからなかったため自作しました。自分用のマニアックな機能になっていますが参考になればと思いアップしました。

自作のクラスは下記のような機能があります。
シート番号またはシート名を指定して1つのシートから下記の3種の方法でデータを取り込み出来ます。
・全列,全行を取り込み
・列番号を指定して全行を取り込み
・列名を指定して全行を取り込み ※列名は1行目であること

バグがあるかも知れませんし思い通りの取り込みが出来ないかも知れません。自己責任でお願いします。

自作にあたり
VB.NETからExcelファイルのデータを読み込むには
の記事を参考にさせて頂きました。開いたExcelオブジェクトをチリも残さず「開放」させる手順を詳しく解説して頂いており大変参考になりました。

下手の横好きでプログラミングしており我流が染み付いています。バグ,見苦しい,助長,意味不明なコードとかあると思いますので遠慮せず指摘して頂ければ勉強になります。

参照設定のCOMから「Microsoft Excel XX.X Object Library」を選択。
-------------------------------------------------------------------
Imports System.IO
Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop

Public Class ExcelImport

''' <summary>
''' 読み込むExcelファイルのフォルダー名,末尾「\」,例 D:\Data\
''' </summary>
''' <value>フォルダー名</value>
''' <returns>フォルダー名</returns>
''' <remarks></remarks>
Public Property excelFolderName() As String
''' <summary>
''' 読み込むExcelファイル名,例 ABCDEF.xls
''' </summary>
''' <value>Excelファイル名</value>
''' <returns>Excelファイル名</returns>
''' <remarks></remarks>
Public Property excelFileName() As String
''' <summary>
''' エラーNo,0=OK,1=NG
''' </summary>
''' <value>数値</value>
''' <returns>数値</returns>
''' <remarks></remarks>
Public Property errNo() As Integer
''' <summary>
''' エラー内容
''' </summary>
''' <value>文字列</value>
''' <returns>文字列</returns>
''' <remarks></remarks>
Public Property errMes() As String

Public Sub New()
_excelFolderName = "D:\Data\"
_excelFileName = "ABCDEF.xls"
_errNo = 0
_errMes = ""
End Sub

''' <summary>
''' Excelファイルから取り込み
''' </summary>
''' <param name="sheetSelect">
''' 0=シート名指定,1以上の数値はシート番号</param>
''' <param name="sheetName">読み込むシート名</param>
''' <param name="colSelect">
''' 0=全列読み込み,1=列番号指定,2=列名指定</param>
''' <param name="colName">1次元のString配列,列番号or列名</param>
''' <returns>2次元のオブジェクト配列</returns>
''' <remarks>列名はシートの1行目に記載されていることが条件</remarks>
Public Function excelImport(sheetSelect As Integer, _
                sheetName As String, _
                colSelect As Integer, _
                colName() As String) _
                      As Object(,)

Dim excelApp As Excel.Application = Nothing
Dim wkbk As Excel.Workbook = Nothing
Dim wkbks As Excel.Workbooks = Nothing
Dim sheets As Excel.Sheets = Nothing
Dim wksheet As Excel.Worksheet = Nothing
Dim crRange As Excel.Range = Nothing
Dim crMax As Excel.Range = Nothing
Dim colMax As Integer
Dim rowMax As Integer
Dim colNo As Integer
Dim rowNo As Integer
Dim dummyStr As String

excelImport = Nothing

Try
dummyStr = excelFolderName.Substring(excelFolderName.Length - 1, 1)
If dummyStr <> "\" Then
excelFolderName = excelFolderName & "\"
End If

If sheetSelect = 0 Then
If sheetName = Nothing OrElse sheetName = "" Then
Throw New Exception("シート名が指定されていない")
End If
End If

If colSelect > 2 Then
Throw New Exception("列選択番号が不適切" & vbCrLf & _
                    "2以下のところ" & colSelect)
End If

If colSelect = 1 Then
If colName Is Nothing OrElse Not IsNumeric(colName(0)) Then
Throw New Exception("指定列番号が不適切" & vbCrLf & _
                    "配列の中身無し or 最初が数値では無い")
End If
End If

If colSelect = 2 Then
If colName Is Nothing OrElse colName(0) = "" Then
Throw New Exception("指定列名が不適切" & vbCrLf & _
                    "配列の中身無し or 最初が空")
End If
End If

If Not File.Exists(excelFolderName & excelFileName) Then
Throw New Exception("Excelファイルが存在しない " & vbCrLf & _
excelFolderName & excelFileName)
End If

'Excelアプリケーションの開始
excelApp = New Excel.Application
wkbks = excelApp.Workbooks' ← 暗黙的変換を回避
'ファイルオープン
wkbk = excelApp.Workbooks.Open(excelFolderName & excelFileName)
sheets = wkbk.Worksheets

If sheets.Count < sheetSelect Then
Throw New Exception("指定したシート番号がシート数以上" & vbCrLf & _
sheets.Count & " 以下に対し " & sheetSelect)
End If

If sheetSelect = 0 Then
'指定シート名を検索し設定
For Each oSheet In sheets
If sheetName = oSheet.Name Then
wksheet = oSheet
End If
Next
If wksheet Is Nothing Then
Throw New Exception("指定したシート名が見つからない " & sheetName)
End If
Else
'シート番号で設定
wksheet = sheets(sheetSelect)
End If

'列,行の最大値を抽出
crMax=wksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell)
colMax = crMax.Column
rowMax = crMax.Row

If colSelect = 1 Or colSelect = 2 Then
If colName.Length > colMax Then
Throw New Exception("指定列番号数が最大列数以上" & vbCrLf & _
           colMax & " 以下に対し " & colName.Length)
End If
End If

Dim cells = wksheet.Cells
Dim tl = cells
Dim br = cells

'全桁のデータを抽出
If colSelect = 0 Then
tl = cells(1, 1)
br = cells(rowMax, colMax)
crRange = wksheet.Range(tl, br)
excelImport = crRange.Value
End If

'列番号を指定してデータを抽出
If colSelect = 1 Then
Dim dummyData(rowMax, colName.Length - 1) As Object
Dim colNo2 As Integer = -1
For colNo = 0 To colName.Length - 1
If Not IsNumeric(colName(colNo)) Then Continue For
If Integer.Parse(colName(colNo)) = 0 Then Continue For
If Integer.Parse(colName(colNo)) > colMax Then Continue For
colNo2 += 1
For rowNo = 1 To rowMax
tl = cells(rowNo, Integer.Parse(colName(colNo2)))
br = cells(rowNo, Integer.Parse(colName(colNo2)))
dummyData(rowNo - 1, colNo) = wksheet.Range(tl, br).Value
Next
Next
If colNo2 > -1 Then
excelImport = dummyData
Else
Throw New Exception("指定列番号無し")
End If
End If

'列名を指定してデータを抽出
If colSelect = 2 Then
Dim dummyData(rowMax, colName.Length - 1) As Object
Dim colNo2 As Integer = -1
Dim loop1 As Integer
For colNo = 0 To colName.Length - 1
If colName(colNo) = "" Then Continue For
For loop1 = 1 To colMax
tl = cells(1, loop1)
br = cells(1, loop1)
If colName(colNo) = wksheet.Range(tl, br).Value Then
colNo2 += 1
For rowNo = 1 To rowMax
tl = cells(rowNo, loop1)
br = cells(rowNo, loop1)
dummyData(rowNo - 1, colNo2) = wksheet.Range(tl, br).Value
Next
Exit For
End If
Next
Next
If colNo2 > -1 Then
excelImport = dummyData
Else
Throw New Exception("指定列名無し")
End If
End If

Catch ex As Exception
errNo = 1
errMes = ex.Message
Finally
'解放(全ての解放を行うため、FinalReleaseComObjectを利用します)
If Not crRange Is Nothing Then
Marshal.FinalReleaseComObject(crRange)
crRange = Nothing
End If
If Not crMax Is Nothing Then
Marshal.FinalReleaseComObject(crMax)
crMax = Nothing
End If
If Not wksheet Is Nothing Then
Marshal.FinalReleaseComObject(wksheet)
wksheet = Nothing
End If
If Not sheets Is Nothing Then
Marshal.FinalReleaseComObject(sheets)
sheets = Nothing
End If
If Not wkbk Is Nothing Then
'元のExcelファイルは保存せず終了。
wkbk.Close(SaveChanges:=False)
Marshal.FinalReleaseComObject(wkbk)
wkbk = Nothing
End If
If Not wkbks Is Nothing Then
Marshal.FinalReleaseComObject(wkbks)
wkbks = Nothing
End If
If Not excelApp Is Nothing Then
excelApp.Quit()
Marshal.FinalReleaseComObject(excelApp)
excelApp = Nothing
End If
End Try

End Function
End Class
-------------------------------------------------------------------
検証用コード

Private Sub Button1_Click(sender As Object, e As EventArgs) _
                    Handles Button1.Click

Dim colName() As String = Nothing
Dim excelData(,) As Object
Dim errNo As Integer

Dim excelIn As New ExcelImport
excelIn.excelFolderName = "D:\Work\"
excelIn.excelFileName = "TEST.xlsx"
'シート番号を指定し全列,全行を取り込み
excelData = excelIn.excelImport(1, "", 0, colName)
errNo = excelIn.errNo
excelIn = Nothing

excelIn = New ExcelImport
excelIn.excelFolderName = "D:\Work\"
excelIn.excelFileName = "TEST.xlsx"
'シート名を指定し全列,全行を取り込み
excelData = excelIn.excelImport(0, "Sheet1", 0, colName)
errNo &= excelIn.errNo
excelIn = Nothing

excelIn = New ExcelImport
excelIn.excelFolderName = "D:\Work\"
excelIn.excelFileName = "TEST.xlsx"
'列番号を指定して取り込み
colName = {"1", "7", "22"}
excelData = excelIn.excelImport(0, "Sheet1", 1, colName)
errNo &= excelIn.errNo
excelIn = Nothing

excelIn = New ExcelImport
excelIn.excelFolderName = "D:\Work\"
excelIn.excelFileName = "TEST.xlsx"
'列名を指定して取り込み ※列名は1行目であること
colName = {"日付", "時間", "データA", "データB", "合計"}
excelData = excelIn.excelImport(1, "", 2, colName)
errNo &= excelIn.errNo
excelIn = Nothing

If errNo = 0 Then
MessageBox.Show("処理が終了しました。", _
                       "処理終了", _
                       MessageBoxButtons.OK)
Else
MessageBox.Show("エラーNo=" & errNo, _
                       "エラー", _
                       MessageBoxButtons.OK, _
                       MessageBoxIcon.Error)
End If
End Sub

| | コメント (1) | トラックバック (0)

2015年1月28日 (水)

《Windows 10 Technical Preview》インストール

私が初めて「OS(オペレーティングシステム)」を購入したのは,ほとんど覚えていないのですが1990年にNECのノートパソコン「PC-9801N」を購入したころだと思います。当時からHDDモデルはパソコン本体だけでは動作しなくて最低限OSを購入する必要がありました(注:PC-9801NはHDD無し)。おそらく「PC98版MS-DOS 3.3C」を購入したはずです。少なくとも次バージョン3.3Dは2005年ころまでフロッピーと取説を持っていました。

あれから25年,とうとう今年2015年秋に次期OS,Windows 10が無償化されます(但し発売後1年間限定)。
ベストセラーOS,Windows7のサポート終了を2020年に控えていることもあり企業や個人を問わず,ものすごい勢いでWindows 10に更新されるでしょう。私自身に取っても非常に感慨深い出来事になりそうです。

Windowsと言えば「Windows Me」「Windows Vista」「Windows 8」の悪夢3兄弟が有名です。
Windows Me 2000年発売
Windows Vista 2007年発売
Windows 8 2012年発売

Windows Meは私も2000年に購入し使用していました。連日表れるブルー画面(フリーズ画面)はマジで夢に出てきました。
Windows Vistaは動作が重いことが不評でしたが私がVista機を購入したのはVistaの晩年(2008年)でハードのスペックが上がり上級機を購入したこともあり不自由はありませんでした。
Windows 8は手を出しませんでした。発売された瞬間から不平の嵐で私も家電店で触ってみましたがスタートボタンや電源ボタンが無くてUI(ユーザーインターフェイス)も全く変わってしまい,その場で体が固まってしまったことを思い出します。

Windows 8失速の奪回のためにWindows 10の開発はユーザーフレンドリーに徹しているようです。きっと完成品は高い評価を得るでしょう。Windows 8の反動と合わせて一大ムーブメントになると予想しています。そして今から1年後には私のパソコンも普通にWindows 10が動作しているはずです。

その大きな流れのなかで個人的な課題が出てきました。

  1. 私自身もWindowsソフトを開発しているため,いきなりWindows 10に移行することで予期せぬトラブルに会うかも知れない。ちょっとのコード修正ならよいが深刻だとそこでくじけてしまうかも。
  2. 自作しているソフトの一つでは他のアプリのボタンを自動で押すなどの機能もあるため,Windows 10の新機能「仮想デスクトップ」を前提としてソフトを作りたい。

この課題を解消するために,いち早くWindows 10を導入し適時自分のソフトを検証していきたい。

と言うことで日本語対応版「Windows 10 Technical Preview  Build 9926」が公開されたタイミングで早速インストールしてみました。 ほとんど使用していないWindows7のデスクトップ予備機が2台あるため,そのうちの1台に「上書きインストール」することにしました。

Microsoftのホームページでは「Windows 10 Enterprise Technical Preview をインストールした後は、PC の復旧パーティションを使用して前のバージョンの Windows に戻すことはできません。以前のオペレーティング システムをクリーン インストールし、ご使用のプログラムおよびデータのすべてを再インストールする必要があります。」とありますので簡単に以前の環境に戻すことは出来ないかも知れません。また普段使用しているメインパソコンへのインストールは厳禁です。
私の記事を参考にされる場合は自己責任でお願いします。

環境
自作ミドルタワー機
マザボ MSI 880GM-E41
CPU Athlon II X4 615e 2.8GHz
GPU 内蔵 Radeon HD 4250
メモリ DDR3 8GB
ストレージ SSD 128GB
OS Windows 7 Ultimate 64bit

インストール手順
1)Windows 7を起動。
2)一応「システムイメージ作成」でCドライブを
 USBのHDDにバックアップ。
3)Microsoftアカウントを取得。
4)isoファイルをダウンロード。
  http://windows.microsoft.com/ja-jp/windows/preview-iso
5)isoファイルをDVDに焼く,などでメディアを準備。
6)setup.exeを実行。
7)途中,何度か再起動,ログインなどの入力あり。

これだけです。低速のDVDドライブでインストール開始から終了までの所要時間は「1時間9分」。あっさりし過ぎです。またインストール中に表示される文字も「あと少しです」など非常にシンプルでした。

Windows 10 インストール前後のCドライブの容量です。
インストール前 総容量 72.7GB,使用 54.7GB,空き 18.0GB
インストール後 総容量 72.2GB,使用 61.9GB,空き 10.3GB

総容量が減っておりパーテーション構成が変更された可能性があります。
また,7GB以上使用量が増えました。ディスクの空きに注意が必要です。

インストール前のWindows 7の画面
Windows7

インストール後のWindows 10の画面
Windows10

私のWindows 7のデスクトップ画面は独特で徹底的にクラシックスタイルに変更してあります。見た目はWindows95(20年前)とさほど代わりません。ゴテゴテした装飾や機能が嫌いで当時のシンプルさをこよなく愛しています。

で,見ての通りWindows 10インストール前後でさほど画面が変わりません。Windows 10は今風ではありますが私が望む「シンプル画面」を可能な限り再現してくれたようです。またスタートボタンや電源ボタンがちゃんとあります。スタートボタンを押した時のModern UIさえ表示されなければ完璧です。

ありがとう Windows 10 開発陣! 大げさ?

小一時間使ってみてバグっぽい挙動はありませんでした。唯一右下のスピーカーアイコンが見えなかったことくらいです。Visual StudioやファイラーなどWindows7時にインストールした,いくつかのソフトを起動してみましたが問題ありませんでした。なんだか拍子抜けです。これなら自分のソフトも普通に動きそうです(MySQLの設定があるので検証までが面倒)。

OS起動時間は短くなったような気もしますが劇的ではありませんでした。

問題はあります。音が出ません。ふと見たらエラー画面が裏に隠れていました。「VIA HD Audio Deck」をアンインストールすれば標準ドライバーでOKになるかも知れません。後日検証予定です。
Error

***********************************************
1月29日追記
Windows Updateをおこなったところエラーが出なくなり音が鳴るようになりました。
***********************************************

可能な限り時間を取ってWindows 10を使い込みフィードバックし新OS立ち上げに参加していきたいところです。そう出来ればなおいっそう愛着が湧くでしょう。

| | コメント (0) | トラックバック (0)

コンピューターのOSは,1つで良い

アップルが切り開いたモバイルコンピューティングのビジネスモデルもとっくに成熟期に突入した感があります。また,私はGoogleの7インチAndroidタブレット「Nexus7 2013」を使用していますが,この2年落ちの機種でさえ十分に快適に動作しておりハードウェア的にも早々成熟しています(乗っているOS次第ではありますが…)。

で,この成熟した時代に手持ちのモバイル端末を使ったり世の中の情報に触れるたびに思うことがあります。

 コンピューターのOSは,1つで良い

端末が違っていてもブラウザだとかSNSだとかゲームだとか… やってることにあまり差は無く,だとすればOSの違いを意識する必要が無くなります。もちろんサービスの違いや洗練度の差はありますがハードのコモディティ化に追従してアプリやサービスも急速に均一化していくでしょう。

なので,本来なら「OSは色々あっても困らない」との方向なのですが,それでもOSを1つに絞りたい。でもってそれは「Windows」でなければならない。

  1. いざとなればいつでも自宅パソコンで常用しているWindowsソフトと同じものが動く。(自宅パソコンと同じ環境)
  2. 自分でも自分用にWindowsデスクトップソフトを開発しており,いざとなれば… 以下1項と同じ。  
  3. セキュリティの掌握を1つに絞りたい。※これが一番重要。 

と,ずっとモヤモヤしていました。

とろこでパソコン系統として見ると
アップルは自ら築いたモバイルの牙城のために大胆な戦略が取れないようです。パソコンOS「OS X」は先んじて無償化されていますが,マイクロソフトほどの大胆な融合政策は出遅れているように見えます。
Googleに至ってはパソコンOS「Chrome OS」の立ち上げにいまのところ失敗しています(少なくとも日本では)。機種が安価は良いのですがクラウド前提のためオフラインでは身動きが制限されます。それとAndroid OSとの差別化も見い出せていないようです。

また,最近のネット記事でもiPadやAndroidタブレットでは無くWindowsタブレットが取り上げられる機会が多く,みんなやっぱりWindowsが良いのでは? と私は思っています。

そんな中で「Windows 10の無償化」が正式に発表されました。
今秋のWindows 10無償発売で一気に潮目が変わるのでは? と踏んでいます。

数年後には「気がつけばWondows一色」の時代に戻るのか?
私はこの可能性にかけ今後はOSが乗る機器をすべてWindowsに切り換えていく予定です。

非常に楽しみですが,さて,どうなるか…

| | コメント (0) | トラックバック (0)

2015年1月24日 (土)

《寿命革命》の衝撃

新春の1月4日に放送されたNHKスペシャル「ネクストワールド 私たちの未来 第2回 寿命はどこまで延びるのか」は衝撃的なものでした。
●再生医療と3Dプリンターを組み合わせた臓器の再生
●人間の体内を動き回りがん細胞を見つけ出し,抗がん剤を発射するナノマシン
●どんな高難度の手術もミスなく行う手術ロボットの登場
●着々と進む若返り薬の研究
番組では2035年に若返り薬が「保険適用」されたことでの老夫婦の葛藤が未来ドラマとして描かれています。

これらの医療技術の急速な進歩により30年後の2045年には人間の寿命は100歳を超えると研究者は予測しています。まさに『寿命革命』の到来です。
私に取って,そんな話は初耳だったと言うか,まさか寿命がこれほどに延びていくものだとは夢にも思っていなかったので,いきなりこの番組に接してしまい数日間,頭が混乱しました。

今私は50歳ですので後20年すれば体が思うように動かなくなり30年後には寿命を迎える,と,だいたいそんな感じで毎年「後何年か~」と余生を算段しおぼろげにでも人生設計を意識していました。実際今現在だって60歳ころの引退を目指してプログラミングを介しての新たな収入の道を探っています。多分誰だって寿命を意識して似たような人生設計を立てているはずです。

それがいきなり「50歳なら余生が後50年はありあますよ,旦那。しかも意外と元気に生きられるんです」と耳元でささやかれたわけです。到底信じがたい,と言うか今立てている人生設計が根底から崩れてしまう。どうしてくれるんだ。たかが一報道番組のせいで俺の人生の方向性がグラグラになったじゃないか! みたいな。

本当に30年経ったら平均寿命は100歳になるのか? 私は番組を見ていて半分懐疑的に思っていました。だって,医療革命は分かるが財政難だとか世界情勢の変化だとか世の中に取ってプラスな材料があまり無いじゃないか。たとえ若返り薬が完成したとしてそれは一部の富裕層のためのものだろう,と。

ところが次の週に放送されたNHKスペシャル「討論 シリーズ日本新生 ニッポン"空き家列島"の衝撃 ~どうする?これからの家と土地~」を見て考えが変わりました。
番組では急速に進む日本のすさまじい高齢化と人口減少が生み出すさまざまな負の側面が紹介されていました。税収の落ち込みや地方都市の荒廃など。

「超高齢化と人口減少」について改めて考えさせられました。そして前週に放送された「寿命革命」。この二つが頭の中で一つに結びつきました。もし志のある政治家や官僚なら若返り薬をはじめとする医療革命に日本の命運を託しビジョンを考えるだろう。あながち寿命100歳は夢では無い,と考えるようになりました。

健康寿命が
後20年か
後40年以上か
はたしてどっちか?
もし40年以上だとすると人生設計そのものを抜本的に見直す必要があります。

一番の問題は「年金」を始めとする社会保障でしょう。このシステムは抜本から変化すると予想されます。元気な年寄りが働き可能な限り社会保障の受給側にならないよう求められると思います。
そうだとして40年後には今と同じ仕事はありません。
NHKスペシャル「ネクストワールド 私たちの未来 第1回 未来はどこまで予測できるのか
番組で紹介されていますが多くの仕事がコンピューターに取って代わられます。私にはどんな仕事が待っているのか想像出来ません。

健康寿命が後40年以上とした場合に予想されることは今のところ,40年後も何らかの仕事をしていて社会貢献をしているはず,と言うことだけです。それでも,その前提の人生設計を今から立てておく必要があるでしょう。急死して人生を終わることもあるでしょうから後20年と40年の2本立てで人生設計が必要です。

この寿命革命の番組を見たのか見なかったのか,見たとして意識していたかしていなかったか,大げさですが大きな人生の別れ道が2015年1月4日にあったわけです。

さて,何から始めましょうか…

| | コメント (0) | トラックバック (0)

2015年1月23日 (金)

マイクロソフト 再起動

私は一応エンジニアっぽい所属の仕事ですが何故だか設備,装置,パソコンなどの「再起動」をしょっちゅうやらされていて半ばメインの仕事になっています。ソフトウェアが絡む機器はいつの世も安定しないものです。

と,どうでも良い話はさて置き,今年2015年がマイクロソフトにとっての「再起動」となりそうです。

米国時間の1月21日に開催された次期Windows「Windows 10」の説明会で基本OS(Windows 10)の「無償化」が発表されました。長年Windowsを愛用してきた私一個人に取っても非常に大きな変革です。マイクロソフトはWindowsの無償化のみならず音声認識やヘッドマウントディスプレィなど様々な仕掛けを一気に起動させてきた感があります

Windowsの無償化のみに目が行きがちですが,プログラマの観点から見るとマイクロソフトは昨年末に大きな仕掛けをひっそりと稼働させました。
「Visual Studioの無償化」と「.NET Frameworkのオープンソース化」です。
Visual Studioは今までも機能限定版が無料でしたがPRO相当が無償化されました。Windowsの無償化と合わせてこれらの仕掛けの行く先にはアップル iOSやGoogle Androidを含むあらゆるデバイスのソフトウェアをマイクロソフト製品を介在させて動作させる思惑が込められています。

極端な話,各機器のGUI(グラフィカルインターフェイス)さえ考慮すれば,あらゆる機器のソフトウェアを一つのプログラミング言語(具体的には「Visual C#」)で作り上げることが出来るようになります。

私のように一つのプログラミング言語さえ覚えるのに四苦八苦している弱小プログラマに取っては夢のような話です。

何年か前までjava言語で行くかC++かそれともVisual Basicにとどまるか迷っていましたが,その後,とりあえずVisual Basicで作りたいソフトをさっさと作る方針を決め今はプログラミングに没頭する日々を送っています。
Visual C#とVisual Basicは元々兄弟言語でありC#を覚えるのは難しくなさそうです(実際見比べて問題無し)。なので数年掛けてランニングチェンジしていきたい。

新生マイクロソフトの波に乗れるのか,私自身に取っても分岐点の年となりそうです。

続きを読む "マイクロソフト 再起動"

| | コメント (0) | トラックバック (0)

« 2013年9月 | トップページ | 2015年2月 »