<#4 React Native> 〜コンポーネントとpropsの概念〜
わくばです!
だいぶブログを放置してしまいました笑
決して勉強をサボっていたわけではなく、UdemyでしばらくReact Nativeの講座を受けていたんです。
ちなみにシリーズのタイトルが「AIアプリを作りたい」から「自作アプリを作りたい」に変わっているのは、本当に作りたいアプリが決まったからです。もともとAIアプリとしていたのは、AIの勉強とモチベーションを無理やりくっつけるためだったので特に作りたいもののイメージはありませんでしたし。実際に作るアプリの技術的な設計は今度作ろうと思っています。
そんなことは良いとして、以下にUdemyで受けた講座のリンクを張っておきます。まだすべて終わっていませんが、どれもやりがいのある良い講座です!
受講した講座
https://www.udemy.com/course/react-native-first-step/learn/lecture/18327180#overview
https://www.udemy.com/course/react-native-firebase/learn/lecture/21271370?start=375#content
かなりのボリュームだったのと、Webアプリ開発すら勉強していない人間がやるにはかなり重く、記事にするには噛み砕くのにかなり時間がかかりました。
今回から少しずつ学んだことを記事にしていこうと思います。
本題
React Nativeの重要な概念として以下の4つがあります
- コンポーネント
- JSX
- props
- state
この内最重要はコンポーネントとJSXの2つ、残りのpropsとstateはコンポーネントの挙動や状態に関わる要素です。
コンポーネントというのはクラスや函数を用いて作られた本質的な単位で、この構造体を組み合わせて様々なUIを作っています。JSXは以前以下の記事で登場したと思いますが画面を描画する際のHTMLみたいなやつです(正確にはXML)。
propsの使い方 (カスタムコンポーネントによる説明)
本題のpropsですが、これは親コンポーネントから子コンポーネントへ渡すパラメタのことです。親が子コンポーネントを用いる際にパラメタを指定することで、そのパラメタを反映した子コンポーネントを描画することができます。親の言葉ひとつで、子供は全く違う人間になってしまうんですよね(重い)
以下に公式チュートリアル*1から引用したコードに自分なりの解説を加えてみました。
propsは仮引数のような理解で良いと思います。というかJavaScriptの文法上は完全にCatという関数の引数として用いられています(クラスでコンポーネントを定義する方法もあるのでイコールではないです)。親コンポーネント内で子コンポーネントを用いる際に実引数としてMaru、Jellylorum、Spot などを入れて、子コンポーネントのreturnが描画されます。
こうすることでCatというコンポーネントをいろんな場面で再利用できることが理解できると思います。
複数のpropsを指定
また、子コンポーネント内で{props.name}というふうに書かれているということは、親の方で複数のpropsを指定できるということになります。例えば以下のように新たにsexというpropsを追加すれば子コンポーネントで{props.sex}として用いることができます。
React Nativeはそもそも全部コンポーネント
今まで説明に用いていたものはカスタムコンポーネントと言ってエンジニアがソースコード内で定義して用いるものです。そのほうがpropsの説明がわかりやすいのでカスタムコンポーネントが最初に登場するはめになりました笑 が、React Nativeで構成するUIは全部コンポーネントであると行ったとおり<View>はViewコンポーネントだし、,<Text>はTextコンポーネントという予め作成されたコンポーネントです。これをコアコンポーネントといいます。そう考えると、上のCatという子コンポーネントが親コンポーネントにおいて<Cat>という形で用いられていたのも、自ずと納得できると思います。
まとめ
以上です。いやー正直Webアプリ開発をちゃんと勉強してから突入すべきでした笑 本ブログでは可能な限り、前提知識のない方でも理解できるようにするつもりですが、React Nativeに興味のある初学者の方はぜひWeb開発から入ることをおすすめします。もしくはSwiftやKotolinといったネイティブ言語。
まぁでも、冷たい水に入るときは飛び込んじゃった方が楽だったりしますし、基礎をスキップしていきなりやりたいものにダイレクトアタックするのもアリだと思います。キツイけど笑
暑さも少しずつやわらいできましたが、熱中症にはぜひお気をつけください。
では。
< #3 React Native>〜描画とスタイリングの基礎を学ぶ〜
わくばです!
今回はUdemyの講座でReact NativeによるUI(ユーザーインターフェース)の作り方を勉強したのでそこで感じたことと、今後どう勉強していくかについて考えていきます。
描画部分の構造
React NativeのUIはJSXというマークアップ言語とJavaScriptを用いて構築するそうです。JSXは< >を使って記述されるもので一見本当にHTMLに見えます。正確にはXMLというマークアップ言語を基礎にしているのでHTMLとは違うそうなのですが、HTMLと比較して勉強したほうが実用的で一石二鳥なのでHTMLになぞらえてお話します。
描画の部分はこんな感じです。returnのブロック内が実際に描画される部分になります。
<View>
というのがHTMLにおけるいわゆる<div>
、<Text>
というのが<p>
だと思っていただいて問題ないです。
<View>
の中にあるstyle
というのがHTMLのclass
みたいなものです。このstyle
にStyleSheet
でデザインを施します。
スタイリング
こちらがスタイリングの部分です。container
の中を見ていただけると分かる通り完全にCSSですね。キャメルケース*1かケバブケース*2かに気をつければ問題なさそう?今の所CSS自体中途半端な知識しかないのではっきりとは言えませんがReactがHTMLとCSSでUI・UXを構成しているのでおそらくそういうことでしょう。
まとめ
さすがReactをもとにしているだけあって、Web開発の概念がベースにあるというのを強く感じました。やはりReactもちゃんと勉強したほうが良いように感じます。したがってHTMLやCSSも一通り学ぶ必要がありそうです。直接的に文法などが役に立つとは思いませんが、アプリ作成における発想の面ではかなりかぶっているので勉強になるでしょう。
とりあえず今やっているUdemy講座をやりきって一つアプリを作成してみて、それからまた感じたことも含めて方針を決めていこうと思います。
ではでは。
< #2 ReactNative>〜環境構築 Node.js & Expo〜
わくばです!
今回はReactNativeの環境構築を行いました。かなり大変でした笑 JavaScriptは環境構築不要とかいって舞い上がった次の瞬間これです。先が思いやられます。
Homebrewインストール
まずHomebrewのインストールを行いました。いやしてなかったんかい、って感じかもしれませんが、今日はじめて知りました笑
これがないとなにかできないといったことはないです。ほんとに必須なのはNode.jsとExpoなので。これはExpoの公式ドキュメントのpre-requisiteにGitがあったので、GitインストールしようとしたらHomebrewが出てきたのでインストールしてみたんです。笑
Homebrewはパッケージ管理用のツールです。brew install [パッケージ] のように使うので、Linuxでいうaptみたいなもんかなと勝手に思ってます。
余談ですが「Brew」っていうのは「醸造」っていう意味です。ブルワリーの「ブル」ですね。公式ロゴにはビールのイラストが使われています。このデザインめっちゃ好みです笑。以下に公式サイトのリンクを添付しておきます。
Homebrew公式→ https://brew.sh/index_ja
Gitダウンロードページ↓
https://blog.hatena.ne.jp/PYEcracker99/pyecracker99.hatenablog.com/edit?entry=26006613610015408
nodebrewインストール
また「Brew」かい、って感じですがこちらも管理ツールです。Node.jsのversionを管理するツールです。プロジェクトごとにNode.jsのversionが違ったりするといちいちインストールし直さないといけませんが、nodebrewはNode.jsをbinaryで複数version管理して、必要なときに必要なversionを適用することができます。
なので開発現場向けですね。個人でNode.js使うぶんにはなくても使えます。あったほうがいいですが。
こちらはちゃんとPATHを通さないといけませんので気をつけてください。PATHを通すことで「nodebrew」というコマンドが使えるようになってNode.jsのversion管理を行える感じです。PATHを通すのはQiitaとかで調べれば出てきますが、注意点としてはシェルがbash前提で書かれているものが多いので、最新のMacbookでZ-shellの方はzshで書かれているものを選んでください。
一応参考にしたYoutubeチャンネルを貼っておきます。
2020年版|続・Node.js入門!”パスを通す”方法を教えてやんよ
Node.jsインストール
やっとメインです。これはサーバーサイド版JavaScript開発環境です。PythonやRuby、phpといった言語はサーバー上で動きますが、JavaScriptはブラウザ上ですよね。でも全部同じ言語で開発できたほうが良くね、ということでサーバーでJavaScriptが動くようにしたのがこのNode.jsだそうです。詳しいことはよくわかりませんが、言語の処理系自体はその言語の本質ではないからどうとでもなるって感じなんでしょうか。
ネイティブアプリっていうのはWebアプリと違って、ブラウザではなくちゃんとデバイスにインストールして使えるようにしないといけないので、こういったサーバでの開発環境が必要なのでしょう。
nodebrewがあればインストールできるのでnodebrew install [バージョン]ですぐでした。
Expoインストール
これがまさしくReactNativeのGUI開発環境です。開発ツールなだけあって結構インストール長かったですね。
必須事項のところにNode.jsとGitがあるので、順番には注意してください。MacOSだとGitはいくつか選択肢があるようで3rd partyによって提供されているようです。Homebrewはそのうちのひとつなので、多分Homebrewがあればいいのかなと思います。試しにgit --versionと叩いてみたらちゃんとversionが返ってきたので問題なさそうです。
https://docs.expo.io/get-started/installation/
シュミレータのインストール
iOSアプリ開発をする場合はXcodeをインストールしてXcodeシミュレーターを入れるみたいです。Android開発の場合はAndroid Studioです。僕はとりあえずXcodeを入れました。めっちゃ長かったです....λ
プロジェクトを立ち上げる
ターミナルでexpo init と叩くと新しいプロジェクトが作成できました。プロジェクトのディレクトリへ移動してからexpo startとすると以下のようにブラウザでコントロールパネルを開くことができます。
今回は以上です。一応必要そうなもんはインストールしたのでこのままReactNativeを使っていこうと思います。足りないものがあったら随時追加していこうと思います。
では。
< #1 ReactNative>〜JavaScriptの基本を学ぶ〜
わくばです!
かねてからアプリ開発を学びたいと考えていたので、ネイティブアプリの開発から勉強をしていこうと思います。
無論AIの勉強もしていきますが、E資格取得までのつもりです。
アプリ開発を学ぶ理由
アプリ開発を学ぶ理由というか、AIを突き詰める意味が僕にはないからです。というのも医学における僕の分野は最終的には僻地医療で、総合診療や家庭医療、救急医療といった分野になるからです。研究室でより精度の高いAIアルゴリズムを作ることが目標ではないのです。
つまり実臨床の場で役に立つ技術を作りにはAIを深堀りするよりアプリ開発を勉強するほうが僕のキャリアにはあっていると考えているんです。
何を記事にするのか
僕は現時点では他人のために役立つ情報なんて持っていません。一応医学部ですし、CBTとかも悪い点ではないんですが正直ぶち抜けているわけではないし、戦略的にやってきたわけではないので再現性がありません。
なのでこれから、IT知識ゼロの医学生がAIアプリを完成させるまでどんな過程を踏むのか、リアルに記事にしていこうと思います。
Qiitaのような技術記事を目指しているわけではないのでその点はあまり期待しないでください笑
なぜReactNativeからはじめるのか
僕が尊敬している方に勧められたというのが大きいんですが、それ以上のメリットがあると感じています。
まずクロスプラットホームであるということです。クロスプラットホームというのはiPhooneアプリもAndroidアプリもつくれるということです。SwiftやKotlinだとiOSかAndroidどちらかしかできないですがReactNativeならどちらもいけます。ちなみにクロスプラットフォームというと他に最近人気のFlutterとかCOCOAに使われたXamarineとかあります。
次にJavaScriptを用いていることです。JavaScriptはWebブラウザ(SafariやGooglechrome)上で動く言語ですからWebアプリケーションの開発の勉強にも楽にシフトできます。個人的な点ではスクリプト言語で動的型付け言語なので、今まで勉強してきたPythonと似ていて勉強しやすい!
以上がReactNativeを選んだ理由です。勉強している過程でもっといろんなメリットにも気付けるかもしれませんので随時更新していこうかなと思ってます。
本題〜JavaScriptの基礎〜
やっと本題かよといった感じですが、今回はJavaScriptの基礎を学びました。予想通りPythonにかなり類似している点があったのですんなり入ってきました。
今回学んだのはほんとに基礎で、変数とか数値計算とか配列とかそういう基礎文法でした。こういう基礎はあまり好きじゃないのでどんどん進めようと思います。
環境構築が不要!
結構おどろきました。Webブラウザで動くってこういうことか!って感じでした。
Google Chromeさえあれば適当に.htmlファイルを作ってブラウザにドラッグ&ドロップするだけ!あとは検証開いてコンソールに移動すればコードかけちゃいます。
これは初学者でも問題なくできますね。特にハード周りの知識なんて全然いらなそうです。
視覚的にわかりやすい
JavaScriipt自体よくHTMLやCSSに加えて出てきますよね。これはHTMLがサイトページの構造化、CSSがデザイン、JavaScriptがモーションをそれぞれ担当しているからなんです。なので以下の写真のようにHTMLが若干かければブラウザ上ですぐ動作を楽しめるんです。コードだけだと難解なこともこうして目で見えると理解が進みますね。
まとめ
今回はJavaScriptの勉強ということでブラウザ上でやりましたが、次は実際にReactNativeの環境を作っていこうと思います。
JavaScript自体もまだまだ学ぶべきことがたくさんあると思うので、必要になったときにまた勉強内容を追加していこうと思います。
では。
パーセプトロンとは〜深層学習の基幹概念〜
わくばです!
そろそろ知識をちゃんとアウトプットしないとなーと思って、機械学習の仕組みに関して記事を作成していこうと思います。あんまり教科書的にまとめてもわかりにくいので気になった重要なトピックごとに記事にしていこうと考えています。
やはりまずは深層学習の根幹とも言えるパーセプトロンの話から
パーセプトロンとはなにか
パーセプトロンというのはフランク=ローゼンブラットという心理学者が考案したモデルで、ニューラルネットワークを考えるにあたって最も根本的な概念です。ネットワークを構成する最も小さなパーツというとわかりやすいでしょうか。
難しい言葉はまず由来から考えてみるのが吉です。「perceptron」ですから「perception:知覚,認識」に由来すると考えるのが普通でしょう。答えはありませんが、おそらくそうなのだと思います。僕が思うに知覚し認識するその過程も含めているのだと考えています。人がなにか「知覚」という形で入力を得て、「認識」という形で出力するプロセス、それを最もシンプルにモデル化したものがパーセプトロンなのです。
まずは大枠からですが、以下のような図がパーセプトロンと呼ばれるものです。ちょっと単純パーセプトロンの部分は厳密には違いますが、以下のような捉え方のほうが理解に役立つと考えて、多層パーセプトロンの一部のような書き方をしてみました。
何やらネットワークっぽいですよね。それもそのはずで、これは深層学習で実際に用いられるニューラルネットワークの原型だからです。この多層パーセプトロンとニューラルネットワークの違いは後に別記事で詳解しようと思っています(ぶっちゃけ違いはわかってなくても良いかも)。今はパーセプトロンというのが網状に広がってるもんなんだな、くらいに思ってください。
単純パーセプトロン〜神経細胞1個に相当?〜
細かい部分の解説に入ります。深層学習は発想上は人間の神経活動をもとにしたものですから、神経細胞に相当する概念があります。それが単純パーセプトロンです。
\(x\)や\(w\)の添字はコンピュータが計算可能な限り無限に増やせますが今回は見やすくするために\(n=2\)までにさせてもらっています。
少し複雑になってきましたが、登場人物は入力、出力、バイアス、重み、活性化関数のたった5つです。単純パーセプトロンを数式一つで表現すると以下のようになります。
$$ z=f(x_{0}w_{0}+x_{1}w_{1}+x_{2}w_{2}+B) ーーーー①$$
入力に重みをかけてバイアスを足したものを活性化関数に通して出力とする。
若干、加重平均っぽく見えなくもないですが重みの総和は一定でないので全く別物です。この重みは調節が可能で、深層学習はこの重みを最適化することでより良い答えを導き出しています。そしてそれぞれの重みが独立しているからこそとんでもない計算量が必要なんです笑 \(x\)や\(w\)の添字をどんどん増やし、中間層もどんどん増やしていくと最終的にとんでもない計算量になることが想像つくと思います。ちなみに実際にはこの層は10万層は平気で超えます。この計算量が近年まで日の目を見なかった理由の一つでもあります。
①式で特に覚えておいてほしいのは、総入力\(u\)が1次関数(1次多項式が定める関数)であるという点です。これでもし活性化関数\(f\)が線形変換であったら、どれだけ層が深くても出力\(z\)は1次関数になるのがわかりますか?今度活性化関数についても記事にしようと思いますが、この点が活性化関数の存在意義を理解するにあたり非常にキーになってきます。
図3は実際の神経細胞の生理学的なモデルです。単純パーセプトロンの構造に似ていますよね。ただし、これらはお互いに真実を表しているわけではありません。似ているだけです。というか模したのだからそれはそうなんですが笑 何が言いたいのかというと深層学習はあくまで現状わかっている脳の仕組みに着想を得て”独自に”進化していった理論です。したがって脳の仕組みとは別物です。むしろ脳神経科学のほうが人工知能の理論を参考にして研究の着想を得ている場合もあるくらいですから*1
活性化関数って何?
出力を得るために噛ませている関数のことです。どんな関数が用いられるのかは隠れ層なのか出力層なのか、回帰問題なのか分類問題なのか、など様々な理由で使い分けられています。この活性化関数の違いで学習の正確さ等も大きく変わってくるので、とても重要な役者です。ここで詳述するのには色々足りないのでまた別記事としてアップしようと思います。少々お待ちを。
ちなみに一般に単純パーセプトロンで用いられる活性化関数はステップ関数です。
以上がパーゼプトロンのお話でした!わかりにくいところや誤植があったらぜひ一言ください!お待ちしています!
では。
医者・医学生がプログラミングを学ぶ意味〜飯塚浩也先生のAntaaライブを見て〜
わくばです!
僕は「Antaa」という団体に参加していて、昨日Antaaのライブで飯塚浩也先生が登壇していらしたので、そのライブの感想を備忘録の意味も込めて記事にしようと思います。Antaaというのは医師や医学生を繋げるプラットフォームのようなもので、医療関係のイベントをよくやっている団体です。
飯塚浩也先生は医師として八年間業務を経験した後、エンジニアとして仕事をはじめ、現在株式会社BeatFitのCTOをされているそうです。エンジニアへ鞍替えする前に、いろいろと苦い経験をされているのですが詳細は割愛させていただきます。ライブ動画はアーカイブされているので、ご興味のある方はぜひAntaaに参加しライブを視聴してみてください。
https://med.antaa.jp/online-event_BeatFitCTO-Dr.iizuka2020.07.29
以下の内容はあくまで僕個人の感想であってこのライブの要約ではないことに注意してください。
感じたこと
医者が直接エンジニアにモノを頼むのは簡単ではない
そもそも仕事を頼めるエンジニアを見つける事そのものが容易ではないみたいです。飯塚先生ご自身もあちこち回ってやっとお話をきいていただけたようですし。それに問題はその後で、実際にエンジニアの方にお話を聞いていただけたのは良いものの、納期はどうか、デザイナーはどうするのか、スケジュールやタスクはどうなっているのか等詳細に聞かれたそうです。こういったことと予算をすり合わせていかないと当然エンジニアの方も動いてはくれません。正直こんな事、臨床で働いている医師が聞かれてどのくらい答えられるでしょうか。たとえITリテラシーがあってもエンジニアの業務経験がないと難しいとは思いませんか。
僕自身プログラミングの勉強を現在進行形でやっているわけですが、「プログラミングスキルは外注でなんとかすれば良い」という意見に対し正直何も言い返すことができていませんでした(言い返すという表現はおかしいんですけどね笑)。そりゃすぐエンジニアにお願いしてこちらの思うようにことが進むのならそれが一番です。医療現場だって人手不足ですから。しかし上記のように提案する側にも知識が必要なのだとあらためて感じました。お願いする側なのに、「IT関連の話はようわからんからいい感じに頼む」という態度はできませんよね。必ずこちらの意図や要求を正確に伝えながら、向こうの意向にもしっかりと気を配らないといけません。IT素人にはかなり難しいと思います。
エンジニアがやっているのはビジネスである
当たり前ですけど見逃していました。特に僕はまだ学生なのであまり医療業務の本質がわかっていないところがあったので、、、、。根本的にはエンジニアの仕事は営利活動であり、医師は非営利(厳密に言うと違いますがマインドは非営利の側面が強いと思います。)であるということです。多くの医師にとって「誰かを救える」というのは十分な動機になりえるのですが、それがエンジニアにとって金にならないことであればエンジニアは動きません。それはそうですよね。IT業界だって人手不足です。足りないマンパワーを知力と利益でなんとかしながら機能させていることでしょう。利益の出ない仕事をしている暇はないのです。
ある問題をIT技術を用いて解決したい時、それを解決することがどんな利益になるのか、そこをIT技術に関する理解も合わせて営業するスキルがないとエンジニアの協力を得ることは難しいでしょう。
医者になってからITリテラシーを身につけるのはかなり腰が重い?
これは飯塚先生が直接おっしゃっていたわけではありません。飯塚先生のお話から僕が察した事です。先生は最初、30人ほどITに興味のある医師を集めて活動をしているようでしたが、結果的に解散してしまったとおっしゃっていました。これは結局誰も自ら技術を身に着けようとしなかった、もしくはそういった時間的・体力的余裕を作ること困難であったからではないでしょうか。臨床や研究業務をこなしながら、初耳情報や横文字まみれのIT分野の勉強に踏み込むのは相当な意志力が必要なことは想像に難くありません。もしくは意志力を上回って余りあるメリットが見込まれないと、医師になってから勉強を始めるのは容易でないでしょう。これだけでも医学生がITリテラシーを学ぶ意義はあるのではないかと思います。
ビジネスにはならないけどIT技術の導入で改善できることはたくさんある
ちょっとしたことだけれど、IT技術を導入することで大きく改善できることって実は臨床現場にたくさんあるのではないかと思います。こういったことがなぜ放置されるのか、それは既に説明したように大きな利益が見込まれないというのもあると思います。ですが実は「IT技術を導入してみよう」と考える医療従事者が少ないというのも大きいのではないかと思います。もし現場にそういった技術を持つ人が一人でも多くいれば、些細な問題でもIT技術で改善できることに思い至り、より現場がよくなっていくのではないでしょうか。そしてそういった何のことはない発明が意外と現場の業務能率を大きく変え、莫大な利益を産むこともあるのではないかと思います。
IT技術に精通した人が医療現場で働くことは、実はかなり価値を産むのではないかと考えて(妄想して)います。笑
人を集める力の重要性
医師がエンジニアに外注するにしても、医師だけでなにか開発するにしても、同志を集める力が重要と感じました。飯塚先生の説明では個の力を高めることで、同じように強い個の力を持った人が集まってくるとおしゃっていて、しきりに「個の力」と「集団の力」をつなげてお話をされていました。おっしゃるとおりだなと感じました。以上の項目の内容も含めて、技術をもつ人々を集める力の重要性を痛感します。そのためには自身ががまず力をつけないといけませんね。
最後に
以上の話はあくまで僕が感じたことで、別に「医師はIT技術を身につけるべきだ」と一般論を述べているわけではありません。プログラミングやIT技術に興味がない人はやらなければよいだけだと思います。やらなくても生きていけますし、プログラミングを学ぶべきかはその人の目的や背景によると思いますので。でももしプログラミングに興味のある医療関係者がいましたら以上の話を是非参考にして、勉強をはじめてみるか考えてみてほしいです。
なんというか僕は「プログラミングスキルをぜひぜひ医療現場に活かしたい」というバイアスがかかっているので、なにぶん主観的な部分は散見されるかと思いますがご勘弁を笑
ぜひご意見等お聞かせください!! では。
E資格受験を決めました!
わくばです!
E資格を取得しようと決めました。だいぶ悩みました笑 何しろ最安で10万は必要ですから。
E資格というのはG検定の難しいバージョンと思っていただいて結構です。「E」というのは「Engineer」の意味です。別にG検定受かってなくても受験はできるんですが、やはりエンジニアリングに主眼があるので上級ではあります。
明確な対外的なメリットは今の所ないかなと思います。取ったからといって就職とか有利になるということはなさそうです.
ですがそれに対して僕個人におけるメリットは大きいと考えました。主にメリットは3つです。
メリット
明確に人に見せれるモノが手に入る
医師という縛りがあるぶんエンジニアとしての職業経験は積みづらいですし、AI関連の仕事は初心者が個人で案件を受注できるものではないためアピールできるものがないんです。E資格を取っておけば何かしら頑張った証拠としてアピールしやすいかなと思います。
エンジニアに質問できる
僕は宅浪だったので個人で学習する危うさに思うところがあるんですよね。一人で勉強すると自分が間違って覚えたり理解していることに気づけないんですよ。誰も指摘してくれませんから笑 なので少しでもプロや現場の人にコンタクトを取れる環境は持っておきたかったんです。
学習指針が得られる
これは資格学習全てに通じることですが、学習マップが手に入るのはメリットの一つと思います。特にエンジニアリングの側面はどこまで実装できることが最低限必要なのか分かりづらいので、かなり重要な点かと思います。
余談〜石橋の安全が確認できた頃には〜
キングコングの西野さんが言っていた言葉ですごく心に残っていることがあります。
石橋の安全が確認できたときには、石橋の向こうにある島は完全に占拠されているだろう。
この石橋は崩れないだろうか、そう思って慎重に慎重に石橋を叩いているうちにも、たくさんの人がその橋を渡っていっているんです。そして「よしこの橋は安全だろう。あんなにたくさんの人が安全に渡れているし。 」といざ洋々と自分が渡り着いたときには、渡った先には何も残っていなかった、、、、
これは挑戦者に対して「何の意味があるの」と問いかける人たちに対する最も大きな反論です。笑
このお話を胸に、今後もプログラミングとつきあって行ければと思います。
もし何かに挑戦されている方がいたら一緒に頑張りましょう。では。