テクノシップブログ

田舎育ちで文系でもITの世界へ

『週刊』エンジニア奮闘記④「業務理解のコツ5つ」【第26号】

 こんにちは!

 テクノシップブログです!

 梅雨が明けたと思った矢先の大雨で参ってしまいますよね💦💦

 でも、今日もPC片手に頑張って参りましょう!

 

 さて、私は7月からOJTという形で実際のプロジェクトに参加しているのですが、

そこではまず、「その業務を覚える」というところからのスタートです。

 一言で「業務を覚える」と言っても、そう簡単なことではないはず。

しかし、効率的に業務を覚えて、早く次の段階に進めるように日々模索中です。

 

 OJTを開始してはや2週間。

 実際に効率的に業務を覚えることができているかどうかは定かではありません。

 しかし、自分なりに実践している方法を振り返っておきたいということと、

私と同じように新しい業務を覚えなければならない立場にいる人のためになれば

との2つの目的で、今回の記事を書かせていただきます。

 

 

1. 仕事を早く覚えるための実践プラン5選

① 全体像を理解する

 まずは、「全体像を理解する」ということです。

 それぞれの業務には必ず「スタート」と「ゴール」があるはずです。

 スタートとゴールの間のポイントとなる業務に焦点を当てて理解するようにし、

結果的に、「全体としてこのような流れになるのだな」ということが分かるレベル

までを目指します。

ポイント①

「この業務は全体的にこのような流れになる」ということを説明できるにする。

 

② 目的を意識する

 続いては、業務全体における個別の業務について、「なぜこの業務をするのか

ということを強く意識して考えてみることです。

 「なぜ」が分かるとその仕事が楽しくなります。これは逆に捉えれば、

「なぜ」が分からないからその仕事がつまらなくなると言うこともできます。

 だからこそ、「この業務はなぜ行うのか」という目的を自分で考えたり、

他の社員の方に質問したりして、明確にしていく作業を地道に行いましょう。

ポイント②

各業務の「目的」を明確にして取り組むようにする。

 

③ 仮説検証をする

 次は、プログラミングにおけるエラー対処において最も大切な「仮説検証」を

他の業務においても使えるため、3つ目としてご紹介します。

 仮説検証とは、自分が直面している課題に対して、「これが原因だからこう

なんじゃないか」、「こうすれば解決するんじゃないか」などと、自分の中で

仮説を立てた上で、実際にアクションに起こしてみます。

 

 この仮説検証がなぜ役に立つのかというと、自分の仮説通りだった場合、

成功体験として強く刻まれることになりますし逆に仮説が外れた場合、貴重な

失敗体験として記録できるためです。

 どちらの場合も、その後の自分の成長において欠かせない経験値となります。

 

 だからこそ、どのような業務に対しても、実践していきたいと考えています。

 ちなみに仮説検証のやり方については、以下の記事がとても役立ちます!

project-facilitator.com

ポイント③

仮説を立てて、行動して検証することを繰り返す。いつになっても。

 

④ 自分で業務フローを書いてみる

 この作業は本当に役立ちます。

 この方法は私が先輩社員の方からアドバイスを受けて試した方法なのですが、

「自分で分かっていないところ」が非常に明確になります。

 

 これはおそらく、ただ考えるだけでなく、自分の手で作成してみたことで、

分かっていないところがより明確になったのではないかと考えているのですが、

このサイクルを繰り返していくことで、徐々に分からない部分が消えていき、

最終的に、自分だけのオリジナル業務フロー図が出来上がっているはずです。

 

 自分の手で作成したものですので、頭から離れることもないでしょう。

これにより、業務を覚えるスピードが格段に早くなります!!!

 

 私は業務フロー図を自作するときは、「draw.io」というサービスを使用して

います。様々な図の描画に長けているので、ぜひ利用してみてください!

 

app.diagrams.net

ポイント④

手を動かして考える。

 

⑤ 業務を「見る」のではなく、「体験」する

 業務を覚えるとき、得手して「最初は見て覚えなさい」と言われるはずです。

しかし、これって非効率だと思いませんか?

 自分で体験したことがないものに対して、どのように理解していけばいいので

しょうか。自転車の乗り方を、側から見ているだけで理解できたら天才なのと

同じように、業務を見ているだけで理解できたら尚更天才です。

 

 だからこそ、いち早くその業務を体験してみることが重要だと考えます。

最初はミスしたっていいじゃないですか。そのミスをフォローできない上司は

上司とは言えないでしょう。

 とにかく早く自分で触ってみること、これが大切だと考えています。

 私も恐れずに「早く実際の業務に触れさせてくれ」と声をあげていきたいと

思います!!

 

ポイント⑤

いち早く業務を体験する。させる。させてもらえるよう声を上げる。

 

 

2. まとめ

 今回は、プログラミングに関することではなく、業務一般に関することを記事に

させていただきました。

 

 エンジニアとして働いていく中で、プログラミングのスキルの上達も勿論大切

ですが、それ以上に一般的な業務スキルが大切になってくる瞬間も今後頻繁に

訪れることが予想できます。

 

 だからこそ、エンジニアとしての将来に関係ないや、ではなく、米粒程度のこと

でも得られるなら勝ちだと考えを180度変えて、今後も頑張っていきたいと

思います!!

 みなさんも一緒に頑張って参りましょう。

 

 

3. テクノシップ第26号プチ編集後記

〜この3連休で久々に地元に戻ったのですが、東京と比べて、静かすぎるwww

 まるで時が止まったかのように、何一つ音が聞こえない時間が何度もありま

 した。たまには静寂に身を委ねてみるのもリフレッシュになっていいなと

 改めて感じた3日間でしたね。〜

 

 

 

 

『初心者の方必見』Flutterでのアプリ開発に便利なツール10選!!【第25号】

                   

 こんにちは!

 テクノシップブログです!!

 

 皆さんこの間の台風の時は大丈夫でしたか?🌀🌀

 私は念のために在宅勤務に変更しました。結局天気は荒れませんでしたが、

万が一の時のための備えって大切ですよね🤔

 

 さて、私はFlutterを使用した研修を行なってきたとお伝えしてきました。

研修後も学びを進めているのですが、Flutterを用いたアプリケーションの実装に

おいて、「これ使えるな!」と思えるツールやサイトなどが沢山あることに

気づきました。

 

 そこで、自分自身の振り返りと、今からFlutterを使用したアプリケーションの

実装をしてみたいという方のために、

 

    Flutterを使用したアプリケーション開発に

      便利なツールやサイト10

 

と題して、ご紹介してみたいと思います!

 

 

 

1.  Flutter開発に便利なサイト編

① Flutter公式サイト

 まずは何と言っても、「Flutter公式サイト」です。

 

 とにかく解説が充実しており、Flutterというものを一から理解するのに最適

だと思います。

 

 「Get Started」というコーナーで、Flutter開発のための環境構築からスターター

アプリの開発まで、一連の流れを体験できるのでとても便利です。

 

gyazo.com

 また、「Widget Catalog」というページでは、Flutterでの開発には欠かせない

要素である、「Widget」について、どのようなWidgetがあるのか、どのような

使い方ができるのかなど、分かりやすく解説してくれているので、おすすめ

です!!

 

 全て英語なので、「英語が苦手...」という人は苦労するかもしれませんが、

内容は一番信頼のおけるものですので、おすすめとさせていただきます。

 

 Flutter公式ページはこちらから!

flutter.dev

 

 Widget Catalogページはこちらから!

docs.flutter.dev

 

Material Design Palette

 次にご紹介するのは、「Material Design Palette」です。

 これは、Google社が提供している基本デザインである「Material Design」を

使用したデザインについて、アプリの配色をどのようにしたいかを検討するとき

便利なサイトとなっております。

 

 やはり配色を決めるときに、実際にどのような色具合になるのかということを

自分の目で確認したくなりますよね?

 そのときに、このサイトを使用すれば、自分が選んだ色の組み合わせが実際に

どのように見えるのかを確認することができます!

 使い方は簡単で、チェックしたい色の組み合わせを選ぶと自動的に表示してくれ

ます。UIにしっかりとこだわるならこのサイトを使用する価値は大いにあります。

 

 Material Design Paletteはこちらから!

www.materialpalette.com

 

③ Dribbble

 次にご紹介するのは、「Dribbble」というサイトです。

 これは、世界中の何百万人というデザイナーが、自分で作成したデザインを

公開しているサイトになります。

 

 思わず使ってみたくなるような素晴らしいデザインが沢山展示されているので、

これらのデザインからインスピレーションを受けることも多々あるでしょう。

 

 Flutterでのモバイルアプリの開発のための参考になるデザインも豊富です!

 

 

2.  Flutter開発に便利なツール編

① App Icon Generator 

 ツール編、まず最初は、モバイルアプリのアイコンのデザインを簡単に作成

できるツール、「App Icon Generator」です。

 

 アイコンに使用したいデザインファイルをアップロードし、適用したいデバイス

の種類を選択すれば、あとは自動的にアイコンのデザイン作成が実行されます。

 そのファイルをエディターに読み込めば、実装は完了となります。

 

 App Icon Generatorはこちらから!

appicon.co

 

② ColorZilla

 次にご紹介するのは、GoogleChrome拡張機能である、「ColorZilla」です。

 この拡張機能を導入すると、上の写真の右上のように、ペンマークが現れます。

現れない場合は、「拡張機能→ピン留め」をしましょう。

 

 「Pick Color From Page」を選択すると、その時点の画面にある色のコードを

読み取ることができます。

 アプリの実装で、自分で細かく配色を決めたい場合もあると思います。

その時は、このColorZillaを使えば、参考にしたいサイトで使われている色の

コードが分かるので、それをアプリの色設定のところで使用すれば良いことに

なります。

 

 ColorZillaはこちらから!

chrome.google.com

 

Google Fonts

 次にご紹介するのは、「Google Fonts」です。

 これを使うと、Googleが提供しているウェブフォントを自分のアプリ開発

使うことができます

 

 様々なフォントが用意されているので、とても使いやすいツールになります。

 導入にあたっては、以下のサイトが参考になりますよ!

 

flutternyumon.com

 私が実装した時は、GoogleFontsのファイルをエディター上に保存して、

それを読み込むことで使用可能にするという方法をとったのですが、このサイトで

紹介されている方法によると、Flutterの外部パッケージを利用することで、

もっと簡単に実装が済んでしまうようですね。

 

 GoogleFonts公式はこちらから!

fonts.google.com

 

 

3.  Flutter開発に便利な動画教材編

① The Complete 2021 Flutter Development Bootcamp with Dart

 動画教材編としてまずご紹介するのは、Udemyで有料教材として提供されて

いる、「The Complete 2021 Flutter Development Bootcamp with Dart

という教材です。

 

 この教材は、Google社のエンジニアである、「Angela Yu」という講師に

よって提供されているものになります。

 この教材の良いところは、「そもそもFlutterとはどういうものなのか」という

概念的な観点の講義と、実践的な講義のバランスが絶妙だという点です。

 私は受講し始めてまだ半分の地点までしか来ていませんが、このコースを

マスターすれば、Flutterを使用したアプリ開発に必要な知識は整ってしまうような

気がしています!

 

 講義は英語ですが、「MicrosoftEdge」を利用して翻訳をかけると、字幕も

含めて永久的に日本語翻訳してくれるので、英語が苦手な人でも安心ですよ!

 

 ただ、「Flutter2系」での動画ですので、「Flutter3系」に対応していません。

まだ3系対応の動画を販売してくれていないようなので、これで我慢するしか

ないようなのですが、概念的なところを見るだけでも相当ためになるので、

おすすめには変わりありません!

 

 ぜひ購入してみてください!(通常価格20,000円くらいですが、セールだと

2,000円くらいになります😄)

 

 動画はこちらから!

www.udemy.com

 

② FlutterでのはじめてのTDD!

 次にご紹介するのは、同じくUdemyで提供されている、「Flutterでのはじめての

TDD!」という教材です。

 

 TDDとは、「Test Driven Development」の略であり、「テスト駆動型開発

と呼ばれているものです。これは、アプリケーションの挙動テストを先に行なった

上で実装を進めていくという手法のことであり、効率的かつ安全なアプリ開発

ために利用されているものになります。

 

 本動画では、長年SEを務めてきている講師が、Flutterでテスト駆動型開発手法

を用いて電卓アプリを作るという内容になっています。

 

 テスト駆動型開発の何が良いのか、どのように実践するべきかということを

とても分かりやすく解説してくれているので、非常に勉強になりますよ!

 

 動画はこちらからどうぞ!

www.udemy.com

 

Youtube Flutter公式チャンネル

 次にご紹介するのは、YoutubeのFlutter公式チャンネルです。

迷ったら「公式」と言われるほど、公式での情報収集は大切です。

 

 このチャンネルでは、公式サイトのスターターアプリの開発の解説から、

便利な機能の解説まで幅広い内容を扱っています。

 やはり「英語」という点が難点ではあると思いますが、自動翻訳機能を使えば

苦手な人でもある程度のところまではいけると思うので、ぜひ試してみて下さい!

 

 ちなみに個人的には、この「Widget Of The Week」というコーナーがとても

好きですね。便利なWidgetについて解説してくれていますので、勉強になります。

 

 動画はこちらからどうぞ!

www.youtube.com

 

⑩ KBOYのFlutter大学

 最後にご紹介するのは、ご存じ「KBOYのFlutter大学」です。

 

 Flutterでの開発を始めようとして、大体この動画に一番最初に出会う人が多い

のではないでしょうか。

 

 つい最近までは、古いバージョンのFlutterに対応した動画だったのであまり

役に立たない部分が多かったのですが、最近になって新しいFlutterのバージョンに

対応した動画をアップロードしてくれたので、この先明るいです!!

 

 実践的なアプリ構築動画もあるので、とても便利ですよ!!

 

 動画はこちらから!

www.youtube.com

 

 

4. まとめ

 今回は、「サイト編」、「ツール編」、「動画教材編」と3つの項目に分けて

合計10個のものをご紹介しました。

 

 もちろん個人的に便利だと思ったということもありますが、Udemyでの動画内で

紹介されていたものや、他の方のブログなどで多く紹介されていたものから抜粋

してご紹介しているので、どれをとっても納得のいく内容のコンテンツだと

信じております。

 

 一つでも参考になれば幸いです。

 

 これからもお互いエンジニアとして頑張っていきましょう!!

 

 

5. テクノシップ第25号プチ編集後記

〜研修後に入ったプロジェクトでは、「SQL」と「Python」のスキルが必須

とのこと。大変だろうが、またさらに学ぶべきことが増えて嬉しいです。

これからも頑張っていきたいですね。〜

 

Flutter研修で得たプログラミングの問題解決のための10の方法【第24号】

 

               

 

 こんにちは!

 テクノシップブログです!!

 

 今年梅雨なんてあったっけ?と思ってしまうほど、猛スピードで夏到来ですね。

みなさま体調には気をつけながら夏を乗り越えていきましょうね🌞🌞

 

 さて、私は6/1よりエンジニアとしてのキャリアがスタートした訳ですが、

最初の1ヶ月は「研修期間」ということで、一つの言語を使った研修課題に取り

組みました。

 

 研修も終わり、なんとか最初の1ヶ月を乗り越えることができましたが、

よくよく振り返ってみると、苦しくも学びの多い1ヶ月であったと思っています。

 

 なんと言っても、「Flutter」という初めて体験するフレームワークを使用した

ものだったので、モバイルアプリ開発の経験すらない私にとっては未知の体験

だったのです。

 

 しかし、たとえ初めてであっても、途中で出くわす問題に対して、どのように

対処すればいいのかということを自分なりに情報収集して考えながら過ごしてきた

つもりでいます。

 

 ということで今回の記事では、私が素人なりに情報収集して考えて実行した

 

 プログラミングに関する問題解決のための10の方法

 

 を共有させていただきたいと思います!!

 ぜひ参考になれば幸いです!!

 

 分かりやすさに注力したので、ぜひ参考にしてみてください!!

 

 

 

1.  プログラミングに関する問題解決のための10の方法

① エラー文を繰り返し読む 

 まずは何と言っても、自分が直面したエラーに関して、そのエラー文を

しっかりと理解することです。

 

 言語によっては、エラーが起こった際に、どのようなところにエラーが起こって

いて、どうすれば解決できるのかということを指示してくれるものもあります。

 そういったヒントを手がかりに、じっくりとエラー文の内容を読み込んでみる

ことが大切だと考えています。

 英語が苦手な場合でも大丈夫です。今はGoogle翻訳などの優れた翻訳機能も

ありますし、しっかりと和訳すれば理解できるはずです。

 

 この方法は、何もエラー対処だけに限ったことではありません。初めて触れる

コードを理解する力もつけることができます。

 「何が問題なのか」、「何をしようとしているのか」という点を意識して理解

に努めることが重要だと思います。

 

② エラー文を検索にかける

 これはエラー対処としては最も王道の方法だと思いますが、本当に効果があると

思います。なぜなら、自分がそのエラーに出くわしたということは、自分以外の

誰かも必ず同じエラーに出くわしている可能性が高いからです。

 

 人気のある言語や実務でよく使われるフレームワークであればあるほど、日本語

での検索結果もヒットしますし、本当に役に立ちます。

 

 ちなみにFlutterは、私の感覚ではあまり日本語の記事でヒットしたものはわずか

でした。今後私が自分で出会ったエラー対処法などを公開していくことで増やして

いきたいと考えています。

 

③ エディターのブレイクポイントやコンソールを利用して探索する

 特に多くの変数を用いて、その値が更新されていくような処理を実装している

場合などは、この方法が特に役立つと思います。

 

 私は研修で「電卓アプリ」を実装しました。電卓アプリを実装するには、

計算のロジックを組む場面で、数多くの変数を用意する必要がありました。

そして、それらに格納されている値がどのような動きをするのかという点にも注意

を払う必要がありました。

 

 そのような時に、エディターに搭載されている「ブレイクポイント」と

デバッグコンソール」が役に立ちました。やり方としては、以下のような手順

となります。

 

 1. 調べたい位置にブレイクポイントを置く

 例えば、上のコードの119行目の「getDisplayText」というメソッドで引数として

受け取る「value」の中身を調べたいとします。このメソッドはユーザーが数値の

ボタンを押したときに、その値を受け取り、画面上に表示するためのメソッド

です。

 

 この時以下のようにメソッドの位置でブレイクポイントを打ちます。

そして、このメソッドを実行させるために何か数値ボタンを押すと、

 ブレイクポイントを打った位置で処理が止まり、デバッグコンソールを利用して

値を調べることができるようになります。

 今回は、「9」を入力したので、値を調べるために、コンソールに「value」と

入力すると、しっかりと「9」という値を受け取ることができているということを

確認することができました。

 

 この方法は思い通りの挙動をしてくれない時などの原因調査に役立ちます。

私もこの方法を多用し、複雑な処理をなんとか実装することができました。

 

④ 同僚や先輩に話す

 これは、決して「質問するということではありません

 自分がつまづいている箇所について、どうしてそうなったのか、どのように解決

したいのかをとにかく声に出して話してみるのです。

 

 これが思いのほか効果的で、自分で話しているうちに解決策が浮かんでしまう

ということが沢山ありました。調べてみると、「ラバーダッキング」という方法

に近いらしく、声に出してアウトプットするうちに、脳内で情報が整理され、

アクションを見つけやすくなったり、記憶の定着が高まるというものらしいです。

 

 ラバーダッキングについては、以下の記事が参考になりますよ!↓↓↓

www.java-career.com

 

 また、ラーニングピラミッドというものもあり、やはり人に話すことは

効果絶大のようです。

 

⑤ 質問する

 これも王道の方法ですね。

 しかし、「どうすればいいですか?」や「ここが分かりません」のような

一言質問は絶対に禁句です!!

 

 なぜこのような質問がダメなのかというと、もちろん相手の時間を無駄に使って

しまうということも挙げられますが、それ以上に、解決の経験をすぐに忘れて

しまうからです。

 

 自分で悩みに悩んで、様々な解決策を試したけど、それでも上手くいかない時

に質問するように心がけましょう。

 そうすることで、そもそも自分で散々悩んだという経験がインパクトになります

し、それなのに質問した相手が提示してくれた方法ですんなり解決することができ

れば、「なんだそんなことだったのか〜」や、「よかった、スッキリした!

のような印象が残るはずです。

 

⑥ 普段から好奇心を持って物事を考える

 これは直接はプログラミングの問題解決には繋がらないかもしれませんが、

大切な「論理的思考力」を鍛えることができます。

 

 私は研修中にロジックの組み方がうまくいかず、先輩に質問しました。

 

 「どうすればロジック力を鍛えることができますか?

 

 すると先輩は。

 

 「好奇心を強く持って、身の回りの物事に関して「なぜ」を考えてみること

 

 だと言ってくれました。

 「なぜ」を追求することで、物事の仕組みが分かっていきます。仕組みが

わかれば要素をどのように組み合わせるかだけなので、もちろんロジックを組む

力も上がってくるということなのかと私は解釈しました。

 

 エンジニアとしては、身の回りのIT技術を使ったものに対して、

「なぜ?」を問いかけてみる癖をつけていきたいところです。

 

⑦ コンピュータの基礎からしっかりと考えてみる

 自分の目の前の実装中の言語やフレームワークに対して、出くわした問題は

本当にその言語やフレームワーク特有のものなのでしょうか?

 

 そのような場合もあるでしょうが、少なくとも私は初めて経験したFlutter

における諸問題に関して、Flutter特有の問題ではない部分がかなり多いように感じ

ました。

 

 例えば、「条件分岐」の実装です。私は条件文をどのように組んだらいいか

分からず、悩んだ挙句先輩に質問したところ。

 

 「コンピュータは「はい(1)」、「いいえ(0)」の2つしか判断できないんだよ



 

 と教えてくれました。つまり、「はい」か「いいえ」で答えられるように

条件文を書けばいいのかと納得することができ、よりシンプルな記述を行う

ことができるようになりました。

 

 ここまでくると、もはや「コンピュータサイエンス」の領域のような気もします

が、このような基礎的な知識もしっかりと役立つんだということを実感させられた

経験でした。

 

⑧ 自分が実装したいことをコメントで書いてから実際にコードに落とし込む

 私のような初心者は得手して、いきなりコードを書き始めてしまうものです。

 

 最初はいいかもしれませんが、複雑な処理の実装ともなると頭が混乱して

何をやっているのかさえ分からなくなってしまうことも多々ありました。

 

 そんな時に役に立ったのが、

 

 「実装したいことをコメントに残し、一つ一つコード化していくこと

 

 まず、実装したいことをコメントアウト機能なりを使って言語化します。

 ここでは、簡単な足し算を実行したいとしましょう。コメントを使って

処理手順を記載します。

 

 そうして全体の流れを把握したところで、コードを書いていきます。

 このようにすることで、今自分がどこの処理を実装しているのかなど、

頭を整理しながら実装しやすくなります。

 ぜひ実践してみてください!!

 

⑨ 一晩おく

 これは、悩みに悩んでも解決できないときは、思い切ってその日は終わりにし、

すぐに寝てしまうというものです。

 

 実際に科学的な方法として認められており、「ツァイガルニク効果

というそうです。人はキリ良く終えたことよりも、キリの悪いところで中断して

しまったことの方が、記憶に残りやすいというものですね。

 

 これをプログラミングにも応用するわけです。

 実際、私も一日中悩んでも解決せず、その日は終わりにして寝て、翌朝

再度取り組もうとしたらすぐに解決策が浮かんだということが何度もありました。

 

 今後もテクニックとして使っていきたいですね。

www.kaonavi.jp

 

⑩ 学習発信をする

 最後はなんと言っても「学習発信」です。

私は必ずしも、「こういうことができるようになりました」や、「こんな効率的な

実装方法があります」などのような内容ではなくてもいいと思っています。

 

 「こういうことができません」という内容でもいいと思います。この発信をする

工程で既に、頭の中の整理が済んでいるというパターンも多いにあります。

 その上で、もし解決したら、「悩んでいた時」と「解決した後」のBefore After

を発信すれば、とても価値のある発信になると思います!

 

 「出来ること」も大事ですが、「出来ないこと」にもしっかりと目を向けて

発信していけるといいですね!!

 

 

2. まとめ

 今回は10個にまとめてみましたが、細かいことまで言えば、もっと方法が

あります。しかし、特に大事だと思ったことで、しかも実際に自分もやってみて

効果があったものを選定してご紹介したので、この記事を読んでくれたあなたの

ためになっていれば幸いです。

 

 ちなみにこのような「10個の方法」というテーマにするにあたり、以下の記事を

参考にさせていただいたので、一応共有しておきます。

codeburst.io

 

 これからもお互いエンジニアとして頑張っていきましょう!!

 

 

3. テクノシップ第24号プチ編集後記

〜Flutterをやってみて、とても楽しくなり、今後極めていきたいと思うように

なりました。今後はFlutterエンジニアを目指していくのもありだななんて思った

りもします笑〜

 

『週刊』エンジニア奮闘記③「研修第3週の学び4選」【第23号】

 

 

 こんにちは!

 テクノシップブログです!!

 

 本格的に暑い時期に突入しましたね🌞🌞

エアコンをつけるのが必至で、電気代もかさむ期間に入ってしまいました💦💦

 

 さて、私は6/1よりエンジニアとしてのキャリアがスタートした訳ですが、

最初の1ヶ月は「研修期間」ということで、一つの言語を使った研修課題に取り

組んでいます。

 開始して3週間が経ちましたが、学ぶべきことがさらに沢山あったので、

これからエンジニアを目指す方やエンジニアとして働いている方の一つの参考に

なればと思い、私の学びをアウトプットさせていただきます!!

 

 特に第3週は、

 

               「IT業界の実情」

 

 について学ぶべきことが多かったので、それを中心に紹介します!!

 

 

1. 研修(第3週)の学び3選

①SESの場合、「人月計算」という価格設定方式が採られる

 SES = System Engineering Service とは、自社開発や受託開発をする企業が、

自社で賄うことのできない分のエンジニアを、エンジニア派遣事業をしている企業

から借りてくるサービス形態を言います。

 

 その時に、重要なのが「人月計算」という考え方です。

 

 

 人月計算とは、上の図のように計算して売上を決めていく計算方法のことであり、

この中で、「人月単価」というものが重要になってきます。

 

 人月単価は、派遣されるエンジニア個人の力量などに応じて、決定金額が大きく

変わってくるところになります。

 一般的にキャリアの長いエンジニアの方が単価も高くなる傾向が多いそうですが、

実際に金額を決定するときに、一括して人月単価を決定されることもあるようで、

その人の力量と同等の単価を設定してもらえない場合もあるそうです。

 

 私はまだ研修中で派遣も始まっていない身でこんなことを聞くと、先行きが不安

になりますが、とりあえずは前を向いて進んでいこうと思います!!

 

 

②初心者がSESに行けるのか?

 一般的に、「受託開発や初心者を配置しやすい」が、「SESは初心者を送り

づらい」というのがあるそうです。

 それは、やはりSESはお客さん先に社員を派遣するからには、しっかりと力の

ある社員を送らなければならないということもあるそうですが、それに加えて、

指示命令系統」というものが深く関わっているように感じました。

 

 

 基本的に、派遣された社員のうち、派遣先企業が話しかけていいのは、

派遣元のリーダー」のみとなっているそうです。

 つまり、派遣先企業から直接派遣元の一般社員に指示などを送るのはNGという

ことになります。

 実際にはこのようにはなっていない現場もあるそうですが、基本的には

このような構造となるそうです。

 

 しかし、このような構造ゆえ、「労務管理」について、ややこしいことになる

そうです。

 派遣先企業は、派遣元企業の社員に対して、労務管理において責任を負う立場

に無いそうです。そのため、残業などについて全く管理されないということです。

 つまり、「割り当てた分はちゃんとやれよ」ということになります。

 

 こうなると、初心者を派遣してしまっては、リーダーの負担が計り知れません。

結局初心者エンジニアは何もできず、最終的にリーダーが全ての尻拭いをして

なんとか終わらせるという場合もあるそうです。

 

 業界の現状を考えると、エンジニアの人手不足が激しく

「スキル」よりも「やる気重視」でSES契約をしてくれる企業も増えてきている

ようではありますが、しっかりとチーム全員で業務をこなしていけるのかという点

をよく考えていく必要がありそうですね。

 

③研修について(初めての言語やフレームワークへの向き合い方)

 3つ目は、研修に関することになります。

 

 現在3週目に突入し、そろそろ課題もまとめて行かなければならない地点に来て

いますが、時が経つほどに、「初めての言語やフレームワークに対する向き合い

」について考えさせられることが多くなってきています。

 

 言いたいことは一つ、「コードのコピペ」についてです。

 最近では、どの言語やフレークワークに関しても、公式やその他エンジニアの

方々が出してくれているチュートリアル動画や記事が充実しています。

 そのような状況の中で、初心者は全く分からないので、コードをコピペしたく

なります。 

 

 最初は私も、「コピペは良くない」と一方向で考えていましたが、多くの先輩

に質問して導き出した答えが、

 

       コピペは全然良い。

          しかし

  コピペしたままで中身を理解しようとしない

      エンジニアが本当に多い。

 

ということでした。

初心者にとって、まず動くものを作ることというのは重要です。だからこそ、

すでに完成しているコードをコピペしてしまうことも多くなります。

 

 しかし、一体そのコードが何をしようとしているものなのか、どのような

構成でコーディングされているのかを理解しないままにしてしまうのが悪いです。

 

 この結論に達してから、私はコピペするたびに、一旦自分の中でそのコードを

上から追い、中身を理解してから拝借するように心がけています。

 

 今後もこれは徹底していきたいです。

 

2. テクノシップ第23号プチ編集後記

〜エンジニアって結構お酒好きの方が多いことが分かりました。(自社だけかな笑)

私もお酒が好きなので、これから様々なエンジニアの方と交流を深めていきたい

ですね。〜

 

『週刊』エンジニア奮闘記②「研修第2週の学び4選」【第22号】

  

 

 こんにちは!

 テクノシップブログです!!

 

 いよいよ梅雨の時期に入り、通勤に傘が欠かせない毎日に突入しましたね🌂

ジメジメしていて気持ち悪い毎日ですが、頑張っていきましょう🔥

 

 さて、私は6/1よりエンジニアとしてのキャリアがスタートした訳ですが、

最初の1ヶ月は「研修期間」ということで、一つの言語を使った研修課題に取り

組んでいます。

 まだ開始して2週間しか経っていませんが、学ぶべきことが沢山あったので、

これからエンジニアを目指す方やエンジニアとして働いている方の一つの参考に

なればと思い、私の学びをアウトプットさせていただきます!!

 

 

1. 研修(第2週)の学び4選

①検索力が重要であるということ

 研修課題として言い渡されたのは、

 

      Flutterというフレームワークを用いた

       アプリケーションの作成

 

 でした。

 

 これを言い渡された私は、「Flutterってなんぞ?」となりました💦💦💦

 様々な言語についてアンテナを張ってきたつもりですが、これに関しては

初耳でした。

 

 FlutterはGoogle社が提供するモバイルアプリケーション開発用のフレーム

ワークとなっており、今イケイケのフレームワークと言われています。Flutterに

ついての概要は以下の記事が参考になりますので、チェックしてみてください!

詳しく特徴や、メリット、デメリットなどがまとまっています。

 

monstar-lab.com

 

 「初めてのものだからできない、、、」 などという言い訳は通用しません。

だからこそ、自分で調べていく力が問われていきます。

 例えば、Google検索一つを取ってみても、「どのようなワードで検索するか

によって、たどり着くことのできる答えは大いに変わっていきます。

 

 自分が知りたいことに関して、そう簡単にはたどり着くことはできませんが、

日々検索の仕方も学びながら初めての相手に対して奮闘を試みています!!

 

 ちなみにGoogle検索の使いこなし方について参考になる記事があったので、

リンクを張っておきます!

 

blog.hubspot.jp

 

②質問力も大事であるということ

 ①で「検索力」が大事であると言いましたが、一人で解決しようとしても

どうしても解決しきれない場面が出てきますね。

 そのような時に問われる力が、「質問力」です。

 

 職場には、その言語やフレームワークを扱ったことがある人、その言語や

フレームワーク自体は扱ったことがないけれど、ロジックの組み方について参考に

なる人など、数多くの頼れる先輩社員がいるはずです。

 その人たちに「頼る」ということが必要になってきます。

 

 しかし、頼ると言っても、「分かりません、どうすればいいですか?」という

質問は絶対にNGです。この質問だと相手が解決策を提示するまでの工程がかなり

多くなってしまうのが分かりますね?

 

 一方、「〇〇がやりたいのですが、詰まっています。①と②の対処法を取って

みたのですが解決しません。他に試すべきことはありますか?」であったり、

〇〇と△△であれば、〇〇の方を試すべきでしょうか?」のように、相手が

回答をすぐに出せるような質問を投げかけなければなりません。

 

 私もまだまだですが、質の高い質問ができるように日々研鑽を積んでいきます!

 

③可読性の高いコードを意識すること

 次は実際のコーディングに関することですが、「可読性」への意識が本当に大事

だということを学んでいます!

 

 プログラミングにおいて、「ユーザーにとってより良いサービス」を作るため

にコーディングすることは勿論大切なことです。

 しかし、個人開発でない限り、その開発作業は必ずチームで行うはずです。

そうした場合、どれだけ優れた機能を実装したコードであったとしても、

読みにくいコードであったらどうでしょう。コードをレビューするメンバーが、

読みにくいコードを解読する」という無駄な工程を踏まなければならなくなって

しまいます。

 

 これにより、チーム内でのコミュニケーションが上手くいかず、効率的な開発も

できなくなってしまうのです。

 

 だからこそ、「可読性の高いコード」というのは、とても大切な要素となります。

数多くの先輩社員に聞いたところ、「新入社員が最も気を配るべきなのは、

可読性の高いコードを作ることだ」とおっしゃる方が非常に多いです。

 

 可読性の高いコードを書くためのコツなどは様々な手段で学ぶことができます。

先輩社員などに聞くのも有効な手段ですが、良書も数多くあります。

 以下に2冊ほど紹介しておくので、参考にしてみてください。

 

【プリンシプルオブプログラミング】

        

 

 「より良いコード」を書くための理論が数多く分かりやすく載っています。

具体的なコード例が無いのが少々残念ですが、とても参考になる一冊です!!!

 

【リーダブルコード】

     

 海外のエンジニアによって書かれた、長年愛されている良書です。

具体的なコード例も掲載されているのが有難いところです!!!

 

④互いに教え合うことが最も学習効果を高める

 これに関しては、「成果の出る勉強法」として今や当たり前のようになっている

概念ですが、本当に効果的です。

 上のラーニングピラミッドを見れば分かるように、「人に教える」という行為

が最も高い成果を上げることが分かっています。

 

 これはもう実践するしかないと思い、私は研修中、一緒に行っている同期と

頻繁に時間を取って教え合うという作業をしています。

 一番良いのは、「自分が分かっていない部分が明確になること」です。

分かっていない部分が明確になれば、次のアクションプランも立てやすいですし、

一つ一つクリアしていけば着実に力もつくはずです。

 

 引き続き、継続していきたいと思います!!

 

 

2. 研修内容について

 前回も紹介しましたが、改めて紹介しておきます!

 入社日から早速研修をしているわけですが、課題は、

 

      Flutterを用いた、電卓アプリの作成

 

 です。

 

 そもそも、Flutterとは、Google社が提供する、クロスプラットフォーム技術を

使用したモバイルアプリ開発フレームワークです。

 モバイルアプリ用フレームワークと言ってはいますが、AndroidiOSはもちろん

のこと、WebやWindows OS、Mac OSにも対応している優れものです。

 

 

 以下のサイトに詳しく特徴や、メリット、デメリットなどがまとまっています。

monstar-lab.com

 

 もし、学習してみたいという方がいれば、以下のサイトや動画が参考になり

ますよ!!良かったらチェックしてみてくださいね!!

 

【Flutter公式】

flutter.dev

 

YouTube --Flutter大学】

www.youtube.com

 

【Udemy】

www.udemy.com

 

 いきなり新しい言語での取り組みとなりますが、何とかこの課題を乗り越えて

早くプロジェクトに配属されるように頑張ります!!

 

 

3. テクノシップ第22号プチ編集後記

〜新居のゴミ捨て場がやっと分かりました!!ゴミ捨て場探しで丸々1週間

悩み続けるなんて想定もしていなかったので、結構疲れました💦💦これからも

イレギュラーなことが沢山あると思いますが、乗り越えていきたいですね。〜

 

 

『週刊』エンジニア奮闘記①「初週の学び6選!!」【第21号】

   

 

 こんにちは!

 テクノシップブログです!!

 

 コツコツと記事の執筆を積み重ねて、やっと20記事を超えるところまで来ること

ができました!!この調子で少しずつステップアップしていきたいと思います🔥

 

 さて、私は6/1よりエンジニアとしてのキャリアがスタートした訳ですが、

さすがにいきなり現場には行けないものの、先輩方に様々な話をお聞きし、

実際に働く」場合のことに関して驚いたり、なるほど!と思わされることが

数多くあることに気づきました!!

 

 今まで単なる「学習者」としてエンジニアをやってきた私には、

いい意味で「働くエンジニア」とのギャップを理解することができて

良かったと思ってます!

 

 最初の1週間で学習したことをアウトプットし、これからエンジニアとして働き

たいと思っている方の参考となりますように✨✨✨✨✨✨

 

 

1. 初週で「驚いたこと」「なるほどと思ったこと」6選

①セキュリティへの意識の高さ

 まず驚いたのが、実際に働くエンジニアの方の「セキュリティへの意識の高さ」

です。

 お客様から大切な情報をお預かりしてプログラムを開発することが多いことを

踏まえ、並々ならぬセキュリティ意識が備わっていることが分かりました。

 

 ●PCには勿論ウイルスバスターを導入し、週一のペースでチェックする

 ●外出時、PCはロックするか、ロッカーに入れて施錠する

 ●帰宅時は基本的にPCの持ち出しは禁止

 ●PCに余計なソフトのダウンロードは行わない、必要だと感じても

  自分の判断では決して行わない

 ●メモをするのが面倒くさいからと、スマホで撮ることは断じてしない

 

 私が先輩方から聞いただけでも、これだけのことを徹底していました。

 特に「ハッと」させられたのが、「メモをするのが面倒くさいからと、

スマホで撮ることは断じてしない」です。これに関しては、言われなければいつか

思わずやってしまっていたと思います。チョッとしたメモ書きでも大切な情報で

あり、記録に残して自分用に持ち出すことはNG。

 非常に勉強になりました。

 

 【ToDo】

 上記のことを徹底するとともに、仕事で使うあらゆる情報や物に

 対して、「もし無くしたら」どれだけ大変なことをしたことになる

 のかということを常に肝に銘じて仕事をする!

 

②開発業務でのチーム編成の新たな流れ

 これに関しては、「なるほどな」と思った要素ですが、普通プロジェクトを

開始するのあたってのチーム編成において、「PM(ProjectManager)」、

PL(ProjectLeader)」、「メンバ(プログラマー)」といったように編成しますが、

近年、PMとPLの業務を補佐する立場として、

 

     PMO(ProjectManagementOffice)

 

というものが重要視されているそうです。

 

 PMはお客様との折衝や、組織管理などの業務が大変で、PLもチーム管理が大変

です。そのため、それぞれを繋ぐ事務的な役割を中心に果たしてくれる事務方の

チームが求められているとのことです。それが「PMO」です。

 

 「進捗管理」などを任されることが多いようですが、優秀なPMOは「徹底力

がすごいそうです。各要素の進捗状況について、期日までに決められた

要件を満たせるように「徹底した管理」ができることが求められます。

 

 今後、実際にプロジェクトに入ったら目にするチームになるかもしれないので、

頭に入れておきたいと思います!

 

【ToDo】

 実際のプロジェクトに入ったら、PMOの業務についても気にしてみる

 

③成長するエンジニアの特徴は「〇〇する姿勢」

 色々な先輩に「成長するエンジニアの要素」についてざっくりと聞きました。

皆さん口を揃えて仰っていたのが、

 

           周りを気にする姿勢

 

 です。

 

 

 例えば、自分が携わったプロジェクトで、自分自身の担当業務が「プログラム

テスト」だったとして、その業務だけに気を配るのではなく、「上流工程」、

「インフラなどの担当」、「他のチームの状況」など、あらゆる要素を気にする

姿勢があるかどうかで、「メンバ」から「PL」や「PM」に昇進できるかどうかが

決まってくるそうです。

 

【ToDo】

 自分の担当とは別の業務をしている人やチームに「質問」を投げかけてみる

 

④開発工程に関する注意点について

 私が入社した会社では、主に「業務システム開発」を手掛けています。

 そのため、「ウォーターフォール」の開発形態を取ることが多いそうです。

 

 ウォーターフォール型の開発では、「V字モデル」という開発モデルが提唱

されており、開発の進め方の指針となるものの内の一つですが、このV字モデルに

ついて、「なるほど」と思わされた部分がありました。

 

 

 V字モデルでは、一連の流れで開発まで辿り着いた後、それぞれの工程用の

テストを順番に行っていき、納品まで繋げていくモデルです。

 

 ここで、大事なのが、「テスト」はあくまで「各工程の設計書に対するテスト

であり、「コードそのものに対するテスト」ではないということです。

 

 コードに対してテストをしたとしても、そのコードそのものが設計書に書かれて

いる要件を満たしていなければ意味がありません。だからこそ、「設計書」や

「要件定義書」の内容を満たしているのかという視点でテストを行っていくことが

重要だということです。

 

【ToDo】

 テスト業務に入ったら、このことをしっかりと意識して業務に臨む

 

⑤あらゆる「資料」に関する注意点について

 エンジニアとして仕事をしていく中で、今後様々な「資料」を作成する機会に

恵まれると思います。そんな時、注意するべきポイントについても教えていただき

ました!

 

 ●統一感を出す(インデント、用語、品質

 ●セルフチェックを頻繁に行う(資料のレビューは「機能に関するレビュー

  の場であり、「資料そのものの誤字脱字などを指摘する場」ではない)

 ●必ず修正履歴を残す

 

 特に、学びになったのが、「品質の統一」です。

 これは、「忙しいかそうではないかに関わらず、常に同じ品質を保った資料を

作成する」ということです。

 「今回は忙しいからこの要素は盛り込まなくていいや」でもダメですし、

「今回は余裕があるからあの要素も付け加えてみよう」というのもダメです。

 

 常に同じレベルの品質で作成していくことが求められるということですね。

 

【ToDo】

 資料を作成する立場になったら、上記のポイントに照らし合わせて作成する!

 

⑥レビューをすることの意義について

 プログラム開発において、コーディングのレビューがあります。

これは、早期に欠陥を減らし、効率的かつ安全な開発を遂行していくためには

欠かせない工程になります。

 

 しかし、上記の目的以外にも大切な意味合いがあるそうです。

 

 それは、「連帯責任感の醸成」です。

 

 プログラム開発を行っていくにあたり、「担当者一人の責任で終わらせる」の

ではなく、一人一人が全ての工程に責任を持つこと。

 それによって本当にいいチームが成立し、より良い開発へとつながるという

ことです。

 

 これは、③でも書いた、「周りを気にする姿勢」にも繋がると思います。

 

【ToDo】

 レビューは丁寧に、慎重に行う!!

 

 

2. 研修内容について

 入社日から早速研修をしているわけですが、課題は、

 

      Flutterを用いた、電卓アプリの作成

 

 です。

 

 そもそも、Flutterとは、Google社が提供する、クロスプラットフォーム技術を

使用したモバイルアプリ開発フレームワークです。

 モバイルアプリ用フレームワークと言ってはいますが、AndroidiOSはもちろん

のこと、WebやWindows OS、Mac OSにも対応している優れものです。

 

 

 以下のサイトに詳しく特徴や、メリット、デメリットなどがまとまっています。

monstar-lab.com

 

 もし、学習してみたいという方がいれば、以下のサイトや動画が参考になり

ますよ!!良かったらチェックしてみてくださいね!!

 

【Flutter公式】

flutter.dev

 

YouTube --Flutter大学】

www.youtube.com

 

【Udemy】

www.udemy.com

 

 いきなり新しい言語での取り組みとなりますが、何とかこの課題を乗り越えて

早くプロジェクトに配属されるように頑張ります!!

 

 

3. テクノシップ第21号プチ編集後記

〜新居でゴミ捨て場が分からず、あたふたした1週間でした、、、

 意外なところで時間食ったり、つまずくのが人生なのかあ〜

 

 

 

 

 

CS(コンピューターサイエンス)奮闘記④『CS50を受けてみて...』【第20号】

こんにちは!

テクノシップブログです!

 

もうすっかり夏めいてきましたね。🌞🌞🌞🌞🌞

日中は暑くて息が詰まりそうな日も多々ありますが、いかがお過ごしでしょうか?

 

さて、ただ今CS(コンピューターサイエンス)基礎を学んでおり、

その経過を「奮闘記」としてお送りしています。

 

前回までRecursionの学習カリキュラムのうち、無料で受講できる部分だけを学習

してみての感想を記事にしましたが、

今回は、同じく無料で受講できるオンラインサービスである「CS50」を受講して

みた感想をお伝えしたいと思います!!

 

Recursionについては、以下概要です!!

---------------------------------------------------------------------------------------

Recursion(CSを基礎から学べるオンライン学習サービス)

 こちらは「無料プラン」と「有料プラン」の2種類があります。

 カリキュラムに沿って基礎から学習を進めていき、コーディング問題やクイズに

答えながら知識を定着させていくスタイルをとっています。Facebookの現役エンジ

ニアの方がカリキュラムを作成しており、現場で通ずる良質な知識が習得できそう

ですね。

 

 最終的にはチームで実践的なアプリケーションを開発する経験を詰めたり、

途中で分からない点は質問し放題だったりと、非常に有意義な学習体験が

詰めそうなサービスですね!!

 

 ただ、使えるサービスを増やすには「有料プラン」にする必要があり、

月額7,000円くらいするので、少し手が出しづらい印象もあるかもしれません。

 

 Recursion↓↓↓

recursionist.io

---------------------------------------------------------------------------------------

 

 

1. CS50の概要

 CS50の概要は以下の通りです。↓↓↓

-------------------------------------------------------------------------------------

CS50(全て無料でCS基礎が学べるオンライン学習サービス)

 こちらは、ハーバード大学で講義として提供されているものを誰でもオンライン

で学習できるようにしたサービスです。しかも「無料」で提供されているので

手を出しやすいですね!!

 

 講義ノートを見ながら該当の講義動画をYouTubeで視聴することができ、

万全の学習環境が整っていると言えそうです。やはり動画の力は強いですね。

 

 講師の話すスピードが速く、日本語字幕対応をさせても文字を目で追うので

精一杯になりそうですが、そこは慣れていけば楽になると思います!!

 

 CS50↓↓↓

cs50.jp

-------------------------------------------------------------------------------------

 

 

2. CS50の学習内容

2-1. カリキュラム

 CS50の学習内容ですが、まず授業が「week0~week10」までの11個の授業に

加えて、「FinalProject」と呼ばれる最終課題が設けられています。

 

 最初は本当にコンピュータサイエンスの基礎から学習をスタートし、途中から

実際に言語を使ったプログラミングなどの学習へとシフトしていく流れです。

 

 各週の授業には、その授業で学習したことをアウトプットする場として、

Lab」や「ProblemSet」と呼ばれる提出課題があります。

ここで実際にコーディングしながら問題を解くということを繰り返すことで、

知識を定着させようという狙いがあると思います。

 

2-2. このコースで学べること

 CS50では、学べることとして、以下のように書かれています。

 

コンピュータサイエンスとプログラミングの広範かつ強固な理解
プログラミング問題を効率的に解決するためのアルゴリズムの考え
抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、 ソフトウェアエンジニアリング、Web開発などの概念
C、PythonSQLJavaScriptに加え、CSSやHTMLなど、            多くの言語に精通していること
様々なレベルの学習者が集う活気あるコミュニティに参加する方法
最終的なプログラミングプロジェクトを開発し、仲間に発表する方法

(CS50公式ページより引用: https://cs50.jp/)

 

 これによれば、ただコンピュータサイエンスの知識を身につけるだけでなく、

さらにスキルを上げていくための行動の仕方や、学習成果をアウトプットする

スキルなども磨いていくことができるようです。

 もちろん、実際の講義を録画したものをサービスとして利用できるものなので、

発表の機会などは無いかもしれませんが、それでも動画の中で講師の方が教えて

くれることは非常に有意義なものになると思います!!

 

3. CS50を学習してみての感想 

 私は現時点で「week0~week2」まで学習を終了しているだけなのですが、

ここまでの学習だけでも相当に有意義なものでしたので、ぜひ感想を共有させて

いただきたいと思います!!

 

3-1. とても分かりやすい授業

 まず、なんと言っても「授業が分かりやすい」ということを言いたいですね。

学習をし始めたばかりの印象は、「話すスピードが早すぎてついて行けない

というものだったのですが、学習を進めていくうちに自然と慣れていきました。

 

 実際に講義の試聴を進めていくと、理解を大いに助けてくれるポイントが

豊富にあることに気づきました!!

 

スクリーンや講義場そのものを使った視覚的な説明

 一番理解を助けてくれたポイントが、「視覚的な説明」です。重要なポイントを

スクリーン上で説明してくれたり、実際にコーディングを見せてくれたりと、

全てが視覚的で本当に助かりました!

 

 特に一番すごいと感じたのが、

講義場に豆電球を用意し、コンピュータの再現する」というものです。

コンピュータは「0」と「1」の2つの組み合わせを増やしていくことでより多くの

データを表現していけるようになるという基礎的な部分を実際に電球の点灯と

消灯の表現によって説明してくれたのです!!

 

 これのおかげで曖昧だった理解がぐんと明確な理解へと変わりました!!

 

●随時学生からの質問を受け付け、その場で疑問点を解消させる

 次に理解の助けとなったのが、「定期的な質問の機会」です。

 講義は動画なので、私自身が質問をできるわけではありませんが、動画の中で

講義を受けている学生からの質問を受け付けて、丁寧に素早く回答してくれる

ということが頻繁にあります。

 

 自分自身が疑問に思っていたことを代わりに学生が質問してくれることもあり、

非常に有効的です!!

 

3-2. 豊富なアウトプット機会

 上述したように、各授業の終わりには、「提出課題」があります。

その提出課題を解くために、CS50ではクラウド型のIDEを利用してコーディング

しながら回答を作っていきます。

 

 簡単なアルゴリズムを組む問題から、様々な条件を考慮しなければならない

問題まで広範囲にわたります。

 

 しかし、必ずヒントをくれるので、歯が立たないという感じではないように思え

ました!!エラー箇所を明確にするためのテストツールなども提供してくれている

ので、大きな助けとなります!!

 

 提出方法は「GitHub上に提出」となっています。

提出するたびにGitHubの草も生えるので、自分の学習成果を記録していけますよ!

 

3-3. コンピュータの理解

 講義の最初の方はコーディングの際の言語として、「C言語」を指定されます。

C言語は非常に古い言語であるため、様々な場面で明確なコーディングをしないと

エラーの連発となります。

 

 特に「静的言語」ということで、変数や関数を宣言するときに、「データ型」を

きちんと指定しなければなりません。動的言語であるRubyの学習から始めた私と

しては、慣れるのに苦労しています。

 

 しかし、面倒臭いこのような作業をしっかりと行うことで、ンピュータが

どう動くのか」ということをしっかりと理解していけるのだと考えています。

引き続き、頑張ってコーディングしていきたいと思います!!

 

4. 今後の予定

 今後の予定としては、7月中にCS50の受講を終えられるように隙間時間を

見つけてやっていきたいと思います!!

 今後もお楽しみに!!

 

 

5. テクノシップ第20号プチ編集後記

〜新居で新生活をスタートした矢先、インターネットが繋がらず仕事ができなく

なりました。一旦実家に引き返してインターネット工事が済むまで待機です💦〜