Sachool Engineering Blog

プログラミング学習の記録

もうすぐ3ヶ月。。

| Comments

こんにちは。東京オフィスのイッセイです。
ユーロが始まりましたが、僕の推し国は開催国のフランスです。

今回は、もう少しで入社して3ヶ月になるという事で現在の課題の振り返りと日々感じる事を書いていきたいと思います。

アルゴリズムを考えた!

このブログでも書きましたが、入社して電卓アルゴリズムの作成から始まりました。 アルゴリズムができたら、それが正しく出来ているのか実際のコードで書いてみて検証をしていきました。ここで初めて、コードを書くようになったのですが(C++)ここで自分が作成したアルゴリズムが間違っている事に気付く訳ですね。 作成したアルゴリズムどおりに作成するとそれはそれは書けたもんじゃ有りませんでした。 コードを書いて初めて分かる事もありました。

アルゴリズム作成 → 検証 → アルゴリズム修正 

こんな流れでの課題を、ソートと検索アルゴリズムにおいても行いました。

結果から逆算して、一つ一つ論理的に組み立てることや、どうしたらもっと効率的に動かせるか、という事を捻り出さないといけないのですが、これが全然出来てなかったですね。

ただ、実際にコードを書いてそれが動いた時、
本当に動いたー!と思って結構嬉しかったですね。

アルゴリズムを考える作業は、エンジニアとしての基礎になると思いますし、とても大切な事だと思います。今になって痛感している事でもあります。

クラス図とシーケンス図の作成

アルゴリズムを考える課題が終わり、オブジェクト指向の学習に入りました。 これは設計側の考え方ですね。

オブジェクト指向やMVCは、システムの仕組みや構成を理解するものですが、この学習をしてから、自動販売機のクラス図を作成しました。

システムを、オブジェクトの相互作用で構築しようというのがオブジェクト指向ですが、
このインスタンス(オブジェクト)を生み出すのがクラスです。

複雑に絡み合っているイメージのあるシステムですが、それを図にして分かり易くあらわそうとしたのがクラス図です。
自動販売機のクラス図という事で、これまた相当の苦戦をしました。というより現在進行形です。。

今回は、皆さんのように詳細を書くというよりもかなりの修正を行ったのでパニックになりながら感じた事を簡単に書いていきたいと思います。

まず、クラス図を作成する上で大切な事は、それぞれのオブジェクトの役割を明確にする事。
その為には自動販売機のことをよく理解していなければなりません。
これは、アルゴリズムでも同じでした。
自動販売機で考えると、

  • 入金する
  • ボタンを押す
  • 商品を取り出す
  • お釣りを取り出す

こんな感じですかね。

これを基に作成を始めるわけですけどそもそも使用者目線ですし、基本的にオブジェクト指向の理解が曖昧だった為、この視覚的に見えているものに引っ張られて、内部構造を良く考えられてませんでした。
イベントに対して、何がどんな役割を持って動作するのかを全く考慮していません。

そこから、修正に修正を重ねるほど、自ら複雑にしていました、
とりあえずの継承みたいになっているクラスや、自動販売機にありそうな物体や仕組みに名前をつけただけのクラス図になっていました。

その後、シーケンス図を書いて処理の流れ、オブジェクトの役割を明確に理解しようという目的だったのですが、何がなんだか分からなくなり一人混乱している時間が長かったです。

まあそれも当然です。
そもそもの基礎概念の理解が出来ていないので、どこが間違っているのかも分かっていなかったからです。
原点に立ち返り、基礎的なところの復習を行い、再度整理をして作成を行ったのですが、気付けばクラス図の作成を始めて1ヶ月以上経っていました。

役割を明確にして、どうオブジェクトを抽出していくのか。
そしてそのオブジェクトはどう周りとやり取りをするのか。

1ヶ月経ってようやくまともに考えるようになり、それまで多くの時間を無駄にしてしまってと思います。
何をするにしても、基礎的な事への理解が大切で疎かにしてはいけないと痛感しております。この期間を、その勉強期間だったと無理やりポジティブに考えようと思っています。

まとめ

入社してもうすぐ3ヶ月になります。正直進捗的には遅れています。 論理的に考える力や、学習の仕方が人と比べて明らかに欠陥していると感じました。
結論を急いでしまったり、時間の経過と共に本質的なところから少しずつずれてしまっていたり。気付かないうちに様々な要因に流され、目的を見失っている事もあったんだと思います。
課題の目的は、これから先エンジニアとして闘うための準備であるのですが、課題の提出が目標になってしまっていたのでは、、と感じています。

課題が出来ると、少なからず達成感を味わいますし、喜びもあります。
しかしその先にある、もっと大きい達成感を味わう為、喜びや誇りを感じれるようになる為に、もっともっと、考え抜いて脳みそを鍛えていかないといけないなと、感じています。

改めてですが、テスト業務を通じて再度凄い仕事だなーと実感しました。
未経験からエンジニアを目指す方、決して大変な事ばかりではないすばらしい職業です。
考えて考えて考える事。粘り強く考える事から逃げなければ結果はついてくるはずです。頑張りましょう!!
(自戒の意)  

そんな感じで、今回は終わりたいと思います。

Comments