みんからきりまでスマートフォン用の表示で見るみんからきりまできりみんです。2020-01-17プログラミングを学ぶにあたって詰まったことと、その後どうなったかプログラミングmizchi.hatenablog.comみんなも何に詰まったか、書いてみてくださいとのことなのでぼくも書いてみたいと思います。当時はゲームクリエイターに憧れていてプログラミングに興味を持ったけど、素人向けの技術書が今のように豊富じゃなかったし田舎だったので本屋で見つけられたプログラミングに関する本がこれだけだった。内容はC言語の基本文法についての解説と、付属のCDにコンパイラが付いていてコマンドプロンプト上で実行出来るようになっていた。変数の概念や四則演算などはなんとなく理解できたけど、コマンドプロンプト上で足し算をすることがどうゲームクリエイターに繋がるのかが全く分からずすぐに飽きてしまった。その後どうなったかこの時の疑問は本質的には専門学校に行っていた頃も残っていて、ようやくちゃんと理解できたのは学校の後期にWebアプリを作り始めたり、就職してAndroidアプリを作ったりし始めてからだった。今はプログラミングを実用的に使う方法を解説した本や記事が大量にあるので同じような経験をする人は少ないかもしれない。条件判定やループなどが直感的に書けなかった専門学校でプログラミングの授業をやって最初に躓いたのは、自分が条件判定などを上手く書くのがむずかしいという事だった。学校では簡単なアルゴリズム問題みたいなのを大量に課題として解かされたんだけど、ぼくは条件が>なのか>=なのか<なのかというのがすぐに混乱してしまって苦戦した。nなのかがなかなか覚えられなかった。while文が終了条件なのか継続条件なのかもすぐに忘れ、自分は根本的にプログラミングの才能がないのではと悩んだ。その後どうなったか今でも競技プログラミングなどをやっていると自分はこれが苦手だなぁと感じるけど、普通の業務で書くようなコードであればほとんど"型"が決まっているので、数え切れないほど似たようなコードを書いているうちに慣れて迷わなくなった。今ではそれが特にエンジニアとして仕事をする上で問題だと思うことはない。予約語や関数名などが覚えられない同じく専門学校でプログラミングをやり始めて思い悩んだのは、とにかく予約語や関数名などが覚えられないということだ。voidだのという文字列を覚えることに苦戦した。当時学校では最初の1年はあえてIDEを使わずテキストエディタでコードを書かされていた。その後どうなったかこれもよく使うものは意外に自然と覚えていった。Androidを始めた頃もたくさんのボイラーテンプレート構文をとても覚えられる気がしなかったが、2年もやっている頃には素で書けるようになっていた。それよりもそもそも初心者は全てを暗記しないと行けないと思いがちだが、別に関数名や予約語なんてなんとなく憶えていれば十分である。現代のプログラミング環境にはコード補完があり予約語や関数はサジェストしてくれるし、ど忘れしたらググればすぐに出てくる。「そういう機能がある」という概念さえ理解できていれば十分である。余談だが英語を学習するとこの辺はだいぶ楽になる。オブジェクト指向が分からなかった突然Javaの授業が始まりクラスは「たこ焼き器の型でインスタンスはできたたこ焼き」だの「AnimalクラスがあってCatクラスとDogクラスはどちらもbow()を実装しているが実行結果は違う」だの説明されたが何も分からなかった。コードを書いていてもnewというのが何をやっているのかがいまいちよく分からず混乱していたし、根本的にオブジェクト指向が何の役に立つのかも分からなかった。その後どうなったか今でも何もわからない文法面で言えばこれもやはりたくさんコードを書くことで自然に理解出来るようになっていった気がする。オブジェクト指向の活用方法のようなものはAndroid開発を始めてだいたい分かるようになった。正しいコーディングスタイルや設計が分からなかった新卒で入った会社では自分よりもプログラミングが出来る人間が誰もいなかったため、ひたすらネットでググりながら見様見真似でAndroidアプリの開発をしていた。当時はモバイルの設計論の情報などはほとんどなく、多くのサンプルコードがスタイルが統一されておらずC言語のようなコーディングスタイルで書かれていたりしたので、何が正しいのか全然分からなかった。その後どうなったかちょうどその頃にリーダブルコードという本に出会い、初めてコードの良し悪しという概念を理解した。その影響で必要以上に強引なコードの共通化をしようとしたり無邪気にリファクタリングをしたりしてバグを出して怒られたりした。趣味でも小さいアプリをいくつも作ったりして同じような失敗を繰り返し、次第に「短いコード」や「共通化」といった良しとされているものが必ずしも優れているとは限らないということを学んだ。その後より良いコードの書き方やコード設計などに興味が強くなり、その関連のブログエントリを書いたり発表をしたりするようになっていった。伝えたいこと生存バイアスというコメントが付くのが目に浮かぶようだが、正直自分はもともとプログラミングの素養がある方だとは思っていない。学校の筆記試験で何も分からず0点を取ったこともある。専門学校時代は自分よりも地頭がよく成績がよく課題を早く進めるクラスメイトはたくさんいた。そんな同級生達の多くがSIerに就職していき、今でもプログラミングを続けているのかは分からない。ぼくはとにかくどんなに苦戦してもプログラミングが嫌いではなかった。就職してからも勉強を続けたしもっと強くなりたいとずっと思い続けてきた。今のぼくはフリーランスのエンジニアとしてそれなりに高給を得て上手く仕事が出来ているし、競技プログラミングをやったりもしている。プログラミングを始めたばかりの頃は地頭の良さやそれまでの人生で培ってきたこと(数学力や英語力)の影響が大きく出るし、簡単にマスターしてしまう他人と比べ自分は向いていないと感じることも多いかもしれない。多くの「分からない」は学習と反復によって補っていけるし、もしあなたがプログラミングが嫌いではないのであれば、ぜひ"才能"を理由に諦めずに続けてみて欲しいと思う。出来なかったのが何か小さなきっかけでスッと理解出来るようなことも世の中にはたくさんあるので。香川県の条例で子供のゲームなどの利用を1日60分程度に制限する条例を検討しているというニュースが話題ですね。www3.nhk.or.jpこれは昨今また国際的にも懸念が広まっているらしいゲーム依存症などへの対策という側面から考えられたもののようです。1日60分という内容の厳しさを考えると、実際には依存症対策というよりは昔ながらの「ゲームばっかりやってると馬鹿になる」というような思想があるのではと想像できます。このエントリでは直接この条例案の是非や人権面の問題などについて主張する意図はなく、代わりにゲームやインターネットなどに対する自分の経験と考えを書きなぐりたいと思います。ここで書くことはあくまで自分の経験と見聞きした事に基づく自分個人の考えであり、科学的根拠や統計的な価値のある情報でないことを予め断っておきます。テレビゲームばかりやっていた不登校時代このブログをウォッチしてくれている人にはもはや周知の事実かもしれませんが、ぼくは小学3年から中学6年までの6年間不登校でした。その後も高校を卒業せず、二十歳に近くなってから社会復帰して今はフリーランスのプログラマーとして働いています。そんなぼくが毎日学校もいかず何をやっていたかというと、基本的にはひたすらテレビゲームばかりやっていました。小学生の頃は少ないゲームソフトをひたすら何度も何度もやり込み遊んでいたし、中学くらいになると少ないお小遣いで当時全盛だった中古のゲームソフトを大量に買ってはがっつりプレイしていました。やっていたゲームのジャンルは様々ですが、一番好きだったのはRPGです。スクエニが大好きでPS時代のスクエニ作品はほとんど全てプレイしました。テレビゲームは総合学習教材のようなものテレビゲームばかりやっていると馬鹿になるし百害あって一利なしだと思っている人は未だに多くいるようです。ぼくが子供の頃はゲーム脳という言葉が流行り、ゲームをやると脳が萎縮するという怪情報が広く出回り親たちが信仰しました。本当にゲーム脳があったかどうかはゲームで育った今の20代の若者を見れば明らかだと思います。今でこそ脳トレゲームなどというジャンルも存在しますが、そういうものに限らずテレビゲームというのはかなり様々な能力が要求される総合的な娯楽です。RPGをプレイするには一定の日本語の語彙力や文章読解力が必要ですし、能力値や所持金など様々な数値を計算したり、効率的なお金の使い方や戦い方を考える必要もあります。多くのゲームでは地図を見る必要があり、左右や東西南北をゲームで覚えたという人もぼくの世代では少なくないのではないでしょうか。ゲームによってはパズルのようなダンジョン攻略があったりもします。時のオカリナの水の神殿に苦しめられた人は多いと思います。物語には様々な時代や地域を元ネタにした世界が広がり、多くが古典的な文学などをオマージュしたようなシナリオが展開されます。このように、ゲームをプレイするには様々な能力や教養が求められるし、プレイを通して自然にそれらを学ぶことが出来るようになっています。読書や映画鑑賞、算数パズルなどが知育として認められるのであれば、テレビゲームはそれらの要素を詰め込んだようなものですしむしろ理想的な知育教材だとすら言えると思います。ぼく個人に関して言えば、物心がついた頃からスーファミでアクションゲームやPRGをプレイしていて、日本語はゲームで覚えたと言っても過言ではありません。不登校時代も様々なゲームをプレイする中でたくさんの文章や計算に触れ、必死に分厚い攻略本を読み込み攻略方法を考えていました。たくさんの物語に触れ善悪について考えさせられたり、様々な国の文化を知ったりしました。中学を卒業しインターネットが開通してからはネットゲームにハマり、チームプレイやコミュニケーションの楽しさや難しさを学びました。テレビもアニメも漫画もインターネットも全てが自分にとって学習の場だったもちろんゲームだけが学習によいといいたいわけではありません。ぼくは学校に言っていなかった分、たくさんテレビ番組をみたり漫画やアニメ作品をたくさん見たり、インターネットで知らない人たちと交流したりすることを通して、本当にたくさんのことを学びました。今振り返ってみると、日々の生活すべてが学びだったのです。自分の親が全く自分に理解のない人間で「登校拒否するような子にはゲームや漫画なんて絶対に与えない」という思想であったならば、ぼくは毎日ひがな一日ベッドでゴロゴロしたりぼーっと有り余る時間を潰して過ごしていたことでしょう。少なくとも自分に関して言えば、たとえ他に娯楽が何も与えられなかったとしても代わりに教科書を読んで勉学に励んだりは絶対にしなかったと思います。渋滞に巻き込まれて何時間も拘束された車の中で娯楽物はなにもなく算数ドリルだけがあったとして、子供は算数ドリルをやり始めるでしょうか。ぼくはやらないと思います。何事も乱用すれば毒だし、適度に摂取すれば学びであるぼくはゲームばかりを一日中やっているのが素晴らしいと言いたいわけではありません。ゲーム依存症といえるような状態になってしまったら他のことが出来なくなってしまうのは確かだと思うし、単調なアクションゲームやポチポチゲーを何も考えずに一日中やっていたらそれはあまり健全ではないでしょう。少なくとも1日60分だとか90分だとかいう時間は依存症などというレベルでは到底ないと思うし、その制限下ではむしろ集中して取り組むことはできないでしょう。多少時間を忘れてやり過ぎてしまうという経験は決して悪いことではないとぼくは考えています。時には狂ったように何かに夢中になるという経験は一生残る思い出になりますし、子供の頃からそういうことを繰り返すことで次第に自制が出来るようになっていくのではないかなと思っています。実際、大人になった今のぼくはゲーム以外にも勉強や他の趣味などやりたいことがたくさんあるので、自分でゲームをプレイする時間をコントロールするようにしています。ゲームを禁止してプログラミングを学ばせるという不毛さ最近は学校教育にもプログラミングが組み込まれることが決まっており、学校以外でもプログラミングを子供に学ばせたいと考えている親御さんは多いのではないでしょうか。その一方でゲームを禁止したりしているのだとしたらそれは大変滑稽なことだと感じます。ゲームとプログラミングは非常に似ている部分が多く、能力としては地続きな面があります。最近こどもに大人気のマインクラフトというゲームなどは本当に多くのことが学べるゲームで、夢中になってやり込むと自然にプログラミングに近いことに触れることになります。プログラミングの教材をこどもに押し付けなくても、マインクラフトを好きなだけやらせてあげるだけで、プログラミングや様々な能力を育てることが出来るのです。子供時代にゲームに夢中になりゲームクリエイターに憧れ、今はプログラマーになったという人はとても多いです。ゲームはプログラミングによって作られています。そのゲームからこどもを引き離してしまったらプログラミング自体への興味もそいでしまう可能性すらあります。結局何が言いたいのかよくわからん。-元不登校エンジニアの立場から-Tweet2020-01-092019年はこれからの10年のための種まきの年だった日記こんにちは。みんちゃんのマネージャーこときりみんです。遅くなりましたが去年の振り返りエントリです。2018年の振り返りエントリはこちら。kirimin.hatenablog.comメインの仕事に関しては無難にこなした年だった2019年はあっという間だったなぁというのが素直な感覚で、あまり何もできなかったのでは?という気がしていたのですが、2018年が転職したり病気になったりと波乱の年だったせいかもしれません。仕事の面でみると、2019年はほぼ1年間ずっと同じプロダクトの開発をしていました。大変なこともありましたが技術的にはあまりアクティブな事をやらなかったというのもあり、まあわりと普通にAndroid開発をやっていた年という感じでした。kirimin.hatenablog.com意外といろいろなことに挑戦していた一方で、主案件以外の活動を振り返ってみると、意外といろいろなことに挑戦した1年だったなということに振り返ってみて気付きました。2月にはDroidKaigi2019の公式アプリに積極的にコントリビュートをしたり、4月には技術書典6で初めて本格的な技術同人誌「フリーランスを完全に理解できる本」を制作し、とても高い評判を頂きました。9月の技術書典7にもサークル参加し、「エンジニアのためのプログラミング以外入門」という本を制作しこちらも好評でした。技術書典だけではなく夏コミにもサークル参加し、生まれて初めて漫画を描いて配布しました。冬コミでも漫画本を出しました。競プロを始めた秋頃からは競技プログラミングに取り組み始め、その対策のために今まで大きなコンプレックスがあった数学やアルゴリズムの勉強を始めました。ぼくは不登校→専門学校という学歴のため本当に数学の基礎が絶望的になかったのですが、一つ一つ高校レベルの数学知識を身に着けていくことは地味に人生の大きな転機になっている気がしています。VTuberのマネージャーとしてバーチャル幼女プログラマーきりみんちゃんのマネージャーとしてかなり積極的に活動した1年でもありました。様々なプロモーションをかんがえたり、配信ネタやコラボを企画したりとどうすればきりみんちゃんがもっと輝けるのかかなり真面目に考えました。おかげさまできりみんちゃんのチャンネル登録者数は一昨年の末はだいたい800人くらいだったのが今では2300人以上になりました。一昨年の夏に開設したきりみんちゃんのTwitterアカウントもほとんど受け身のフォローしかしてないにも関わらずフォロワー3200人以上になりとうとう@kiriminのフォロワー数を追い越しました。絵は描けなかったけど少しは上手くなった去年は仕事が忙しかったりいろいろなイベントに参加したりしていた関係であんまりイラストの練習はできなかったなぁと思ってるのですが、1年前と見比べてみると随分イラストも上達したような気がします。体調が比較的安定していた2018年には鬱に近い状態になり一時はまったく身体が動かせないような状態になってしまいましたが、2019年は多少ストレスで危ういことはありつつも、安定したメンタルで過ごせたかなと思っています。相変わらず薬は飲んでいますが、薬さえ飲み忘れなければあまり不安感を感じたりすることもない日々を送れています。総括と2020年2019年を総括すると、あまり大きな変化や注目を集めるような活動はできなかった一方、新しいことにいろいろとチャレンジして、これから更にアクティブにやりたいことをやっていくための種まきの年だったのかなと思いました。2020年は去年まいた種を苗くらいまで育てられる年にできたらいいなぁと思っています。それでは今後ともよろしくおねがいします。去年の10月からお手伝いしていた案件が今月で最後でした。何をしていたか例によって決済関連のプロダクトで、Androidチームのメンバーとしていくつかの機能の開発を担当したりしていました。なんかTLになったりしたような気もしますが気のせいだったかもしれません。働いていたか最初に誘われた時はまだ体調不良から立ち直っていない状態だったため、まずはお試しという形で週3で入りました。その後すぐにプロダクトの状況や自分の体調などを鑑みて、もっと稼働時間を増やした方が精神衛生上もかえって楽だと感じ、週4にしてもらい、1年くらい週4稼働で働いたあと、最後の数ヶ月はまた週3で働いていました。業務委託のエンジニアが多くない組織で、時短稼働の要望に柔軟に対応して頂いてとてもありがたかったです。いろいろな人がいる大きな組織で、かつ非常に成功したメガベンチャーの新規事業というとても貴重な現場に立ち会えてとても勉強になりました。メガベンチャー組織の外からではあまり見えない良さや課題感などを見ることが出来て興味深かったです。自分の体験としても、今までの仕事ではあまり経験したことのないような悩み(人によって設計思想に対する考え方や感じる課題が大きく異なること、スタートアップ的なプロジェクトスタイルで大規模開発をするとどうなるかなど)に直面し学びが深かったです。Slackなどを通じて組織内の様々な人と知り合い仲良くなったり、Twitterでしか面識がなかった人と交流出来たりと大きな組織ならではの出会いもありました。来年以降まだあまりちゃんとは決めていないですが、しばらく大きな仕事はせずに勉強や趣味に没頭する時間を作りたいと考えています。自分がAndroidアプリ開発しか出来ていない現状にかなり課題感があり、もっと自分の技術や経験の幅を広げたいと思っています。Android開発に関しては現状かなり需要があり単価も高く、UI部分を作るという仕事自体は好きではあるのですが、ここ数年は正直スキルアップが出来ていないと感じていて、ただAndroidの次々に出てくる新しい仕様やライブラリなどを追い、本質的なのか分からない複雑な設計などに悩み、実際に作るものは技術的に特に難しいことをせずにボイラーテンプレートのようなものをひたすら書いているような気がしています。具体的に何がやりたいのかと問われるとまだハッキリとは答えられないのですが、そもそも自分はAndroid開発以外をまともにしたことがないのでそれを判断出来るレベルですらないのではと思っています。直近ではコンピューターサイエンスの知識を改めて学び直し、競技プログラミングなどを通し数学やアルゴリズムを活用した実装の力を付け、バックエンドの設計、開発から運用までを最低限出来るようになり作りたいと思ったWebサービスを短時間ですぐに作成出来るようになりたいと考えています。その先にAndroid開発以上に割の良い仕事が存在するのかは分からないですが、自分のプログラマーとしての人生における技術探求をここで終わりにしたくないという気持ちがあります。大胆にチャレンジしたい。イラスト最近の記事が告知ばかりになっていますが、冬コミでサークル「きりみんちゃんねる」として本を出します。西R19b「きりみんちゃんねる」です。本の内容はバーチャル幼女プログラマーきりみんちゃんが雪の日に早朝の町を散策するだけの漫画です。みんちゃんを知らなくてもオリジナル漫画として楽しめる内容です。サンプル!こんな感じの漫画だよ!幼女のきりみんちゃんが雪の町を散策したりするだけの話です。はてなブログProKotlinと設計の話が好きなAndroidエンジニアです。-元不登校エンジニアの立場から-2019年はこれからの10年のための種まきの年だった1.1年ほど常駐で携わった案件を仕事納めしましたC97(冬コミ)でフルカラーの漫画本を出しますスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。