スマート駄目リーマンの忘備録

旅行記、キャリア論、世相分析など思ったことを書き連ねます

If文の不等式の落とし穴(VB.NET)

 

 

範囲の判定と条件分岐

 変数を取得した際に特定の範囲内とそれ以外で、条件分岐を行うことは度々あります。

 例えば変数vが0.05から0.15の範囲内であれば、範囲内と判定。それ以外を範囲外とする簡単なプログラムを作成します。

初級者の落とし穴

 おそらく初級者は下記のように書いてしまうと思います。場合によっては数値の判定に慣れていない中級者も同様のミスを犯すかもしれません。

 しかもこれ、デバックで引っかからないので、ミスに気付けません。

 このプログラム、何が駄目か分かりますか?下の赤枠部分が間違いです。数学的な表記では正しいのですが、プログラム的にはNGです。

正しい表記

 And条件で表記しないと、プログラム上では正しく認識して貰えません。意識しないと意外とハマる落とし穴なので、注意が必要です。

 

ベンチャー企業へ就職する際の注意点

 

 

心を新たにベンチャー企業へ挑戦

 特に日系の大手企業の硬直的な制度や面倒な人間関係に嫌気がさして、ベンチャー企業に入社する人も多いことだろう。

 ベンチャー企業は、まだ設立間もないので、人間関係もフレッシュで、評価システムも公平だろうという期待を抱くであろう。

 サイバーエージェントのようにベンチャー企業から大手に躍進する姿に心を躍らせて、自分も会社と一緒に成長したいという希望もあるだろう。

ベンチャー企業の実態

 しかしながら、ベンチャー企業の10年後生存率は1割ほどであり、会社と一緒に自分が成長できるどころか、そもそも、その会社が5年後に存続しているどうかも怪しいのが実態である。成長はおろか、現状維持に腐心することの方が多い。

実はズブズブな人間関係

 ベンチャー企業の設立背景を調べると、学生時代に同じ研究室の仲間や学生団体の仲間と意気投合して設立。前職のキープレーヤーたちがスピンオフして設立。前職の業界内のつながりで、気に入った仲間を引き抜いて設立。大体が、こんな感じである。

 大抵のベンチャー企業は、設立時に主要な役職の人間関係が既に出来上がっている状態である事が多い。 

 つまり、中途でその会社に入社しても、中核人事の人間関係は既に出来上がっており、そこで出世するのは、中途採用では実力があっても意外と難しいかもしれない。

 社長も人間である以上、採用時には完全実力主義と謳っていても、共同で会社を立ち上げた古参メンバーをどうしても贔屓してしまいがちになる。むしろ評価の不透明性は大企業より大きいかもしれない。特に社長秘書などは、業務能力など度外視で、男性社長が気に入った女の子を採用するなんて、ザラである。

 また、社長の側近のナンバー2は社長の機嫌を損ねないように常にヨイショしなければならず、気苦労が絶えない。テレビドラマのように膝を突き合わせて、熱く意見を交わすことなど不可能に近い。ナンバー2は社長のイエスマンにひたすら徹するのだ。

福利厚生は絵に描いた餅

 ベンチャー企業にありがちで、今は未整備だけど、二~三年後には~の福利厚生を整備する予定だと面接時に聞かされるが、現在整備されていない福利厚生はこれからも整備されない可能性が非常に強い。

 特にベンチャーはスケールアップが第一優先なので、内部留保を既存社員に還元せずに新たな社員の採用や新たな事業所の設立に回しがちである。

 

会社のキーマンに気に入られるかどうか

 つまるところ、創業時に会社のキーマンに気にいられて、中核メンバーになり、おいしいポジションをGetできるかが、ベンチャーで成功できるかどうかの運命を決めると言っても過言ではない。上記の様にむしろ大手よりも実力主義ではない部分も多い。

 

まとめ

 SNSなどでは、スタートアップに入社して、会社と一緒に成長などと言ったきらびやかな言葉が並ぶが、実情は以上で述べた通りである。

 完全実力主義のフラットな環境を真に望むのであれば、小規模でも良いので自分でビジネスを立ち上げる事が近道である。

 現在は個人投資家として株の売買をしたり、ウーバーイーツをしたり、アニメのグッズを高値で転売するなどして儲けている人は数多くいる。

VBの計算データを簡単にエクセル出力する方法

VBのアプリ内の計算をエクセルで手軽に確認したい

 王道はエクセルを開いて書き込みますが、意外と面倒です。そこで、下記のようにstreamwriterを使って、,(コンマ)でデータが区切られたcsvファイルを出力すれば、エクセルでファイルを開くことが出来ます。

Dim i as integer

Dim ar(19,4) as double 'データ出力用の一次元配列の定義


Dim Path As String 'ドライブ等のパス用
Path = “C:\SDK\2D\”  'CドライブのSDKのフォルダ内の2Dのフォルダ内に保存

Dim FileName As String
FileName = Path & record & ".csv" 

'CドライブのSDKフォルダ内の2Dフォルダ内にrecord.csvというファイル名で保存




'/////////////////////各種計算 開始///////////////////////////////

'→ここでは計算結果が20行4列の分量とする

'/////////////////////各種計算 終了/////////////////////////////




'20行4列の計算結果を出力

For i=0 to 19

Dim sw As New System.IO.StreamWriter(FileName, True, System.Text.Encoding.GetEncoding("shift_jis"))

'True→既にデータがある時はその下にデータを追加

sw.WriteLine(arr1(i,0) & "," & arr1(i,1) & "," & arr1(i,2) & "," & arr1(i,3))

'配列を,区切りで1行ごとに出力 

'最初は arr1(0,0) , arr1(0,1), arr1(0,2), arr1(0,3) 

'次の行は arr1(1,0) , arr1(1,1), arr1(1,2), arr1(1,3)で

'最終行  rr1(19,0) , arr1(19,1), arr1(19,2), arr1(19,3) まで出力

 sw.Close()

Next i

このようにすると全ての計算結果をエクセルに20行4列で綺麗に出力が可能です。

出力データを加工したい場合にはファイルを一度保存し、ファイルの種類をエクセルブックの形式で保存すればOKです。

SQLデータ出力時の文字化け対処方法

 

 

SQLデータをCSVに出力時の文字化け

 phpプログラミングとSQLサーバーの基本的な操作方法を覚えた。SQLサーバーに入力データが順調に蓄積されている。

 社内でこのデータを共有するために、CSVファイルに出力しよう。

→あれれ??!! せっかく出力したデータが文字化けしている。これじゃ社内で共有出来ない。こんなトラブルありませんか?

原因の大半は出力文字コードの設定の間違い

 とりあえず、ファイルには出力がきちんと出来ていて、文字化けだけが起きている場合には、出力文字コードの間違いが原因であることが多いです。

文字化けが起きた時の出力設定

①テーブル画面でエクスポートを押す。

②詳細を選択

③ファイルの文字セット→SHIFT-JIS、フォーマット→CSV と設定

④下にスクロールして実行。

 

文字化け解消

 個人情報なので、お見せ出来ませんが、これで出力ファイルの文字化けが解消されました。

達人プログラマー

 

 

個人でのアプリ開発から複数人のプロジェクトへ

 個人での小規模なアプリケーション開発からスタートし、徐々にステップアップし、複数人での共同作業でコーディングに取り組み始めると絶対にやりにくさや違和感を感じると思います。

個人の時は楽しかったし、上手くいってたのに

 大規模なシステム開発ですと、プログラミング技術だけでなく、それらをどうやって管理、運用するかといったプログラミングマネジメントの力が問われていきます。

 そうした時にそのマネジメントがしっかりしていないとプロジェクトメンバーの力が上手く発揮されず、メンバーに精神的ストレスを与えてしまいます。

 さらにマネージャーもプロジェクトの進行の遅れに苛立ちや焦りを感じることになると思います。

達人プログラマー

 自分一人で完結しているプロジェクトでは、多少機能が被っていたり、その機能が別の機能に波及していても、自分さえコードをしっかり理解し、管理が出来ていれば、問題無くプロジェクトは遂行されます。

 しかし、複数人が携わるとメンバーそれぞれが担当した機能が独立していた方が、メンテや更新が楽ですし、ミスも起こりにくいです。

 このような複数人が携わるシステム開発をミスなく効率的に進めるためのノウハウを「達人プログラマー」という本は余すことなく伝えてくれています。

プロジェクトメンバーからマネジャー全てに有益

 達人プログラマーで言及されているルールや考え方をプロジェクトメンバーからマネージャーまで全員が共有できていれば、おそらくプロジェクトの効率はかなり向上すると思われます。

 個別の文法は理解して、コードもそれなりに書けるプログラマーが読むことで、実力をワンランク向上することが可能です。

 また、いまいちプロジェクトの運営がうまく行ってないマネージャーが読むことで、運営の無駄を事前に回避することも可能だと思います。

 コードがきちんと書けるメンバーが揃っているのに、何となく上手く運営出来ていない場合の、その何となくを解決してくれる本です。

初心者は基礎の習得と経験を優先

 完全な初心者は、文法理解と経験の蓄積を優先しましょう。どんなプログラムでも良いので、お客様に納品する経験を積んでいき、その上で達人プログラマーを読むと自分の仕事の無駄な部分などに気付かされて有益だと思います。

 

 

日本語ファイル名のイメージファイルはweb上で表示エラーになる恐れ

 

ロカール環境でテスト

 下の右図のような日本語が混じったjpgファイルをhtmlファイルに埋め込んでも、ローカル環境ではきちんと表示されてしまいます。

いざアップロード

 ローカル環境で表示されるので、いざwebサーバーにアップロードすると表示エラーになってしまいます。

Webにuploadするファイル名はアルファベットが原則

 ローカル環境で、htmlファイルのイメージが上手く表示されてしまう点が非常に厄介です。

 当初、イメージファイルが表示されない原因はネットワークやサーバーのエラーなのではと疑って、ドツボにはまりました。そして、無用な検証時間を浪費してしまいました。

 このようなトラブルを避けるために、webサーバーにアップロードするファイル名は原則日本語というルールを組織全体で共有することをお勧めします。

別シートのボタンによるマクロ起動エラー対処法


Sheet3のデータをB列をキーにしてソートするプログラム(Sheet1のボタンで起動する)

おそらく通常ですとコンパイルエラーが発生すると思います。
一部の関数(下記では.sortによるキーソート)では、シートをアクティブな状態にしないとプログラムが走りません。
このような時は下記のようにWorksheets("Sheet3").Activateで対象シートをアクティブな状態にしてから、関数を走らせるとコンパイルエラーを回避出来ます。

Sub 並べ替え()

Worksheets("Sheet3").Activate

Sheets("Sheet3").Range(Range("B2"), Range("C" & Cells.Rows.Count)).Sort Range("A1")

End Sub