tag:crieit.net,2005:https://crieit.net/users/macha3k/feed
taira.masaruの投稿 - Crieit
Crieitでユーザーtaira.masaruによる最近の投稿
2020-01-17T23:14:56+09:00
https://crieit.net/users/macha3k/feed
tag:crieit.net,2005:PublicArticle/15688
2020-01-17T23:13:26+09:00
2020-01-17T23:14:56+09:00
https://crieit.net/posts/002b376f00c2d59eba16a261f29b18ee
プログラミングでつまずいたところ(主に昔話)
<p>プログラミングでつまづいてきたこと みたいなブログがいくつかあった。<br />
最近は人に教える機会がよくあるので、自分はどうだったかなと思い出しながら書いてみたら<br />
ただの昔話になってしまった。</p>
<p>せっかく書いたので、Qiitaにでも投稿しようかと思ったけどポエムっぽいのでやめた。</p>
<p>CrieitだとポエムもOKみたいなのでこちらに書くことにしました。</p>
<h2 id="プログラミング以前"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E4%BB%A5%E5%89%8D">プログラミング以前</a></h2>
<p>中学生のときはプログラミングはしていなかった。<br />
ただ、友達がパソコンを持っていて、使わせてもらったりしてた。<br />
何をしていたか覚えていないけど、面白いと感じたのだろう。</p>
<p>特に進路を決めていなかったけど、<br />
技術家庭科で電子回路の授業が面白かったこともあって<br />
高専の電子情報工学科に進んだ。</p>
<h2 id="高専生"><a href="#%E9%AB%98%E5%B0%82%E7%94%9F">高専生</a></h2>
<p>上記のように軽い気持ちで進んだので、高専では素晴らしく落ちこぼれていた。<br />
留年こそしなかったけど、毎年ギリギリだった。</p>
<p>1−4年生まではプログラミングが面白いと思ったことはなかったと思う。<br />
何がわからないかもわからないのであまり覚えてることも少ない。</p>
<h3 id="1 - 2年生"><a href="#1+-+2%E5%B9%B4%E7%94%9F">1 - 2年生</a></h3>
<ul>
<li>プログラミングを初めて体験した。</li>
<li>trueBASICなるものを授業でやった。よくわからなかった。</li>
<li>図書館にあった雑誌に掲載されていたBASICのコードポケコンに打ち込んで出来たゲームで遊んだ。</li>
<li>自分でなにか作れるようなことはなかったし何が作れるのかもよくわからなかった。</li>
<li>C言語を授業でやった。
<ul>
<li>みんなポインタがわからないと言っていたが、自分はポインタがわからないということすらわかっていなかった</li>
<li>配列がわかっていなかったと思う。大カッコの意味がわからないと思った記憶がある。</li>
<li>何らかのデータを固定長でファイルに書き込み、それを読み込んで表示するプログラムを書いたけど、「ABCDE」と保存したら「ABCDE」と読み込むのは当たり前やん?何が嬉しんだろう?って思った。</li>
</ul></li>
</ul>
<h3 id="3 - 4年生"><a href="#3+-+4%E5%B9%B4%E7%94%9F">3 - 4年生</a></h3>
<ul>
<li>確かアルゴリズム論という授業があったので、ソートアルゴリズムとかを習った気がする</li>
<li>データ構造も習ったとおもう。絶対理解していないけど。</li>
<li>ハノイの塔で再帰とか習った気がするけど、自力で解ける気がしなかった。</li>
<li>CUIなので、ハノイの塔のビジュアル的なものをどうやるのか想像もつかなかった。</li>
<li>4年生のときに自分のパソコンが手にはいったと思う。今思うと遅い、よくやってたな。</li>
</ul>
<h3 id="5年生"><a href="#5%E5%B9%B4%E7%94%9F">5年生</a></h3>
<p>5年生になり、選んだ卒研の研究室で担当教官が、構造体とポインタを使ったリスト構造について詳しく教えてくれた。<br />
すごくわかりやすく、C言語「完全に理解した」と思った。</p>
<p>卒研の内容は探索を使うものだったと思う。<br />
確か倉庫番を解くプログラムを作って、新たな探索アルゴリズム作るというものだった。<br />
幅優先探索、深さ優先探索、A*などがあったと記憶している。<br />
教官からはそれらの探索よりなにか秀でたものを作れと言われた。</p>
<p>卒業を諦めた。</p>
<h2 id="プログラミングが面白くなってきた"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%8C%E9%9D%A2%E7%99%BD%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%8D%E3%81%9F">プログラミングが面白くなってきた</a></h2>
<p>担当教官に伝えたところ課題を変更し、Perl CGIでWebアプリケーションを作ることになった。<br />
確か、先生が課題を出し、学生はそれをWeb上で回答し、先生が採点できるようにするみたいなもの作った。<br />
この頃はWebアプリケーションという言葉は使っていなかったと思う。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/Perlで作るCGI入門-基礎編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/479730507X">https://www.amazon.co.jp/Perlで作るCGI入門-基礎編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/479730507X</a><br />
<a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/Perlで作るCGI入門-応用編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/4797305819">https://www.amazon.co.jp/Perlで作るCGI入門-応用編―生きたホームページを作るために-SOFTBANK-BOOKS-結城/dp/4797305819</a></p>
<p>担当教官からこの本を借りて読んでみた。</p>
<p>次に、kent-webにある掲示板のソースコードを下記のリファレンス本を使って、全部読んだ。<br />
<a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/CGI-Perl-ポケットリファレンス-Pocket-reference/dp/4774107557">https://www.amazon.co.jp/CGI-Perl-ポケットリファレンス-Pocket-reference/dp/4774107557</a></p>
<p>このとき、プログラムどのように動いているか理解できたことを覚えてる。<br />
これなら自分でWebアプリを作れそうと感じた。</p>
<p>それを真似ながら、0から卒研のWebアプリを作っていった。</p>
<p>今まではC言語で制御構文やファイルの読み書き、アルゴリズムなどCUIでプログラムを習ってきた。<br />
いざ何かを作れと言われたところでCUIでどうやってものを作ればよいのか、<br />
何ができるのか全く想像出来なかった。<br />
しかし、Perl CGIで掲示板を作るとなると目に見えるGUIのシステムが出来上がるのが面白かった。</p>
<p>そういえば、クラスメイトにWebに詳しい人がいて<br />
卒研用のWebアプリを作っているときに、Perl以外にもPHPというものがあると教えてくれた<br />
また、SQLの存在もこのあたりで知った。<br />
授業ではER図の書き方とかも習った気がする。</p>
<p>select * from usersを実行すると<br />
ターミナル内に表形式で、表示されるけど<br />
それをどうやったらPHPやPerlの中で使えるのか全く想像出来なかった。</p>
<p>この頃、まだGoogleの存在は知らなかったと思うし、<br />
自分自身、検索して調べるという習慣もなかったと思う。</p>
<p>Webアプリは完成し、無事卒業することが出来た。</p>
<p>この経験で自分にもプログラミングができるという自信がついたのだろう。<br />
この経験がなければ、プログラミングの仕事はしてなかったかもしれない。</p>
<h2 id="2001 - 社会人 1社目"><a href="#2001+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+1%E7%A4%BE%E7%9B%AE">2001 - 社会人 1社目</a></h2>
<p>卒業後入った会社はアウトソーシングの会社だった。<br />
3ヶ月間は研修で、その後派遣で様々な現場に出てもらうみたいなことだった。</p>
<p>3ヶ月間の研修はperl CGIでなにか作るというものだった。<br />
卒研でやったことと同じものだったので、それなりに上手くやっていけてたと思う。</p>
<p>3ヶ月の研修が終わったあと会社を辞めた。</p>
<h2 id="2002 - 社会人 2社目"><a href="#2002+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+2%E7%A4%BE%E7%9B%AE">2002 - 社会人 2社目</a></h2>
<p>その後、半年ほどは知人が商売をすると言うので手伝ったりしていたと思う。<br />
確かこの頃に家なき子になったり色々あったけどバイトをすることになった。</p>
<p>内容はWebサーバやメールサーバの構築、Webアプリの開発だったと思う。<br />
出会い系サイトの。</p>
<p>ここでは、Linuxを使ってWeb、メール、DNSの各種サーバを構築をさせてもらった<br />
詳しく覚えていないけど、すごく勉強になった。</p>
<p>この頃、学生時代の友人たちともチャットでつながっていて<br />
色々情報交換をしていた。<br />
その中でRubyっていうのがすごく良いという話があったので、勉強してみた。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/プログラミングRuby―達人プログラマーガイド-デビット-トーマス/dp/4894714531">https://www.amazon.co.jp/プログラミングRuby―達人プログラマーガイド-デビット-トーマス/dp/4894714531</a></p>
<p>この本を買って読んでみた。<br />
Rubyはすべてがオブジェクトで云々。<br />
数字の「1」もオブジェクトです。<br />
何を言っているのか全くわからなかった。<br />
ここも何がわからないのかがわからない感じだったと思う。</p>
<p>ジュークボックスのサンプルコードが載ってたような気がするけど、<br />
これはどうやって音がでるのだ???みたいな。</p>
<p>学生のときにCUIでイメージできなかったときの感覚に似ていたと思う。</p>
<h2 id="2003 - 社会人 3社目"><a href="#2003+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+3%E7%A4%BE%E7%9B%AE">2003 - 社会人 3社目</a></h2>
<p>その後、アルバイトはその業務自体がなくなったため終了し、別の会社を紹介してもらい入社した。</p>
<p>この頃はまだ、フレームワークというものは知らなかった。<br />
ひたすら生のPHPを書いていた。</p>
<p>ある時、Smartyというテンプレートエンジンを見つけて、面白そうと思い勉強した。<br />
今までごちゃごちゃしていたコードがスッキリした気がした。</p>
<p>業務のコードにも入れてみたところ、上司から、「このコードよくわからないから使わないで」と言われた。<br />
そりゃ勝手にコードの書き方を大きく変えたらあかんよなぁと今だと思う。あの頃はまだ若くて世間知らずだった。</p>
<h2 id="2005 - 社会人 4社目"><a href="#2005+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+4%E7%A4%BE%E7%9B%AE">2005 - 社会人 4社目</a></h2>
<p>次の会社でもPHPを使ったWebシステムを作っていた。<br />
Smartyなんかも導入した気がする。</p>
<p>2005年頃だったか、新しいプロジェクトが始まったときにフレームワークを導入することになった。<br />
このとき選んだのはEthnaだった。<br />
日本発だったっけ?GREEで使われたっけ?<br />
なんかそんな理由で選んだと思う。</p>
<p>MVCなんて言葉はまだ知らなかったと思うし、理解もしていなかったけど、<br />
バリデーションなんかを決まった書き方で書いたりと初めてフレームワークを使ってみて便利な部分がたくさんあったような気がする。</p>
<p>もう10年近く前に関わりがなくなったプロジェクトだけど、まだそれっぽいコードが動いているみたい😱😱😱</p>
<h2 id="2010 - 社会人4社目 その2"><a href="#2010+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA4%E7%A4%BE%E7%9B%AE+%E3%81%9D%E3%81%AE2">2010 - 社会人4社目 その2</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="https://www.amazon.co.jp/RailsによるアジャイルWebアプリケーション開発-第2版-Dave-Thomas/dp/4274066967/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=RailsによるアジャイルWebアプリケーション開発+第2版&qid=1579244186&sr=8-1">https://www.amazon.co.jp/RailsによるアジャイルWebアプリケーション開発-第2版-Dave-Thomas/dp/4274066967/ref=sr_1_1?__mk_ja_JP=カタカナ&keywords=RailsによるアジャイルWebアプリケーション開発+第2版&qid=1579244186&sr=8-1</a><br />
という本が会社にあった。<br />
誰かが買ってきたのだろう。</p>
<p>関わっていたプロジェクトも落ち着いていたので読んでみた。<br />
具体的なECサイトという内容だったのでよく理解でき面白かった。</p>
<p>業務の合間や、休日出勤したけどやる気がでないときに、この本を読んでRailsの勉強をした。</p>
<p>ランチセレクターというアプリを作った。<br />
会社周辺のよく行く店を和洋中などの属性をもたせて登録する。<br />
今日の気分から属性を選んでボタンをクリックすると店を選ぶという単純なものだったけど<br />
楽しんで作ったし、周りの忙しい人は面白そうでええなーと言ってた。</p>
<p>この頃から業務ではRubyをメインで利用するになってきた。</p>
<p>まずは社内でしか使わないものをRuby / Railsで作り、<br />
その後、他の業務でもRuby / Railsを使うようになった。</p>
<p>このあたりからまた新しいことがたくさん出てきて色々わからないことが増えてきた。</p>
<p>このときにRestfulの考え方が新しく出てきて悩んだ気がする。</p>
<p>上記の本はRails1系だったと思うんだけど、例えばユーザの編集画面のURLは<br />
<code>/users/edit/1</code> だった<br />
Rails2系からは<br />
<code>/users/1/edit</code> になっていた。<br />
自分がよく使っていた形も前者だったのでRails2の形になったときになんだろうこれと思った。</p>
<p>Rubyを使っていくと色々と新しい言葉が出てきた<br />
イテレータ、ブロック、ラムダ<br />
このあたりはすぐには理解できなかったと思う。<br />
やっていくうちになんとなくわかってきて今に至っている。</p>
<p>MVCやオブジェクト指向なんかは<br />
「完全に理解した」と「全くわからん」の繰り返しだ。</p>
<h2 id="2015 - 社会人 5社目"><a href="#2015+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+5%E7%A4%BE%E7%9B%AE">2015 - 社会人 5社目</a></h2>
<p>転職した。<br />
Rubyを使う仕事に関われた。<br />
が、1年でまた転職。</p>
<h2 id="2016 - 社会人 6社目"><a href="#2016+-+%E7%A4%BE%E4%BC%9A%E4%BA%BA+6%E7%A4%BE%E7%9B%AE">2016 - 社会人 6社目</a></h2>
<p>この頃には、わからないことも調べながら理解していくことが出来てきた気がする。</p>
<p>ReactやVue.jsを使うようになったけど、<br />
何がわからないかわからないというような状態にはならなくなった。</p>
<h2 id="2019 フリーランス 1年目"><a href="#2019+%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%82%B9+1%E5%B9%B4%E7%9B%AE">2019 フリーランス 1年目</a></h2>
<p>2019年からフリーランスとしてやっている。<br />
最近ではRuby以外だとJavascriptをよく使う。</p>
<p>こちらは未だにわからないことだらけだけど、<br />
何がわからないか少し具体的になってきた気がする。</p>
<p>Promiseは全然わからん。async/await、setTimeout<br />
このあたりが出てくると頭がこんがらがる。</p>
<p>これまでに出てきた言語を見るとわかるように学生の頃のC言語以外は<br />
静的型付け言語の経験はない。<br />
なので最近のTypeScriptもよくわからない。<br />
Reactの案件で使われていることがあるけど、ライブラリなどの型が違ってコンパイルが通らず<br />
どうすればよいのかわからずanyにしてみたり。</p>
<p>色々経験してきて、これを学べば何ができるようになるのかが想像できるようになったのだろうか。</p>
<h2 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h2>
<p>こうやって振り返ってみると、<br />
インターネットが普及して、Webアプリケーションが一般的になってきたことで<br />
卒研で学んだWebアプリの知識を活かせる仕事につけたことはすごく運が良かったと思う。</p>
<p>プログラミングでつまずいたことという点で言えば</p>
<ul>
<li>なにがわからないかがわからなかった。</li>
<li>やってることで何ができるようになるのかイメージできなかった。(しなかったのかも)</li>
</ul>
<p>今になって思ったけど、子供の頃から文法というものが苦手だったのかもしれない。<br />
小学生のころは国語は苦手だった。中学生でも英語は苦手だった。<br />
文法というものを意識したことがない気がする。</p>
<p>プログラミングも文法がある。<br />
文法を意識していないから何もわからなかったのだろう。</p>
<p>他にも、小学生のころに応用問題が苦手のようですと言われてた。<br />
学んだことを応用してなにかに活かすとかが苦手なのだろう。<br />
具体、抽象を言ったり来たりするのも苦手なのだろう。</p>
taira.masaru