ITservice雄飛 プロモーションビデオ

2020年10月29日木曜日

レース関係でつくばに行ってきた時のお話。

 ものすごく、お久しぶりです。

ITservice雄飛です。


投稿していない間に、色々ありまして。

今回の投稿は、ITの様でITじゃない分野にはなります。


ZENKAIRACING.COMさんという、レーシングシミュレータ屋さん(本物のモータースポーツもされています)のところにお邪魔致しまして。


で、訓練用の本物のレーシングシミュレータに乗せていただきました。

その上、ZENKAIRACING.COMさんが運営する、

e-SPort Raceにも出場させていただきました。


滅茶苦茶難しかったです。

シミュレータで乗せてもらったのは、コースはつくば2000。

車両はS-FJ。

タイムは1分6秒(基準タイムは1分フラット(0秒台))。

ハンドルが、とにかく重いのなんの。

ブレーキが、とにかく重いのなんの。

10分走って、完全にバテました。


そしてe-Sport Raceでは、現役のレーシングドライバーの方も走られていて、皆速いのなんの。


レースのコースは岡山国際サーキットで、僕が1分47秒で周回してたのに対し、皆42,3秒前後で周回してました。

事前の練習では45秒台だったんですが、ガチガチに緊張して、本番では2秒も下がりました。


そしてトップ集団は、39秒台で周回してました(!)

もちろん、僕は断トツの最下位です(汗)

しかし、滅茶苦茶楽しかった・・・。そして皆、強烈に速かった・・・。


こちらがそのe-Sport Raceで使われた仮想車両。






で、お世話になったので、ZENKAIRACING.COMさんのレースにも応援に行ってきました!

なんと(!)、社長自らハンドルを握られておりました!

こちらがその車両。S-FJっていうレーシングカーです






仮想車両も正確に再現されています。



そしたら、その上なんと!

ガレージが、僕が昔いたチームじゃないですか(!!)




僕がいたころは、2001年~2008年頃で、WindsGarageってチームだったんですが。

今は、SuperWindsって名前に変わりました。

そして、今は只のOBなんですが。


カテゴリも、FJ1600(フォーミュラジュニア1600)っていう、今は無いカテゴリ(公式には)なんですが。

(練習とか体験走行では、今でもFJは元気に走ってますよ?)


今は、S-FJ(スーパーフォーミュラジュニア)っていうカテゴリに移行しました。


FJは羽(ウイング)のないフォーミュラーカーなんですが。

S-FJは羽(ウイング)が前後についています。


FJのエンジンがスバル製の1600CCの水平対向エンジンに対して、

S-FJは、1500CCのホンダ製のVTECエンジンを積んでいます。


SーFJは乗った事が無いので判りませんが、FJに関しては、とても操作がシビアだったと記憶しています(間違っても他のレーシングカーやS-FJが簡単という意味ではない:むしろ、どれも難しい)。


さて、前置きが長くなりましたが。


先週の2020年10月25日(日)、S-FJつくば地方選手権の最終戦に行ってきました!


先ずは、昔スクール生時代に走ってた、つくば1000に行ってきました。

懐かしいね。



そして、筑波本コース(つくば2000)へ。

入場料が1000円。チケット買って、いざ。


丁度、S-FJの予選が始まってました。


懐かしい音、懐かしい匂い。

微妙に感動しました、数年ぶりに来て。

皆、速いなー。


予選が終わって、昔からいる懐かしいメンツの方々や、そうでない新しい方々、いろんな人がいました。


ロードスターレースが大盛況で、e-SPortからリアルモータースポーツに移行した人が沢山いるみたいでした。


そんな中、S-FJも10数台(確か16台位)が走ってて、久しぶりに盛況でした。




で、懐かしいメンツの方々や、昔お世話になった、ガレージの社長ともお会いできました。


今は本当に体力無くて、レース見に行ってきただけで体力使い果たしてしまい、帰路についてしまいましたが。


これから、e-Sport Raceという形ですが、色々活動することになると思います。

それに付随して、つくば界隈にも、数年ぶりに顔を出すことになると思います。


皆さんお疲れさまでした!


久しぶりにいい刺激を受けました!


そして!

次回のe-Sport Raceも、アナウンスがあったので頑張ります。

次回のコースは鈴鹿!

・・・皆、速いんだろうな・・・(汗)。


最下位でもなんでも、ブランク埋めるべく頑張ります!!

2020年8月4日火曜日

Kindle本を書いている話

こんにちは、ITservice雄飛です。
微妙に忙しい、今日この頃です。

今日も、よもやま話を。

今、片手間ではありますが、Kindle本を書いておりまして。

きっかけは、半年前に書いたKindle本がちょこちょこ売れ初めまして。
で、じゃぁ、もうちょっと本の本数増やそうかな、と思った次第です。

で、話は戻って。

私が最近主に使う言語は、Lazarus(FreePascal)なんですが。

これに関する日本語の情報が少ないのなんの。
大体、英語とかドイツ語とかが大半ですね、ググると。
コードは同じなので、多少文を翻訳できれば、ソース見て内容はわかるんですが。

更に、書籍はもっと少なくて、ドイツ語の分厚いのが1冊、Kindleで書かれた本が日本語で1冊。それだけかな?

分厚いドイツ語のは持ってます、因みにですが。(高かった)

更に、私がメインとして行う、(日本語での)VBA処理に関する文献はWeb、書籍共に皆無でして。


「じゃぁ、書こうか、試しに」

となった次第です。

内容としては、FreePascal(Lazarus)を扱える人自体が少ないと思われるので、プログラミング入門書と位置付けて、プログラミングやアルゴリズムのイロハから始まって、ハローワールドからVBAとComObj使ったサンプル作成、テーマを自由に決めて、その中から作品を作る、という章で終わる、という構成です。

昨日、夜な夜な書いていました。

さて、執筆終わるのにどれくらい時間かかるだろう?
結構なボリュームになりそうなので、時間は掛かると思います。

それではそれでは。


2020年8月3日月曜日

プログラミング技術だけ覚えても駄目な話

こんばんは、ITservice雄飛です。

最近は、自作のエディタの更新と。
本業と副業、共に忙しい今日この頃。

さて、本題。

今、プログラミングが(まだ)熱いというか、盛んですが。

以前、ツイッターの方で、非常にごく簡単なアンケート取ったんですが。

それで、反応を見て難しいなと思った感想を持った訳です。

何が難しい言って、プログラミングだけ覚えれば、それで良い、
そうすれば食べていけるんだろう、みたいなアンケート結果だったので。

結論を先に書くと。
「プログラミング」だけ覚えても、仕事にするのはとても難しい。

これでしょうか?

独立って意味ではないですよ?

なんで??

それは、基盤となる必須の基礎知識的な技能であって、
それを実現する、別の各種知識が必要になるからです。

簡単に図示するとこんな感じ。

・対象の業務に関する専門知識
・アルゴリズム構築技能(設計技術、構築技法)
・プログラミング(コーディング)技能


簡単に、大雑把に、図示しただけですが。
細かく書き出すともっとあります。

上記の技能をうまく作動させるために、
コミュニケーション能力も結構重要だったりします。


例えで、仮のやり取りで書きますね。

・お客様「会社の単純手作業を何とかしてくれないか?」
・受注者「どの様な作業でしょうか?お話をお伺い出来ますか?」
(お客様と受注者でやり取りを行い、受注者はヒアリングをする)

・受注者「AとBは自動化可能ですね。Cは難しいというか、自動化は危ないですね。」
・お客様「どれ位で出来るの?どこまで楽になるの?」
・受注者「お伺いしたお話の限り、AとBはエクセルVBAを使えば1時間です。」
・受注者「もっと早く数分で処理する事も可能ですが、その場合納期は嵩みます。」
・お客様「作業時間は掛かっても良いよ、急いでいるから、エクセルで良いよ。」
・受注者「このAとBのエクセル処理なら○○日で出来るでしょう。」
(ここの、見積もり納期の勘案は非常に重要だったりする。少しだけ多めに見積もる感じ)

・受注者「これを自動化して欲しい。」
・受注者「Aの処理とBの処理を、1時間以内で出来るVBAを書いてほしい。」
・作業者(プログラマ)「扱うサンプルデータはありますか?」
・作業者(プログラマ)「お客様の行っていた作業の工程教えていただけますか?」
・受注者「Aがこれで、Bがあれ。資料送ったよ。」
・受注者「お客様からヒアリングしたから、それを基にサンプル作って。」
・作業者(プログラマ)「ありがとうございます、早速取り掛かります。」
(ここでプログラマは、資料と睨めっこして、自動化の方策を書き出してアルゴリズムに落とす)
・〇日(納期○○日の半分が経過)

・作業者(プログラマ)「テスト版ですが出来ました。」
・作業者(プログラマ)「サンプルデータで動いているだけなので、保証は出来ません。」
・作業者(プログラマ)「実作業に近いデータは貰えますか?詳細詰めたいです。」
・受注者「交渉してくる。欲しい作業内容を詳しくお願い。」
・作業者(プログラマ)「Aは△の処理の際の文字の長さの揺れ幅が知りたいです。」
・作業者(プログラマ)「Bは□の処理の際のテキストのフォーマットを知りたいです。」
・作業者(プログラマ)「テストプログラムと資料送りました、これで大丈夫ですか?」
・受注者「ありがとう、交渉してくる。」


(ここで、お客様にテストプログラムを確認して貰い、詳細を詰める作業をする)
・受注者「この様な感じで進めております。テスト版ですが、ご意見お願いします。」
・お客様「あれとこれは良いね、ここは要らない、そこに作業経過が欲しい。」
・受注者「Bの作業の差し支えない空データは貰えますでしょうか?」
・お客様「良いよ、適当な数字と文字で良い?」
・お客様「ありがとうございます、その方が助かります。」


・作業者(プログラマ)「ありがとうございます、助かりました。作業に移ります。」
・受注者「納期通り終わりそう?」
・作業者(プログラマ)「テキストのフォーマットが判ったので大丈夫です。」
・作業者(プログラマ)「納期数日前に、客先でテストさせて貰えますか?」
・受注者「判った、お願いしとく。」

・作業者(プログラマ)「初めまして、□□と申します。」
・作業者(プログラマ)「納品前に動作を確認させていただきたく存じます。」
・お客様「どうやって使うの?」
  ~省略~
・お客様「良いね、でも時々止まるね。」
・作業者(プログラマ)「申し訳ございません、事前に確認出来て良かったです。」
・作業者(プログラマ)「今修正しました、どうでしょうか?」
・お客様「良いね、今度は何やっても大丈夫だね。」


上の例えは、私が一人でやっていた受託開発を、幾つか擬人化させて登場人物を増やし、架空の案件で例えてみました。


・先ず、絶対的に必要なのはコミュニケーション力です。
コミュ力が無いと、色々苦しみます。
書く言う私も、日々コミュニケーション力は試されています。
それだけでなく、交渉力も重要になってきたりします(私の場合)。


・次に必要なのは、アルゴリズム構築能力と、それの言語化能力です。
アルゴリズムというのは、動作原理とも言えるかと思います。
要は、モノが動く仕組みを、頭の中で構築する能力です。
そして、それを図と文章で記す能力。
これが出来て、初めてプログラミング作業に命が灯ります。

・業務専門知識
必須です。
仕事を受ける場合、プログラミング出来ればどの分野でも、という訳には行きません。
ではどうするのか?お客様は、その分野の専門家です。
要は、プログラマたる私はその分野の素人な訳です。
細かく聞いて、只管聞いて、覚えるしかありません。
実際、そのように仕事をした事もあります。

プログラミングだけ覚えても、コーダー(コードを書く人)になっただけです。
しかし、第一歩には違いはなく、そこで満足するのではなく。
常にどん欲に学習していかないといけない、と言う事になります。


逆に、貧欲に学習する人は、何をやっても成功するかと思います。

今回は、これにて以上。

2020年7月31日金曜日

ExcelVBAでShapes(画像)が所属するセルのRowを取得する

ITservice雄飛です。

ほんとにお久しぶりの投稿です。
今回は、Excel VBAを。

今、オブジェクト(シート上に貼り付けられた画像)のRowsを取得する関数を探していたんですが。

どうも、昔はあった様だけれども、現在は廃止になっている様で、無情にエラーが返って終了しました。

色々考えた末、セルのサイズも取得できること考えたら、それアルゴリズムに落とせば良いだけじゃん、、、という、一般的且つ、ごく普通の考えに至りました。

で、思いついたら即実装。
簡単ですね、WhileとIFと変数の加算減算だけなので。
例ではRowですが、取得する値を幾つか変えれば、Colにも対応可能ですね。

本番はLazarus(Pascal)からComObjで呼び出すので、これからそれを組みますが。

まぁ、消すには勿体ないので、ブログ記事にしました。
以下、こんな感じ、即興のテスト関数です。

※このサンプル関数では事前に、オブジェクト(Shapes)を選択(Select)している必要があります。


Function Return_Sharp_Rows(start_i As Long, end_i As Long) As Long

  Dim tp As Long '選択したオブジェクトのTop座標を格納
  Dim rw As Long 'RowsのTopの合計値を格納
  Dim rw2 As Long 'RowsのHeightの合計値を格納
  Dim i_1 As Long 'While開始位置
  Dim i_2 As Long 'While終了位置
  
  tp = Selection.ShapeRange.Top '選択されたオブジェクトのTop座標を取得
  rw = 0 'Row.Topsを初期化
  rw2 = 0 'Row.Heightsを初期化
  i_1 = start_i '開始位置を引数から代入
  i_2 = end_i '終了位置を引数から代入
  Return_Sharp_Rows = -1 '検索にヒットしなかった場合の暫定値設定
  While i_1 < i_2 'While文開始
   rw = rw + Cells(i_1, 1).Top  'Row.Topsを代入
   rw2 = rw2 + Cells(i_1, 1).Height  'Row.Heightsを代入
   If ((rw <= tp) And (rw2 >= tp)) Or (rw = tp) Then 'オブジェクトの座標をセルの数値と比較し検証する
     Return_Sharp_Rows = i_1 '一致した場合、戻り値にセルのRow(i_1)を代入
     i_2 = i_1 '開始位置と終了位置を同一にし、While文を終了させる
   End If
   i_1 = i_1 + 1 'Rowを一つ下に移す(i_1を加算する)
  Wend
End Function

呼び出すときはこうします。例です。
Sub Get_Shapes_CellRow()
 Dim i As Integer
 i = Return_Sharp_Rows(1, 20)
 MsgBox Str(i)
End Sub

以上。
Excelって便利ですね。

自己紹介

デスクトップアプリケーション、ホームページなどの製作承ります。


ご挨拶


初めまして、本ページにアクセスいただきありがとうございます。


コンピュータが本格的な社会インフラとなり、すでに20年近い月日が経っております。

私が初めてコンピュータに触れたのは、1994年の18歳頃の時で、インターネットがまだ身近ではない状態のころでした。


それからは目まぐるしくコンピュータはソフトハードともに著しく発展し、Windows95の登場とともに、世界中がひとつのコミュニケーション手段でつながるインターネットと言うインフラ基盤が登場しました。


今となっては当時のコンピューターは、今のスマートフォンはおろか、ガラケーと呼ばれるフィーチャーフォンの処理能力にすら、及ばなかったと思います。


それから25年、様々のコンピューター言語、様々な OS、 様々なソフトウェアやミドルウェア が登場し、日進月歩著しい成長を遂げたのは、知る人ぞ知るところだと思います。



しかし、急激な発展を遂げるその裏では、 IT インフラの活用についていけず、情報弱者と呼ばれる、 ITインフラから大きく遅れをとる人々を生み出したのも、また事実かと思います。


この25年でコンピューターや携帯可能な情報端末、つまりフィーチャーフォンやスマートフォン、タブレット等は大きく成長し、日々、猛烈な成長を遂げ多彩な端末を生み出しております 。


では、それらが操作性に優れ、万人全てが扱える道具かと言うと、決してそうではありません。


メーカーや端末ごとによって、多少の共通性こそあれ、操作方法は皆バラバラで、 

ある程度の慣れと端末への学習がなければ、使いこなすのが難しいのが、今の現状だと思います。


言い換えれば、コンピューターはまだまだ未熟で、発展途上の産物だと思うのです。



しかしその一方で、それら情報端末には、未知数の可能性があるとも考えています。


ソフトウェア(ソフト)やアプリケーション(アプリ)を導入することにより、

安易に機能拡張することができる一方、特定の目的に特化したソフトやアプリを作れば、

目的や不便を解決するための効率的な便利なツールになり得るのです。


ソフトウェアやアプリケーションの製作は頭脳と体力との勝負であり、

作業も決して、安易だったり容易なものでもありません。


しかし、目的をきちんと理解し、設計し開発をすることにより、

パソコンや携帯可能な情報端末を、魔法の道具箱のように、

何百何千行の文章書類を加工したり、計算したりする事ができます。


そしてそれらは良く、オーダーメイドスーツのようなものに例えられます。


それを実現するのが、私たちプログラマの使命だと信じて疑いません。

また、その知識をお裾分けし、お伝えするのも使命のひとつだと信じております。



オーダーメードで、既製品にはない、かゆいところに手が届く商品をお作りします。


 ITservice雄飛

代表 脇保 雄飛


経歴

1976年生まれ

1995年3月高校卒

1995年4月有限会三余 入社

2001年11月WindsGrageRacingSchool

(モータースポーツ競技学校)入校 

2011年3月有限会社三余 退社

2011年4月千葉商科大学入学

2014年6月屋号雄飛(ITservice雄飛)起業届提出

2016年3月 常駐型派遣業務に従事

2016年4月千葉商科大学 卒業

2019年11月 有限会社三余 社内SEとして従事 


保有資格

2012年6月

コミュニケーション基本スキル認定 取得

2012年7月

営業基本スキル認定 取得

2013年12月

ホスピタリティ基本スキル認定 取得



自己紹介

高校卒業後、仕事の傍ら独学で、コンピュータ全般知識とプログラミング習得に励む

2001年に四輪モータースポーツの登竜門 FJ 1600つくば地方選手権出場を目指し、

WindsGrageドライバーズオーディションに参加。

WindsGrageRacingSchoolに、 「優秀C」 で合格し、入学する。

2001年から2008年まで、仕事の傍らモータースポーツに励む。

練習中の事故や病気などが重なり、2008年に引退。


不動産賃貸リフォーム関係の業務に携わる傍ら、

社内効率化の仕組みを、 delphiにて独学 で構築する。


2009年には持病の関係から免許証を返納、車の運転ができなくなる。

2011年、 IT 関係と営業関係の技能を身につけるべく、私立系商科大学に社会人で入学する。


モータースポーツ活動で養った活動力を武器に、学部を越えて多岐にわたる講義を受ける。

学費を稼ぐためにソフトウェア開発のアルバイトを 営業活動の末に受託開発業務を行う。

2014年には起業届を出し、 営業活動の末に顧客を獲得、幾度かに渡って受託開発を行う。

学費の捻出と体調不良のため一年休学するも、 その間を利用し、

卒論として1万5千ステップの多目的コードエディタの開発を開発実験として行う。


2016年3月に、中途採用枠で、 就職と受託業務契約の仕事を探し、同月に常駐型派遣業務に従事する。


同年4月に大学を卒業、そのまま個人事業主として受託開発と常駐業務を行う。


2017年から18年にかけて幾度かに渡って体調不良を引き起こす。

2019年、療養に努めながら、古巣の会社に戻り、社内 SE として勤務する。


2020年より受託開発を再開、現在に至る。



使用言語

Delphi及びLazarus(Pascal言語)

VB系言語(主に、VBA、VBS)

HTML+Css3+JavaScript

PHP

Python 

(得意順。主に使用するもののみを列挙。)


開発手法

ウォーターフォール型開発経験: 3年

アジャイル型開発経験:9年

独学期間を含めた全ての開発経験:15~20年

主要 取り扱い商品

VBAによる手作業処理の自動化プログラム作成

(Excelマクロ)

手作業処理の 自動化プログラム作成

(ComObjを用いた、VBAを外部アプリケーションからの呼び出しによる)

デスクトップアプリケーション作成(※上記との連携含む場合あり)

(Delphi、Lazarus、C#等の開発言語による)

ホームページ作成

(WordPress+レンタルサーバによる)

初歩的なマンツーマンパソコン教室(現在はリモートのみ)

教育用言語を用いたマンツーマンプログラミング教室(現在はリモートのみ)

2020年6月13日土曜日

Lazarusから日本語対応でComObjを使ってExceVBAを呼び出す

おはようございます。

久しぶりの投稿です、ITservice雄飛です。

Lazarusから、VBAを呼び出して自動処理を書いています。
そして、Delphiで使っていたライブラリを、Lazarusに移植しております。

今回は、そのネタを。

Lazarusは、Ver2.08(64Bit)を使用しております。
Excelは、2016になります。

Lazarusは、開発環境内部の文字セットが、UTF-8です。

旧Delphi(Ver6位)だとAnsi、
新Delphi(XE前後以降)だと、Unicode。

更にUTF-8でそのままやると、Excel等とのアプリケーションの連携で苦しみます。

要は、文字化けですね。
やってみればなんてことはないのですが、
WideStringで変換を掛ければ一発で行けました。

Delphiとは似て非なるのがLazarusでもあり、その辺りは、
慣れと試行錯誤でしょうか?

以下がコードになります。

あとは、普通にVBAをDelphiで呼び出すようにして記述するだけです。

気持ち程度ですが、Delphiより処理速度が速い気もします。


procedure TForm1.Button1Click(Sender: TObject);
var
  Exl:Variant;                             //Excelを呼び出す為の器
  SheetNo,row,col:integer;          //シート番号、セル番号
  SheetName,CellValue:String;    //シートタブ、セルに入れる文字列
begin
  SheetNo := 1; //番号は1番(Sheet1)から。
  row := 1;        //Row1を指定
  col := 1;         //ColAを指定
  SheetName := 'シート名を代入するよ';         //シート名を設定
  CellValue := 'セルに文字を代入するよ';         //セル名を設定
  Exl := CreateOleObject('Excel.Application'); //ExcelのComObjを呼び出し、初期化する
  Exl.Visible := true;                                     //エクセルの表示をONにする
  Exl.DisplayAlerts := true;                           //警告(アラート)を有効にする
  Exl.Workbooks.add;                                   //ワークブックを新規に追加する

  //シート名を代入(WideStringで変換をかける)
  Exl.WorkSheets[SheetNo].name:= WideString(SheetName);
  //セルに文字を代入(WideStringで変換をかける)
  Exl.WorkSheets[SheetNo].Cells[row,col] := WideString(CellValue);
  //Excelを終了させる
  Exl.Quit;
  //Variantを初期化し、使用した痕跡を消去する
  Exl := nil;
end;


2020年5月21日木曜日

ExcelからSQLserver(ローカル)に接続する。

お久しぶりです、
ITservice雄飛です。

今回は、技術ネタを。

実家の会社の基幹となる小規模なシステムがあるのですが。

WinXP+SQLserver2000+VB6業務用アプリ、という、

すごーく、すごーーーく、古すぎる(運用20年)のシステムでして。

これがそろそろ、本当に壊れそうになってきた。

サポートはもう切れて(もう売ってもないし、サポートもしてくれない)おり。

仕方なく、Excelにて、臨時のシステムを作る事になりました。

Excelって、こういう時、本当に力になるよね…。

先ずは、データの吸出しから。

データベース(SQL Server)に接続する(ADO)
https://excelwork.info/excel/databasesqlserver/

こちらのサイトを参考に致しました。

しかし、繋がらない。

「SQLserverが存在しないか、アクセスが拒否されました」

と出る。

そこで、さらにググってみる。

すると、「接続文字列」、「名前付きパイプ」というキーワードに、
辿り着きました。

SQL Serverが接続に使用しているプロトコルを確認する方法
https://became-free.com/sql-dm_exec_connections/

ローカルで接続する場合、「名前付きパイプ」で接続する事があるらしい。
その場合、接続文字列も変わってくる。

'VBA code
con = np:sql\hoge

例えるなら、こんな感じで接続が通りました。

しかし、今度はテーブルが見つからないという。


再びググる、ググる。

すると、こんな情報が見つかりました。

【SQL Server】オブジェクト名”○○”が無効です
http://lifesiz.com/adsense/?p=30


SELECT * FROM hoge;

ではなく、

SELECT * FROM hoge_DB.dbo.hoge;

と、データベース名をきちんと明記する。

すると今度は、テーブルにアクセス出来ませんと出る。


また、ググる、ググる。

SQL Serverのオブジェクトに権限を設定する
https://www.atmarkit.co.jp/ait/articles/0111/27/news001.html


これで、必要な権限を付与し、実行すると。
無事、データにアクセスできました。

それでは。

2020年5月7日木曜日

プログラミング実践的入門!

おはようございます、ITservice雄飛です。

朝のうちに、昨日撮った動画をブログに反映していきます。

とうとう、(すごく自粛ムードに包まれた)GW、明けましたね。

テーマは、「プログラム実践的入門!」です。



Visual Studio 2019を中心に、説明しています。

途中、まだDelphiエンジニアの為、
アルゴリズムをソースコードに落とす例をDelphi言語で実践してます。

どの様に開発して、どの様にデバッグして、
どの様にエラーを克服して、どの様に学習していくのか?

その手順というか、手法を語っています。

また、IDE(統合開発環境)毎の操作の違いも、語っております。

環境ごとのキー割り当ての違いや呼び方の違いにも、言及しております。


それでは。

プログラミングに必要なもの2

おはようございます、ITservice雄飛です。

朝っぱらから記事書いております。
とうとう、GW明けましたね。
コロナ禍で自粛ムード全開でしたが。

さて、動画に入りたいと思います。

プログラミングに必要なもの2
というタイトルです。

プログラマは開発言語を使います。
その開発言語の選び方ですね、早い話が。

動画自体は、二日前に撮ってありました。



先ず、個人的にプログラマに必要だと思うものを書きました。

何を(どの様な環境)で何をしたいのか?
・Webアプリを作りたい?
・スマートフォンアプリを作りたい?
・パソコンで動くソフトウェアを作りたい?

それ(プラットフォーム)が決まったら。
何を何処から手を付けたいのか?
(どんなツールを覚える必要があるのか?)

JAVA?(フロントエンド~サーバサイド&マルチプラットフォーム)
PHP/Perl?(サーバサイド)
Phyton?((ほぼ)サーバサイド)
JavaScript&HTML5&Css3?(フロントエンド&動的HTML(Web))
C++?(デスクトップアプリ&スマートフォンアプリ)
C#.net/VB.net?(デスクトップアプリ(or Xamarin:スマートフォンアプリ))
Delphi(pascal)?(デスクトップアプリ(or FireMonkey:スマートフォンアプリ))
他物凄く沢山多数?(ShellScript,Bat,他凄い沢山…)

何がしたいか決めていって落としていくことだと思います。

また、それを勉強するうえで、自分の作りたいもの、自分が面白いと思ったもの、
そういう事を見つける事かと思います。

その中で、自分が長く付き合えそうな言語とプラットフォームを見つけることが、
プログラミングを覚えるコツだと思います。


2020年5月6日水曜日

プログラミングって何?3

ITservice雄飛です。

疲れ果て、UPして数日後に記事にしてますw。


先ず、お題の通り。
プログラミングって何?
何するの?どんな世界なの?

そんな事を中心に話しています。

プログラミングに必要な知識として、
・文章に対する常識的な読解力、記述力
・英語力(プログラミング言語はそもそも英語形式)
・論理的思考能力(物事を順序正しく整理整頓して語れるか)

この三つは必須だと思っています(私個人は)。

次にあった方が良いものとして、

・疑い力(何故それがそうなるのか、という観察力にも似た力)
  今動いているものでも、別のコードを弄ると、
  そこが動かなくなることが、普通にあります。
  そんな時、常に物事を疑い、疑問を持つことは重要になってきます。
  (但し、疑心暗鬼や猜疑心とは全然違う)

・アルゴリズム(流れ図やフローチャート等の構築力)
  動作手順書とでも言うべき、一連の動きを、
  手順にまとめて図解で示す力です。
  例えば、

    始め!
    ここから ずっと 繰り返し
      もし スペースキー 押された?
      ここから
        ウインドウ を 生成
        ウインドウ に 図を 表示
      もし ここまで
      でなければ 
      ここから
        もし ウインドウ がある?
        ここから
          ウインドウを 消去
        もし ここまで
      もし ここまで
      もし エスケープキー 押した?
      ここから
        繰り返し 終了
      もし ここまで
    繰り返し ここまで 

  「始め!」でアプリが立ち上がり、ループ処理が行われ、
  スペースキーが押された時に、図を表示するウインドウを出す、
  架空のプログラムのアルゴリズムを書いてみました。

  端的に示すと、「この様な思考が出来るか?」と言う事です。
  書籍やWebからコピーして組むだけなら、問題ないでしょうが、
  一から組む場合は、必須でしょう。

・精神的な耐性(色々な意味で)
  PCに起こる、障害やそれに伴う苦労に耐えられるか?
  メモリが足らない、CPUが遅い、処理に時間が掛かる、
  処理が間違っていて動かない、動かない原因が解らない。

  そんな時、イライラキーキー、する事なく、落ち着いて考えられるか?
  そんな能力になります。
  ある意味、デバッグやテスト、開発でも、必須に近い能力でしょう。

・たゆまぬ努力心
  ある意味必須です。
  常に努力し続けられるか?
  この一点につきます。
  コンピュータの世界は日進月歩どころか、分針秒歩の世界だと、
  私は個人的に思っています。
  その様な中に置いて、努力をしないのは、
  プログラマとして死に等しいと思っています。
  今の時代、数百近い開発言語があり、それが年毎に優劣が変わり、
  場合によっては、使っている言語が廃れてしまう事もある。
  その場合、乗り換えも考えないといけない。
  乗り換えなくても、改あh津言語のバージョンアップに対応しないといけない。

  その意味では、正に努力の放棄は致命的でもあります。

・忍耐力、我慢力
  ここは、図と幾分ズレてしまいましたが。
  要は、原因不明や、重い処理、思い通りの処理が走らない時、
  忍耐強く調べ、デバックや開発を続けられるか>に尽きます。
  本気でやる場合なら、これはもはや必須でしょう。

・文系理系を問わず、なんかなロジックでも、
 諦めずに構築/読解出来るか?
  これは、難しい処理を読めるか、という単純な意味では無く、
  ・難しい事を簡潔に判り易く書けるか?
  ・難しい事を難しく書いて、難読化させていないか?
  ・その様な難読なコードでも、簡潔化して脳内で図示出来るか?
  に尽きます。

  仕事で組む上では、必須かもしれない、ある意味。


この様な感じでしょうか?

いきなり、全てを得るのは不可能ですし、
それをいきなりしてしまったら、脳が壊れてしまいかねない(心理的に)。

と、思います。
少しずつ、じっくり得ていけばいい話だと思います。

それでは。

2020年5月4日月曜日

プログラミングって何?2

こんにちは、ITservice雄飛です。

プログラミングって何?
第二回目をやってみました。

今回はちょっとだらだらになってしまって申し訳ない…。


内容は、プログラマってこんな事してるよ、
失敗から教訓得て何か作ってるよ、
前年作ったベストは、今年から見て黒歴史…、といった、
プログラマあるあるネタを中心に話してみました。

また、規模を小さくすると良いもの出来たりするけど、
規模大きくすると、良いもの作るの、途端に難しくなったり。

開発するのも、常に失敗の連続で、
そこから経験得て、良いもの作るノウハウためたりします。

今回はだらだらなってしまったので、
次回は、きちんと内容揃えて、やってみたいと思います。

要は、場数踏んで、経験積まないと、何も作れないよ、っていう事。

で、そのためには、コツコツ小さな経験沢山積んで、
頑張るしかないよ、ってこと。

今回は、そんな感じでしょうか?

説明もだらだらになってしまいましたが。


それでは。

C# WPF(XAML) 超入門!

こんばんは、ITservice雄飛です。

今回は、C#での実演動画を作ってみました。
使用するIDEは、VisualStudio2019、
プロジェクトは、.Net FrameWork(Core)を使いました。

初めてWPF触る方や、私の様に他言語から移った場合、
少なからず悩むと思います。

その、最初の初歩の初歩(Hello Word)をGUIでやってみました。

以下が動画です。

先ず、VisualStudio2019を起動し、WPFプロジェクトを立ち上げます。

アセットから、ボタンを配置します。
で、ボタンをダブルクリックします。

どうでしょうか?
イベントハンドラの生成が上手く行きませんね。

WPFでは、フォーム側とソース側が完全に分かれています。

その為、ソース側とデザイン画面下のコードウインドウで、
XAMLを編集して様々な処理の手続きを行います。

基本は、アセットからフォームに配置して、それを下部のXAMLの編集画面で操作し、様々なイベント等の記述をします。

<Window x:Class="WpfApp7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp7"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Name="Btn1" Click="Btn1_Click"  Content="Button" HorizontalAlignment="Left" Margin="96,113,0,0" VerticalAlignment="Top" Height="90" Width="202" RenderTransformOrigin="0.5,0.5">
            <Button.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="-9.372"/>
                    <TranslateTransform/>
                </TransformGroup>
            </Button.RenderTransform>
        </Button>
        <Button Name="Btn2" Click="Btn2_Click"  Content="Button" Margin="484,122,175,213" RenderTransformOrigin="0.5,0.5">
            <Button.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="-3.099"/>
                    <TranslateTransform/>
                </TransformGroup>
            </Button.RenderTransform>
        </Button>

    </Grid>
</Window>

このような感じ。
下線部を追加します。
Click="Btn1、Click="Btn2を、コード補完でイベントハンドラを作ります。
デザイナ側はこんな感じです。

次に、コードビハインド(ソースコードエディタ画面)を開きます。


sing System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp7
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        string Hello_s = "Hello,World!";
        
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Btn1_Click(object sender, RoutedEventArgs e)
        {
           //メッセージボックス出します
            System.Windows.MessageBox.Show(Hello_s);
            //メッセージボックスの値を、Btn1のContentに代入します
            Btn1.Content = "OK," + Hello_s;
        }

        private void Btn2_Click(object sender, RoutedEventArgs e)
        {
            //Btn1のContentをBtn2のContentに代入します。
            Btn2.Content = Btn1.Content;
        }
    }
}

コードビハインド側では、この様に記述します。
記述したのは、下線部ですね。

今回は、こんな感じでしょうか?

判ってしまえば簡単で、ソースコードとデザインが、完全に分離されています。
なので、デザインのコード画面で、イベントハンドラとコードビハインドで、
互いにコードレベルで連携しながらソースと画面を連結させていきます。

個人的には、判ってしまえば簡単でいいなと思いました。

次回は、FunctionやProcedureを使ってみたいと思います。

それでは。

2020年5月3日日曜日

プログラミングって何?

ITservice雄飛です。

プログラマから見た視点の「プログラミングって何?」って動画作りました。




技術的な話は皆無で、抽象的な形を意識して纏めました。

プログラミングって何?な話なるんですが。

プログラミングとは、Programming(Program-ing:プログラム(を)している)という、ingがつく言葉ですね。

元はプログラム。

プログラムって何っていうと、運動会やお店のお食事コースのプログラム、
あれと同じですね。

ただそれが、ifをネストしたり、変数噛ましたり、ForやIfを重ねてみたりと、色々な事を実際にするだけで、コンピュータへの指示書、若しくは命令書に変わりはありません。

で、更に書くと。

そのプログラムした結果が、アプリでありソフトです。

じゃぁ、既存のもので間に合えば、それに越したことは無いでしょう。
それでは間に合わないとき、ちょっと違う、合わない、その時に作ればいい。

或いは、そのアプリとアプリの橋渡し的なものを作る、等。

例えばスクリプトとか。

等々。

プログラムもプログラミングも、基本的には手段でしかない。

更に言うと、技術も手段。

大事なのは結果。

多少の解釈の仕方により答えは違ってくるでしょうが。

が、目的と手段が入れ替わってはいけない。

その意味では、プログラミングは手段でしかない。

先ずは、その前提を知ったうえで、技術習得を目指すのもありかと。

以上、第二回動画でした。

2020年5月2日土曜日

プログラミングを始めたい人向けの配信動画作りました

動画配信はじめました。

今回第一作は、
プログラミングを始めたい人向けの、
初歩の初歩の初歩、
を想定してざっくばらんに語ってます。
以下動画です。



今回の動画配信の目的は、
プログラミング以前の基礎知識、といったところでしょうか?

動画で使っているのは、スクラッチというソフトウェアです。
こちらで使えます。

ダウンロード版はこちらになります。



後々、スクラッチや他言語での実演も予定しています。

第一回目は、心構えというか、予備知識程度の前提を中心にしました。

動画作成は半日位でしょうか?
動画の変換に予想外に時間食いました。

コンスタントに情報発信していければと思います。

単調になりましたが、それでは。

2020年4月30日木曜日

言語選び(乗り換え)の話

こんにちは、ITservice雄飛です。

今日は、言語がらみの話を。

プログラムやアプリを書かれている皆様方は、
どのような言語をお使いでしょうか?

ふた昔位(20年前)だと、
C、VB、Delphi位しか、選択肢はありませんでした。
(デスクトップ環境に限る)

しかし、今はデスクトップ環境でも山ほど言語があって、
そこに拘らないと、さらに山のように言語があり…。


では、どんな言語を選べばいいんでしょうか??

かくいう、私もその選択に苦労している一人であり。

一時期は、でストップアプリ、モバイルアプリ、Webアプリ、等々、
いろいろ手を出していましたが。

突き詰めていくと、「じゃぁ、私は何が得意なの??」という、
当たり前の問題に突き当たります。

私の場合、デスクトップアプリですね、ダントツに…。

Webアプリ構築を考えていた際に、知り合いのWeb業者さんから言われたのが、
「インフラに触れるのは怖いよ」とのこと。

で、色々ググりまくって勉強して、たどり着いたのが、
「やっぱり、使えるものは使って、それより良いもの作るんだったら作るべし」
でした。

作ったはいいけど、それ、使う人います??
これ、ですね。

作った後、動いた後はメンテナンスをしないといけない。
当たり前過ぎる事ですが。

その時、それが自分の専門であった方が、絶対に良いのは当たり前で。

個人開発での狭い範疇なら、その限りではないですが。

言語選び、慎重にじっくり考察重ねて、ですね。

PInvoke 関数~~がスタックを不安定にしています(DLLの呼び出し規約変わったよ!)で、少し悩んだ話

こんにちは、ITservice雄飛です。

今日は、C#とパソリの話題を。


今、フリーのライブラリ「Felicalib」と、パソリで勤怠管理アプリのマイグレード(更新)を行っています。

マイグレードって言っても、個人での小さな更新ですが。

元は、C#のコンソールアプリとDelphiのガワから出来た、
ハイブリットなアプリだったんですが。

Delphi使えなくなって、大幅見直しです。

ついでに、使い易いように、中身も幾分変えようかと。

そこで、更新の最中に問題に遭遇したので、その対処策を。

こんなエラーが出ました。
「マネージド デバッグ アシスタント 'PInvokeStackImbalance' : 'PInvoke 関数 '****!****.****::****' がスタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメーターがターゲットのアンマネージ シグネチャに一致していることを確認してください。'

色々ググって調べまくりましたが。
どうやら、DLLの呼び出し規約が、.net4.0から変わってたみたい。

具体的には、
[DllImport("DLL名")]
を、
[DllImport("DLL名", CallingConvention = CallingConvention.Cdecl)]
に、変えてあげます。

因みに、該当する箇所全部。

C++で作られたDLLなら、
[DllImport(@"DLL名")]
を、
[DllImport(@"DLL名", CallingConvention = CallingConvention.Cdecl)]

とします。


これで、問題なく動きました。



めでたしめでたし。

2020年4月29日水曜日

Delphiが使えなくなって困った話

さて、ITservice雄飛です。

今日二つ目の投稿は。

やっぱり雑談なんですが、Delphiから移行している話の続きだったりします。

私は、VBAをDelphiから操作、制御したりする仕事がメインだったりします。

そこで、Delphiが使えなくなり、その特技とメリットを生かせなくなりました。

さぁ困った。

まぁ、Delphiからしか呼び出せない、という訳ではないんですが。

それら、DB、SQLからVBA、その他自前ライブラリ、全部Delphi向け。

それら、全部ですよ、全部、使えなくなったんですよ。

痛いこと、痛いこと。

さぁ、どうしよう、困った。

まぁ、翻訳して書き換えるしかないんですが。

手間なので、Delphi→C#自動翻訳アプリでも作りますかね、C#で。
(そこそこの数のライブラリがある…。)

きつい状況ではありますが。

背に腹は代えられないので、早めに行動しますか…。

この連休中に、仕上げるかな・・・。


それでは。

サーフェス3Proを初期化した話

こんばんは、ITservice雄飛です。

今日は、1,2週ほど前にしたお仕事の話を、少しだけ。

お客様のご依頼で、古くなったサーフェスPCの初期化を行いました。

OSは、Windows8.1。

容量も少なくパンパンで、実質使い物にならない。

性能は悪くないので、初期化してWin10にしましょうと提案しました。

先ずは、お客様がお使いになられている情報を吸い出して、バックアップ。

次に、USBWin10メディアからブート。

が、何時まで経っても起動しない。

心当たりある状況が。

手持ちのAtomCPUのWinタブレットで、
最新のWin10USBだと、コケるという症状が。

そこで、初期のWin10USBだとインストール出来、
そこから最新にUpGrade出来たので、やってみました。

案の定、初期のWin10USBだと、問題なく起動しました。

インストール後、認証だけ済ませて、即UpGrade。

予め作って置いた最新版のWin10を入れ、セキュリティソフトを入れ、
そのまま更新を行い、各デバイスのインストール。

Win10、優秀ですね、本当に。

その後は、お客様がご使用の環境を復元し、
バックアップも戻して終了。

Win10、優秀ですが。
再インストの際には、色々癖があったりします。
(Windows全般かもですが)

LinuxやMacで使ったディスクの再利用でのインストールとか、
それらとの共生での設定とか。

私も様々なOS使いますが、
結局はWindowsですね。

実際、WindowsというOSは、PCの歴史の中において、偉大だと思います。

話は少し逸れましたが、それでは。


2020年4月28日火曜日

言語を移行しようとしている話

こんばんは、ITservice雄飛です。

特に話題というほどの話題もないので、
ちょっと、こぼれ話的な話を。

実は、諸般の事情で開発言語を移行しています。

判る人なら判りますが、結構、開発者には痛い話です。

何故、そんな事なったの?ってところですが。

元々は、「Delphi(ObjactPascal)」という言語を使っていたんですね。
19歳のころから、43の現在までずっとかな、ほぼ。

ところが。

発売当時(24年前)は、販売価格数万だった言語で、リーズナブルだったわけです。

が、様々な事情を経て(詳しいことは知らない)、結構高額な開発言語になっちゃいました。

言語自体は、20年前のものを繰り返し使ってたんですが、ITの世界飛び込んで、古いのはさすがに無理と言う事で、28万円(割引適用済み)で買いなおしたんですが。

が、最近販売方式がライセンス定期購入式(俗にいう、サブスクリプション)に全面移行され。

買った当時は、サブスクリプションを切っても、アップデートを受けられない程度だったのと、サブスクリプションの維持費がかなり高額だった(当時、年3万だった気が)為、サブスクリプションの継続を断念。

その四年後の最近、サブスクリプションに入っていないと、再インストール時のライセンス認証の手続きをさせて貰えない事が、サポートに電話して判明。


趣味で使う分には、無料版で良いんですが、そうでないと、有償版を使うしかない。
しかし、使うには買い直しが必要との事。

で、止む無くDelphiの使用を打ち切る事にしました。

で、Lazarusという無償(GPLライセンス)の開発環境に移行したんですが。

癖が強いのは良いとして、趣味以上の使い方をするには。
Delphi程強力じゃなかった、と言うか、そこまで使いこなせなかったOrz。

で色々考えた挙句、久しぶりにVisualStudio使ってみたら、凄くいい感じ。
無料でも、小規模なら仕事でも使っていいらしい。

しかも、出来る範囲が、VisualStudioの方が、何だかんだで広い気がする。

Pascal(DelphiやLazalus)の他にも、JavaScript&HTML5&CssやPhyton、VB系、時々C#も使う身としては、むしろという感じか?(一時期は軽く程度だがJavaも使ってた)

で、Pascalは卒業して、Visual Studio、Eclipce、Andoroid Studio、この三つのIDEで充分かな、と。

今後は、デスクトップアプリはC#で、スマホ系デバイス(Android)は、Javaで。
この方針で行こうかと思っています。

一時期はWeb系アプリの開発も視野に入れてましたが、端末寄りアプリに戻ります。
(Webサーバのセキュリティ管理や維持が大変)

話は逸れますが、実力不足という単純な理由ではなく、調べに調べて考え抜いた上の結論だったりします(その関係上、サイト復旧が半年ずれた)。

このご時世の世界的猛威を振るっているウイルスもそうですが。
コンピュータウイルス(というかWeb上の脅威全般)も、半年前程から猛威をふるっておりまして。

そこは、Webアプリ開発やWebのインフラ運用の専門家ではないので、今は控えますが。

それも、後々話題にできればと思います。

まぁそれも含めて、色々観察、吟味した上で、資金的体力のある企業の作った製品が、安定性が高いよね、という意味合いで移ったのもあるんですが。


趣味以外では、Pascalを使う機会は、一気に減りそうです。
残念><。

それでは。


Amazonを騙る、怪しい人からメールが来たよ。

こんばんは、雄飛です。
メール確認してたら、アマゾンからプライムの更新確認が来ました。
いや、それ、メールで来ないだろう普通。

で、軽くホイホイしてみました。
やっぱり、めちゃんこ怪しかったです。

起承転結で結論から書くと、言うまでも無く詐欺ページです。
先ず、メールが怪しい。
文章が微妙に変。文体から主語と目的を察すると、
「クレカ更新してね」になってる。

本物なら、「プライム止めますか?お得な買い物続けますか?」
で、営業トークで来るはずなんですが、そこからして違う。

怪しさ満点のHTMLメール。
こちらは、本物のアマゾンログイン画面。
Amazonのドメインから始まってます。

アドレスが、Amazonじゃないがな。
ドメインも変じゃないですか?
変なIPアドレスが引数に入ってますよ。


 ソース見ると、手書き感満載のスカスカページ。
張りぼてページと思われる。
更に、勝手に著作権表示も偽造。
Amazonの反撃(鉄槌)は、恐らく食らうでしょうね。
右側の上の畳んであるのは、恐らくはユーザ情報引っこ抜く、
危ないスクリプトか何かと思われる。

金に困ってやったのか、組織的犯行か??
そこまでは知らんですが。

まぁ、無事ではすまんでしょう。
ネットは今や、信用第一なんで。

皆さんも、怪しい詐欺にはお気を付けください。

それではお休みなさい。


2020年4月26日日曜日

ページ復旧しました。

雄飛です。

ページ復旧しました。


地味に長かったです。
結局、当初のやりたいことはWebアプリ構築できる環境だったんですが。
Web界隈のクラッキング事例が急増したこともあり、方向転換を兼ねて、
サイトを一旦閉ざしました。

で、半年間、悩み考え、アイデア揃えて考えて、また考えて相談して。

至った結論は、「そこまでしてホームページ必要か??」でした。

そこで、思い切り舵を切って、可能な限り、
信用出来て手軽なインフラを選んでみました。


で、メールサーバと(年千円)と、Google Bloger(無料)。

一桁安くなり、管理も軽くなりました。

今は、コロナショックで、大変な時期ですが。

そんな中でも、インフラ屋さんは止まらずに出社して頑張られているおかげで、
こうしてサイトが動いているわけです。

インフラ、縁の下の力持ちですね、まさに。

先ずは、今日はこのくらいで。

それでは。