株式会社シベスピ 従業員ブログ

シベスピの社員ブログ。技術・想い・経験沢山書いていきます!

【C#】YouAreAnIdiot【Windowsフォームアプリケーション入門】

御託

最近生まれて初めての胃腸炎をやりました。フラフラしながら吐いたのは大昔インフルエンザをやった時以来でしょうか。冷凍ささみのせいかと思いましたがそれなら食中毒だろという気もするので結局原因不明でした。

さて、このWindowsフォームアプリケーション入門では、毎回何かしらのアプリケーションを作りながらFormアプリケーションの作り方を学んでいくのが目的ですが、今回はFormの中でもよく使うけどちょっとややこしい動きをする「Timer」を使っていきます。懐かしのブラクラ「YouAreAnIdiot」モドキを作りながらやっていきましょう。

概要

Timer(System.Windows.Forms.Timer)は、一定時間ごとにイベントを繰り返し発生させるコンポーネントです。イベントにメソッドを割り付けることにより、一定時間ごとにメソッドを実行できるようになります。要は一定間隔で関数を繰り返し実行させることができます。

プログラム

おなじみプロジェクト作成後の画面になります。(デフォルトのウィンドウサイズが大きくなってましたがPCをWindows10にしたのが関係してるのでしょうか)


ウィンドウサイズを調整した後、「ツールボックス」から「Label」を選択してフォームに貼り付け、下記のプロパティを設定します。

プロパティ名 設定値 概要
Name lblFace 変数名になります。
AutoSize False ラベルのサイズを手動で調整可能にします。
BackColor White 背景色を白(#FFFFFF)にします。
Dock Fill ラベルをウィンドウ全体に引き伸ばします。
Font Wingdings, 128pt 絵文字用のフォントを使用します。
ForeColor Black 文字色を黒(#000000)にします。
Text JJJ 絵文字フォントの顔に相当する文字を指定します。
TextAlign MiddleCenter 文字を中央に表示します。


ツールボックス」から「Timer」を選択してフォームに貼り付けます。


デザイナの下部に「timer1」と表示されるので、下記のようにプロパティを設定します。

プロパティ名 設定値 概要
Enabled true タイマーの有効にします。
Interval 1000 タイマーを実行する間隔(ms)です。


デザイナの下部の「timer1」をダブルクリックするとコードエディタに移動し「timer1_Tick」関数が追記されるので、下記のようにコードを記載します。

private void timer1_Tick(object sender, EventArgs e)
{
    // メソッドを実行するたびに顔文字の色を反転させる
    if (lblFace.BackColor == Color.Black)
    {
        lblFace.BackColor = Color.White;
        lblFace.ForeColor = Color.Black;
    }
    else
    {
        lblFace.BackColor = Color.Black;
        lblFace.ForeColor = Color.White;
    }
}


実行すると次のような感じになります。

御託2

正直これだけだとTimerの利点があんまり見えないなと作ってから思いました。一定周期で最新の情報を取得したりするほうがよく使用されるでしょうか。いろいろ触ってみて便利な使い方を見つけて貰えば良いと思います。(丸投げ)
便利なTimerですが、実はこれに機能を盛り込みすぎるのも危険です。

Timerを使用する際の注意点

Windowsフォームアプリケーションは「イベントドリブン」、簡単に言うとボタンクリックなどのユーザー操作によって処理が行われる形式となっています。これによりイベント時(ボタンクリックなど)に実行される処理の時間が長いと、処理が終わるまでフォームがフリーズしてしまいます。
Timerもボタンクリックなどと同様にイベントを発生させ処理を実行しています。なのでTimerでも時間のかかる処理を行うと、その処理中はフォームがフリーズしてしまいます。

またTimerの動きは「処理が終わるたびに一定時間待機し、次の処理を実行する」のではなく、「一定間隔ごとにイベントを発生させる」です。つまりTimerで行っている処理が終わっているかどうかは関係なく、一定時間ごとにどんどん処理を実行します。これは「実行間隔 > 処理時間」の時は良いですが「実行間隔 < 処理時間」になると、処理が終了したあとすぐに次の処理が始まることとなり、フォームがフリーズし続けることになります。(スレッドを作成しているわけではないので、処理を実行中にまたその処理を実行するということにはなりません)
Timerに限った話ではないのですが、時間のかかる処理は別スレッドで実行(BackGroundWorkerやasync/await)するなど、フォームがフリーズしないように注意する必要があります。(マルチスレッド化は奥が深すぎるのでここでは触れません)

おわり

今回はTimer(System.Windows.Forms.Timer)を使用しました。便利さよりも厄介さがにじみ出る記事になっていますが、それだけドツボにはまりやすいコンポーネントということです。Windowsフォームアプリケーション初心者やプログラミング初心者は、スレッドやイベントの区別がついていなかったり、特に考えずコンポーネントを使用するのでなおさらです。
実はTimerにはいろいろな種類があり、それぞれメリットデメリットがあるのですが、それはFormアプリケーション入門以外の所でできればなと思います。

次回もFormでよく使うコンポーネントで何かしらを作っていきます。(つまり考えてない)

シベスピ新本社大公開!

7月17日に、シベスピ本社が移転となり、
あまりのおしゃれさに、ちょっとビビってます。
どうも内田です。

今回は、そんな新本社の紹介をしたいと思います!

場所

前本社は池袋西口でしたが、
新本社は池袋東口から徒歩7分
その名もいちご東池袋ビルです。

ビル名を聞いた瞬間、だいたいの社員が果物の苺を思い浮かべ、なんて可愛いところに。。と思うことが相次いだわけですが、いちごビルのいちごは一期一会の一期からとったとのことで、なぜかほっとしたのは記憶に新しいです。

いざ、いちごビル内へ!

エントランス。

シベスピは3階ですので、
エレベーターで3階までお越しください。


いざ、3階へ!

3階につくと、受付があります。

シベスピは3番です!

お迎えに上がりますので、少々お待ちください。

入り口を入りまっすぐ進むと

正面にラウンジ、左手にアイコスルームがあります。

ラウンジの名前はイチゴラウンジ!

ラウンジの中はこうなっています。

ラウンジを正面にして右手の廊下を進むと

3番の部屋がシベスピとなります。

入って右斜め前が会議室。右が執務室となります。

会議室はこうなっています。


そして執務室はこうなっています。
まずはロッカー!

ホワイトボード!

実際の作業場所はこうなっています

天井をみると葉っぱとライトが!
葉っぱはもっと茂るとか茂らないとか。

以上!新本社紹介でした!

【objective-c】iOSアプリ開発超初心者講座【Xcodeインストール編】

日本国内でのiPhone普及率をみて、「自分もアプリ作ってみたい」と思っている人は結構多いんじゃないかと考え、復習がてら簡単なアプリを作るとこまで書いていこうかと思います。
今回はiOSアプリを作る環境を整えるところまでやっていきたいと思います。

用意するもの

Mac(空き容量が6GB以上必要)
・コーヒー

導入手順

まずは、iOSアプリを作るための開発ツール「Xcode」をインストールしてもらいます。

「AppStore」を開いてもらい「Xcode」と検索

Xcode」(青いボードとトンカチのアイコンのやつ) を「入手」→「appをインストール」


appleのパスワードを入力し、コーヒーを飲みながらインストールを待ちます。

他のアプリ同様にLaunchpadにいますね。

インストール完了まではクソ長いですが、まったり待っててください。

インストールが完了したら「Appstore」の「入手」ボタンが「起動」ボタンに変わっているのでクリックして「Xcode」を起動します。

起動すると以下の規約画面が表示されると思うので「Agree」で同意します。

すると、Macのユーザー認証が求められるので、パスワードを入力し「OK」ボタンをクリックします。(多分2回求められます)

認証すると、必要な部品がインストールされますので、少々待ちます。

インストールが終了すれば、Xcodeの初期画面が表示されます。

これで「Xcode」のインストールは完了です。
すぐに「Xcode」を開きたい場合は、Dockに表示されたXcodeのアイコンを右クリックし、「オプション」→「Dockに追加」をクリックしてください。

次回からは簡単なアプリを作っていきたいと思います。
お疲れ様でした!!

夏バテ対策

ついに夏も本番。暑くなってきましたが、皆さんは夏バテしていませんか?
私は最近、だるさを体感しています。
暑い外と冷房の効いた室内の温度差で自律神経が乱れてだるさを感じるそうです。
食欲がない方は、冷たい飲み物の過剰摂取により消化器官の機能低下によるものです。
体のだるさや食欲がない状態になると、体力低下によりすぐには治りません。
そこで、日々対策をして夏を乗り切りましょう。
まず、クーラーや扇風機の使い方です。
室温約28度、湿度約55%を目安に、クーラーは2時間程度で切れるようにタイマーを設定し、扇風機は風が体に直接当たらないようにしましょう。温度の下げすぎは体のだるさだけでなく体温低下による血行不良・免疫力低下も生じますので、温度調節が大切です。
次に飲み物の摂取方法です。
喉が渇いてからだとガブガブと多量に飲んでしまいますので、喉が渇く前に定期的に飲むと過剰摂取を防止できます。
汗をかくと水分だけではなく塩分も失われるので、塩分の含まれた飲み物がお勧めです。
その他にも早朝や夕方の涼しい時間帯にウォーキングやランニングなどで軽く運動したり、栄養バランスの良い食事を心がけたりすることも効果的です。
夏バテになる前に対策を始めましょう。

「悲観的に準備をし、楽観的に対処せよ」

引き続き動画中毒の大泉です。行き帰りの電車が暇なので、って言い訳ですが。
新しく入社する方に「一押しアニメ教えてよ!」って聞くのも継続していますが、アニメにも飽きてきて・・・
ということで最近は名作ドラマの見返してはまっていて、特に『山崎豊子』作品ばかり見ています。
激動の時代のリアル、いいですよねぇ。
ということで今回はその中でも『不毛地帯』について、また、主人公『壱岐正』のモデルの一人『瀬島龍三』氏の大好きな言葉を紹介します。

不毛地帯』ドラマの感想

あらすじはwikiなど見ていただければと思いますが、改めて「ビジネスマンとしてのダイナミズム」を感じ楽しめました。
ただ挑戦と成功みたいな単純なストーリーが好きなだけかもしれませんが。
役職や環境、立ち位置的なものに捕らわれず、熟慮し、自分なりの解決先を導き出し、困難に果敢に挑んでいく姿はただただ格好良いですね。
仕事と家族の間で迷い、悩み苦闘する、みたいなところも、人の親になったからでしょうか、共感できる部分が多く有りました。
改めて見ると「困ったときの女性頼み」みたいな部分も多くて、島耕作シリーズみたいでもあったんだなぁとも思いました(ちょっとズルイ)。
石油発掘プロジェクトでの入札成功や実際に石油が出たときなどは、普通に泣けますね(笑)。

『瀬島龍三』氏の言葉

『作戦を立てるときの心構えとして、私たちは「悲観的に準備をし、楽観的に対処せよ」と教育されたのですが、これはいまでも、いろんなところに生かすことができるのではないでしょうか。人間というのは、どうしても楽観的に準備をして、そして事が起きたならば悲観的になりがちですから。』
私は根がネガティブなので、「悲観的に準備」はしているつもりだったのですが、社会人になってからこの小説を読んで、そしてドラマを見て「全然足りていなかった」「”なり”で仕事してた」と反省したことを今でも覚えています。
「とことんまで検討する」「熟慮する」と言葉にすると簡単ですが、『あらゆる事象を想定し最悪のケースに備える』って本当に難しいですよね。
私なりの対処法としては「計画の計画」のように実工程を実施する前の時間、タスク整理・検討を大事にしています。
いきなり「計画を立てる」のではなく、「計画を立てるための計画を立てる」みたいなイメージでしょうか。その準備工程を踏むことで「熟慮」に近い形ができているかな?と思っています。

繰り返しになりますが、私は根がネガティブなので、「楽観的に対処せよ」は苦手です(笑)。
ですが、「悲観的に準備」した状態があれば、「起きてしまったことはしゃーない。検討はしてたしある程度はその方向性でー」と30代前半よりはだいぶ「楽観的に対処」できるようになったと思います。

まとめ?

ここまでがあまりまとまっていないので恐縮ですが、、、
最初は自分なりで良いと思います。考えたんだと。熟慮したんだと。
その結果問題が発生したときにどこまで慌てず、下向かず、立ち向かえるか?
そして振り返りを行って何を掴むか?次に繋がるか?
そういった繰り返しが仕事を楽しくして来たんだなぁと思いましたし、これからも仕事を楽しくする指針になっていると思い返して皆さんへ紹介しました。
もし気になって小説読んだりドラマを見たりしたら感想声掛けてくださいね。

以上です。

部長の小言②

小言の第二段です。今回は今月の夕会でもお話した考えることの重要性について書こうと思います。
いくら考えがすばらしくても行動に移さなければ何も意味はなさないため、もちろん行動することはとても大切ですが、考えて行動する事の重要性で、心に刺さった言葉を紹介したいと思います。

一つ目はマザー・テレサの言葉の「思考に気をつけなさい、それはいつか言葉になるから。言葉に気をつけなさい、それはいつか行動になるから。行動に気をつけなさい、それはいつか習慣になるから。習慣に気をつけなさい、それはいつか性格になるから。性格に気をつけなさい、それはいつか運命になるから。」です。
運命を決める根っこにあるものは思考であり、運命を決定付ける第一歩は思考ですって事ですね、これは人生の経験で非常に納得のできる言葉でした。逆に考えると、あまり考えないと言葉は軽率になり、行動も軽率になり、もちろん訪れる結果もあまりよくないように思います。
また、経験として実感できたのは常駐先の現場拡大でした。我々の仕事の特性上お客様先にて常駐作業をする事がとても多く、取引先の拡大はミッションとして、会社から与えられていました。そこで、どうすれば拡大できるか常に考えていました。そうするとお客様と話をする時は拡大を意識した会話になり、同じ作業でも拡大を意識した行動になり、また周りで聞こえている会話も拡大に繋がりそうであれば自然と聞き耳を立てる等、何気ない日常も拡大する事に対して意識が習慣化されており、その結果拡大に繋がった経験がその言葉を実感できる体験でした。

二つ目は、結果的に同じ様な事を言っていると思いますが、前の会社でよく言われていた言葉の「何も準備(考えて、行動)していなく、良い結果が出たとしても、それはたまたま運がよかっただけ」です。
特に何も考えていなくても、運がよければよい結果が出ることもしばしばあります。しかし、それはたまたま運が良かっただけで、良い結果が出たとしても、何も考えなかった事に対する自分の戒めにしています。やはりこの言葉も何も考えなければそれなりの結果しかないよということですね。

また、気をつけれなればならないのは思考の深さだと考えています。部下に対して「考えてるの?」と聞くと皆さん結構ムッとします。それもそのはずで、人間は思考を止めることができず常に考えているため、言葉では「考えていませんでした!!」と答えても、心の中では「考えとるは!!」と思っている事が多く、私自身も経験のある話です。
(ネットで調べたのですが人間の思考の80%は妄想であり、有効で現実的な思考は20%に過ぎないようです。)

では何が深さに繋がるかというと、この話の方法論の詳細は長くなるので別の機会に書こうと思いますが、例えば創造の幅を広げる(検討事項をシミュレーションしてみる)とか具体性を持たせるとか、複数パターンを考えるとか、そういったところではないでしょうか。また思考の深さがアウトプットとして差が出るのは「考えてるの?」に対し返答し、返答に対して「それは何でなの?」といった突っ込みに返答し、さらにその返答に対して突っ込みがきて、というやりとりをどれだけ多くやりとりができるかに現れてきます。よくあるパターンが「考えてるの?」「考えています。これこれこうです。」「それは何でなの?」「・・・なんででしょうかね」これは考えてるとは言い難いです。なので、今後は取り敢えず2回くらい突込みがきても、回答できるくらいまで考えましょう。

呪いの先に

ブリーダー事業も面白いかもと考えている佐藤です。

前回、エビ抱卵の記事を書いてから4ヶ月以上経ってしまいました。
社内では、あまり興味を示してもらえなかったので、書き続けようか、辞めようか、悩んでいたのですが、
先日、面接時に、何か質問ありますか?って尋ねたところ、エビは無事産まれたのですか?って質問があり、
気にしてくれている人もいるんだなと、嬉しかったので、続きを書きます。
※もちろん、その子は採用です!

エビの卵って孵化するまでに1ヶ月くらい掛かるようで、
かなり時間が掛かるんですよね。。。。

足でわしゃわしゃと卵に空気を送ったりと、見ていてかわいらしいのですが、
1ヶ月は長い・・・

帰宅後に毎日水槽チェックするのですが、エビがお亡くなりになっていると、
卵持ちかどうかハラハラ、ドキドキと、心臓に悪い。

水換えも、コケ掃除も、水質に影響しそうで怖くて出来ないし、
でも、やらなければやらなかったで、水は汚くなっていくし。。。
どうしたものかと葛藤の日々を過ごしていること、1ヶ月、あれ、壁に白いゴミが増えてる

ん、よく見ると少し動いてる?
携帯のカメラでズームしてみると、、、 おお、エビの赤ちゃん!
こんなに小さいのかとびっくりですw

そして、面白いのが、赤いエビから産まれてきたのに、成長すると
いろんな色に変化していく。

黒や黄色、赤、透明と、水槽の中がカラフルになってく。

呪いの連鎖も無くなって、ようやく増えるようになってきたかと思ったら、
エビの赤ちゃんと同じくらいの大きさのおたまじゃくしみたいなのがいるではないか。。。
それも2匹。なんとアフリカンランプアイ(めだかの一種)の赤ちゃんではないですか。

こっちは全然気が付かなかった。

エビだけでなく、アフリカンランプアイまで!!



これは隔離して成長を見守るべきなのか!

いや、エビの赤ちゃんも多いし、水草もいっぱいだし、そのまま行こう!
きっと大丈夫!!

としたのが失敗。。。

気が付くと居なくなってました。。。

誰かに食べられたに違いない。

やっぱり隔離するべきだったと後悔しました。

なので、次産まれた時のためにと、隔離網を購入して待機。
そしたら、すぐに赤ちゃんが登場!

しかし、隔離して匿うこと2週間。中々大きくならない。。。
エビは目に見えて大きくなるのに。。。

何故、お前は成長が遅いんだ!

もっと食えー!

やきもきすること更に2週間、少し大きくなってきたので、網を撤去することに。
と、いうよりも、隔離網が汚れてきて、そこにエビやオトシンが群がり
隔離網にオトシンクルスが挟まってお亡くなりになる事故が。。。

何かが生まれると、何かが亡くなっていく。。。
これも自然の摂理なのか、それとも管理能力の無さなのか、、、
はい、完全に後者ですよね(><)

水質も落ち着いて、最近は、生まれるのと、亡くなるのが
交互に起きる感じだったのですが、、、、

f:id:chivsp:20180615161201j:plain


続きは次回、「未開の地開拓 先遣隊の運命や如何に」で、記載しますね。