レガシー資産マニアのブログ

愛知県三河から、石川→新潟へととびまくってきたSEのブログ。長岡市を拠点に、もそもそ動いているプログラマー。 長岡の自称ジャニーズが合い言葉。そんな山P。 初めてPCを触ったのは小2にも関わらず、言語知識に乏しいので、 .NETの勉強会を通して、.NETの知識向上と、人脈を広げたい。 座右の銘は「死ぬ気でやってみろ。死なないから」

自己研鑽について思うこと

自己研鑽しないひとなんて居ない、
そう思うことが多いやまぴです。

会社にいて、
会社が嫌いな人なんて居ないんだ、と思ってきました。
新卒で入社してかれこれ11年目。
自分の中の「信念」です。

嫌いな仲間や、いい加減な気持ちで一緒にいないんじゃないか

そう思うからで。


ただ、最近言われるようになった。
「そんなことは、ない」と

会社は、目的、目標が合うから集えるのだ。
そこに、お金儲けだろうが、スパイだろうが、何も考えていない人だろうが、うまく回るのが会社。
おまえは、夢を見ている。と。


そうなのかもしれない。

人は善い人。
悪いわけが無い。
みんながいるから、がんばろうと思える


そうずっと考えてきたし、この先もこの俺の考えは変わらないと思う。

会社の仲間は、家族だと思ってるから。
家族と思いたいのは、きっと、そばに家族がいないからかもしれない。
知り合いがいないからかもしれない。

所詮、寂しいだけなのかな。
俺。



会社にいる人は、みんな違う性格から意味があると、俺は考えていて。もっと前を向いて働いていたい。

もっと、前を向いて。

msbuildでビルドをして苦労した話(C++Builder)

この記事は、Delphi Adventcalendarの9日目の記事です。
qiita.com

どうも、やまぴです!
新潟でMS系OSで使う業務ソフトを作っています。
絶賛、ファン募集中ですw
twitter.com

苦労とは

ビルドの苦労は様々です。
人にとって、簡単なところで躓くこともありますし、
情報が見つからなくて苦労することもあるでしょう。

ここでは、会社で開発環境をリプレースして、C++Builder5からC++BuilderXE7に変わったことで
苦労した点をあげつらいたいと思います。

プロジェクトがわからない

そうです。そうなんです。プロジェクト構成、がっつり変わるんです。

  • ver5

当時は。*.bpr,*.bpg, *.bpkというファイルでした。
当時からXML形式のプロジェクトファイル構成ではあったものの、いくつかのファイルは外部ファイル(いわゆる*.res)に含まれていました。

  • XE7

今は、*.cbprojというファイルになりました。
中身も記述構成がガラリとかわりました。

.resファイルにあったアイコン、バージョン情報がプロジェクトファイルに移行していた。

最近知ったのですが、リソースファイルからいくつかの情報が移動した?のでしょうか。
調べてみる限り、いくつかではなく、すべて移動した、といっても過言ではない様子。
特殊なリソース情報だけ、外部ファイルに外出ししている、そのようなプロジェクト構成になったとか。

プロジェクトのビルドで困ったこと

ビルド方法は2つあります。
1つは、開発環境を起動して、そのまま「ビルド」をすること。
もう一つは、MSBuildを使う方法
前者は今までと感覚は変わりません。
後者について、詳しくは、こちらをご参照ください。
84taka-y.hateblo.jp

MSBuildをするときに注意をすること

まず、コマンドプロンプトで動くのですが、どうやって動かすか。

普通にコマンドプロンプトを立ち上げないでください。
C++Builderのフォルダーにあるコマンドプロンプトを立ち上げましょう。
スタートメニューを起動して、「Embarcadero Rad Studio XXXXX」→「Rad Studio コマンドプロンプト」を立ち上げてください。
何が違うか?それは、プロパティを見てみると分かるのですが、Builder用のバッチファイルを読み込ませてパスを通しているだけです。

当時は一般的なコマンドプロンプトや、VS系を入れることででてくる「開発者コマンドプロンプト」との違いが判らず、???マークだらけでした。(VSのコマンドプロンプトも、ショートカットのプロパティを見ると、やはり独自にパスを読み込ませるバッチファイルを動かしています)

ビルドの方法?は

こちらについては、次の記事をご参考ください。
開発始めたとき、まとめたものがあります。
84taka-y.hateblo.jp

ビルドを早くしたい

これ、未だに結論がでない(というか調べないだけ)のですが、
実際のところ、開発環境からのビルド、MSBuildどちらが高速なのか。
こればかりは、何とも言えませんが、複数をビルドしたい場合はやはりバッチファイルでできるMSBuildに軍配が上がるように思います。

また、最近知ったこととして、オプションで「/m(/mp)」オプションがあります。
これを使うと、最大で使いたいCPUコア数を指定できるとか。
メリットかもしれませんね。

ここまで書いてきてスムーズじゃねえか!と言われかねないのですが、
ビルドを行うと色々とエラーにも遭遇します。
先ほどご紹介したブログにもありますが、

C:\Program Files (x86)\Embarcadero\Studio\15.0\Imports\xxxxxxxxxx_OCX.h(66): error F1004: コンパイラ内部のエラー at 0x4fe0fd with base 0x400000
C:\Program Files (x86)\Embarcadero\Studio\15.0\Imports\xxxxxxxxxx_OCX.h(66): error F1004: コンパイラ内部のエラー

これが結構な頻度で出るのは何とかしてほしい。
出た後は、開発環境を立ち上げて、コンパイルをすると、すんなり行くこともしばしば。

また、そこまでビルドをしても、時々LME288エラーだったかな、が起きます。ここまでくるとどうしようもありません。
PCを再起動してください。

再起動するしか、方法はないです。

メモリの上限関係らしいので、ilink32.exeのファイル内部フラグを変更する方法もあるのですが、
それだけでは解消できない場合は、おとなしく「パソコン」を再起動してください。
開発環境を再度立ち上げるだけでは、解消しません。


とまあ色々なことがありましたが、それを抜きにしても
MSBuildでビルドできるようになったおかげで、Windowsのメリットを享受できているのかな、と思いたい。
そんなやまぴです。

最後に

私は、普段、新潟でMSにターゲットを絞った勉強会も行っています。
気になった方は、ぜひ声をかけてくださいね!
ngtnet.connpass.com

さて、愛知への帰路の途中。
なんとか、今日かけてよかったです・・・(笑)
お次の方、よろしくね!!

Niigata.NETの紹介と、運営していて思うこと

運営って大変

何を?と思いますよね。
サークル、団体、集まりなど、人が沢山集まるところでの苦労はつきものです。

そこで、今回は、
今まで関わってきた団体、集合体で感じたこと、
そして、今関わっている団体のご紹介も兼ねて記事を書きたいと思います。

この投稿は

この投稿は、
「IT勉強会/コミュニティ運営 Advent Calendar 2017」の
6日目の記事となります。
qiita.com

まず今運営している団体とは...

私が今所属している団体は「Niigata.NET」という団体となります。
これは、MS技術に関わる人達で、新潟で集まってわいわいしようよという団体です(雑な紹介w
新潟で技術をしているぞ!?
.NETに興味があるぞ!?
主催者に興味があるぞ!?という方、C#erな方、是非おいで下さいませ。
ngtnet.connpass.com

主催者はコチラ
masaru_b_clさんのプロフィール(申し込みイベント一覧) - connpass
ailightさんのプロフィール(申し込みイベント一覧) - connpass
山Pさんのプロフィール(申し込みイベント一覧) - connpass ← イッツ、ミー

新潟県内のMS系IT関係者、およびMacLinuxをメインにしたオープンソース系技術者を主な対象者として想定します。

.NET開発者(C#VBC++、F#、etc...)
Windows Server管理者
Azure利用者
組み込み系(.NET Micro Framework、etc...)
モバイル系(Xamarin、etc...)
MS系製品ユーザー(SQL Server、Office、etc...)

さて、今までどのような団体、イベントに参画してきたか

技術系だけではないですが、色々な団体に所属をしてきました。
参加者として、発起人として、等々。

  • Niigata.NET
    • 先程のご紹介イベント。まず、新潟で.NET、MS系の技術勉強会がしたかったため、勉強会で人脈を作って3人で始めました。企画の検討、地方勉強会に積極的に参加をしての.NET勉強会周知、Facebookでの公式ページ管理・広告設定などを担当中。
  • 西野亮廣独演会in長岡
    • 観客として最初にチケットを購入しましたが、スタッフとしても参画したいと思い声をかけたことが切っ掛けです。プロジェクトの計画管理、渉外、Facebookでの公式ページ管理・広告設定、撮影・映像編集などを担当しました。
  • 西野亮廣独演会in新潟
    • 長岡の切っ掛けで、お話に入れさせて貰った経緯。ここでは、撮影・映像編集、Facebookでの公式ページ管理・広告設定、ホームページでのチケット販売などの仕組みを作成しました。

ngt-nishino.jimdo.com

色々感じたこととは...

  • 参加者集めの苦労
  • 内容の検討の苦労
  • 開催頻度の苦労
  • 告知方法の苦労
続きを読む

MSBuildでビルド可能なプロジェクトファイルを比較してみた

本ページは、「C# Advent Calendar 2017」の5日目の記事です。
qiita.com

なぜC#?

キッカケは、本Advent Calendarをつくった、ろっさむさん
(@4_mio_11)を尊敬しているので、何かお力になりたい、そんな不純?純粋?な動機からです。
qiita.com

普段は...

実は普段は全くと言ってよいほどC#を使いません。
なのに記事を書こうと手を挙げてしまった僕。さて、どうしましょうか。

※使っていないわけではなく、興味もあります。
※その証拠に、このような勉強会を行っています。是非!
 登壇者も個人的には、随時募集したいので、ぜひ繋がりましょう!!
 Niigata.NETngtnet.connpass.com
 Me -> twitter.com

なぜろっさむ氏と知り合ったか

東ゲ部ってしっていますか?
関東ゲーム部。
http://www.to-gebu.site/
https://twitter.com/proposertogebu

名前からしてわかる通り、ゲームを作る方々の自主的な集まりなのですが、
そこで「もくもく会」をなさっていると聞き、
ゲームより「もくもく会」に惹かれ行っちゃいました(笑)

なぜMSBuild?

ここを話さなければいけませんね。
実は普段はC++Builder使いなんです。
そうなると縁遠い、と思われがちですが、実は違います。

昔は、C++Builderは完全にMSと異なるプラットフォームをいきつつも、
(今はなき)「C# Builder」を作っていた時代があります
そして、わかる方には分かるのですが、
C++Builderときておそらく大方の方は「Dephi」が頭をよぎるでしょう。
Delphi構文を見ていただくと分かるのですが、VBC#と非常に似ています。
ましてやC++Builderの実装思想も、実はC#と非常によく似ています。

そして、今。

昔のC++Builderからビルドエンジンが変わり、bccから、MSBuildeでもビルド
できるように内部ロジックやプロジェクト構成が変わってきています。

ということで、MSBuildと出逢うこととなったわけです。
この辺の話は、次のAdvent Calendarで書きますね。
qiita.com

MSBuildとは

.NET Framework 2.0以降で搭載されたオープンなビルドエンジンです。
独自のXMLファイルを解釈することで、.NETのプログラムを生成することが出来ます。

MSBuildは何をやっているの?

そもそものMSBuild自体はオープンソース化されています。
こちら。
github.com
見ると分かりますが、プロジェクトは「csproj」ファイルです。
そう、C#!ソースコードC#!
単純にMiocrosoft.MSBuildクラス内の関数をコールしているだけですが、よく作ったなぁ、というのが個人的な印象です。

https://github.com/Microsoft/msbuild/blob/master/src/MSBuild/XMake.cs
BuildProject()関数があります。この中で、さらに「ExecuteBuild()」を読んでいますが、
実体はこれのようです。

  • buildManager.PendBuildRequest

→ビルドの予約。
https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.build.execution.buildmanager.pendbuildrequest?view=netframework-4.7.1#Microsoft_Build_Execution_BuildManager_PendBuildRequest_Microsoft_Build_Execution_BuildRequestData_

  • s_activeBuild.Execute

→ビルドの実行
https://docs.microsoft.com/ja-jp/dotnet/api/microsoft.build.execution.buildsubmission.execute?view=netframework-4.7.1#Microsoft_Build_Execution_BuildSubmission_Execute

実体は単純に.NET Frameworkのクラスを読んでいるだけですので、
結構単純な様ですね。

コレさえ分かれば、究極な所、独自言語を作れる訳です。
独自言語を作ることはしないので、一旦はここで、MSBuildのソースを見ることはやめます。
興味がある方は、引き続きご覧ください。

ちなみに...

MSBuildでビルドできるプロジェクト構成を比較してみよう
と、ここまできたところで、ふとした疑問。
各言語で新規作成をしたプロジェクトファイルを比べてみたい。
C#VBって違うの?C++Builderってどう違うの?と。

ちなみに、家でVisual Studio 2015でF#をやろうとしたところ、
Downloadして!と新規作成時に促されたのでその通り進んたところ、
VSが閉じてないよ!とログで怒られたのは納得がいかない...
[0BB0:0D30][2017-12-03T23:15:27]i000: MUX: Warning Block: ProcessBlock : We recommend you close Visual Studio now before setup continues. If you proceed without closing Visual Studio, the application may become unstable.

続きを読む

勉強になった、回覧の話(プロジェクトの分岐点)

最近、回覧物を見ていて気になったので、メモ。

プロジェクトの大切なこと

プロジェクトを進めていく上で、見直しは欠かせません。
そして、さらに言えば、リスクマネジメントも大切なことは言わずもがな。

でも、リスクマネジメントって大変。

リスクマネジメントを正確にこなせれば、当然問題は発生しえないわけで。
(種を積む。事前の手を打って、関係者と調整済みにする 等)

つまり、リスクマネジメントはうまい人の方が少ないわけです。
うまい人だらけだったら、法廷闘争にはならないわけで...(c.f. IT会社が時々巻き込まれる損害賠償)

しかも、リスクは発生しないかもしれません。
発生しないかもしれないことに、何日、何週間も費やすことは
なかなか関係者の同意を得られにくいと感じます。

(by やる気が無いだけだ!気合いが足らん!論)

どうすれば?

ここがとても目から鱗だったのですが、
リスクマネジメントのやりかたとして、A案、B案をつくるだけが
リスクマネジメントではないそうです。

例えば、基本路線はA案で。

ではB案はどうするのか?

続きを読む

自己啓発

自己啓発って、大変だけど、楽しい。

普段、報連相を意識していても、色々違うしね。


さて、私は文章を書く、報告することがとても苦手で、
いつも相手に指摘をされてばかり。

そこで、分かり易い文章について追い求めているが。


日経コンピュータの2016.5.12号「仕事がうまくいく文章作成術 第10回」には
以下のように記載がある。

■分かり易い文章とは
短時間説明文章のルール
1.A4の一枚で説明。二枚以上ではダメ

2.自分が伝えたい内容ではなく、相手が知りたい内容を書く。

3.文字が続く長い文章は禁止。
 長く続かないように、文を短く切って書く。

4.相手がひと目で何を言っているのかわかる様に工夫する。

一番伝えたいことは、きっと2。次が4だろう。
相手を考えれば考えるほど、分からなくなる。

でも、楽しい。