桐生あんずです

日常やプログラミングについて書いています。

京大マイコンクラブに4月から入会しました&OB会でLTをしました

桐生あんずです。近況エントリです。

4月から京大マイコンクラブに入会しています。

www.kmc.gr.jp

 

どんなサークルかということですが、上記の公式サイトの入部案内ページによると

KMCはコンピュータを使って何かを創るサークルです。

具体的にはコンピュータを使ったゲーム制作、音楽制作、イラスト制作、 Webサービス開発、電子工作をはじめとする創作活動や、 競技プログラミング、情報分野の勉強会、 そしてサーバいじり等を行っています。 また、2010年からは部誌を毎年制作し、 上記の活動等を書籍という形で公開しています。

これらの活動を部員のそれぞれが思い思いに行いながら、 仲間と意見交換し、先輩から助言をもらい、互いに切磋琢磨して行く場がKMCです。

 

 といった物作りサークルです。「マイコン*1というネーミングからプログラミングサークルなのかな?と一瞬思ってしまいがちですがゲーム、イラスト、DTMなど「ものづくり」に関係することなら何でもやっているものづくりサークルです。なので物作りが好きないろんな人たちがいます。

1, 入った経緯

 大学5回生になってまで、なぜ新しいサークルに入ろうかと思ったかというと、私がプログラミングに触れるきっかけになった「1か月でWebサービスを作る勉強会」の主催者のid:hidesysさんがKMCのOBの方であり、京都のWeb界隈周りで知り合うことができたid:Pasta-Kさんやid:uiureoさんやid:sora_hさんも関わっているサークルで、そういったWebに強い人たちがワイワイしていて面白そうだなーと2017年の冬頃から思っていました。

そのような強い人たちがたくさんいそうで私のような初心者が関わっても大丈夫かな〜と思いつつ、4月に新歓があるという情報を聞き、「まだ一応大学生*2なんだしここはせっかくだから入ってみちゃおう」という半ば衝動的な気持ちで入部を本格的に考えることにしました。

ということで、Twitterの公式アカウントにDMを送り部室で行われていた新歓イベントに参加し、話を聞きつつ、周囲を見渡すとみんなパソコンをいじってゲームをしていたりコードを書いてて楽しそうだなあと思ったのでそのまま会費を払って入会しました。その後そのまま部室でコード書いてたか何か作業してた気がする。

あと、5回生だけど新入生扱いということでご飯を奢ってもらえました。良い話。

2, 入って良かったこと

KMCに入部してそろそろ2ヶ月が経ったという感じですが、その間の入って良かったことを紹介します。

2.1, ゲームを1日で作る企画に参加できた

5/6(日)にラピッドコーディング祭りという企画がありました。これは1日(実質発表時間の関係で4時間くらい)でゲームを作っちゃおうというイベントで、KMCの既存会員に方々にメンターをしてもらいながらコードを書くことができます。

今までゲームプログラミングをしたことがなくちゃんと作り終えるかどうか半ば不安な状態でこの企画に参加したのですが、id:tenさんやid:asRagiさんの手厚いアドバイスのおかげで、Processingで「アイドルの女の子が上下に移動して曲が30秒間流れていいねを稼ぐゲーム」を作ることができました。

www.nicovideo.jp

当たり判定の幅の計算で絶対値を利用するのが、しばらく数学自体から離れていた自分からするとすごい知見でした…。

そういった発見もありつつ、ゲームの流れに必要な変数や関数を定義していくことでゲームが作り上げられていくのが面白かったです。

Webサービスは目に見えてちゃんと動くものを作るのに多少時間がかかることもありますが、ゲームプログラミングの場合は、コードを書いてはデバッグを繰り返していく作業が多く、目に見えた変化がたくさんあって面白いなと思いました。

あと、発表後にお好み焼きを食べに行ったのですが、女子の新入生も混じった10人ほどの集まりで「大学最近どう?」といった世間話の会話は一切発生せず、食べ終わるまで「最初に触ったプログラミング言語」の話からそれらに関連する技術の話しか発生しない空間になっていたのがめちゃくちゃ良かったです。(言い方がアレになっていますが悪いことを言っているつもりではありません)

今はRubyKaigiの余波C言語の基本を勉強しているので、この流れでC#でゲームを作ってみることにも挑戦できたらと野望を企てています。(アイデアはあるけど、またまたオタサーの姫ネタなので万人受けするかは分からない)

2.2, Slackでのコミュニケーションが楽しい

KMCはコミュニケーションツールとしてPukiWikiとSlackを利用しています。

後者のSlackですが、何でも質問ができる「#beginners」チャンネルやメイン雑談の「#active」チャンネルを始めとして、「#◯◯(会員のID名)-memo」といった会員の分報チャンネルといったものまで存在します。もちろん競プロやゲーム作り、お絵かきについても好きに話せるチャンネルもあります。そのほかにも、たくさんのチャンネルが存在しておりとても賑やかです。KMCのSlackを覗くのが最近の良い暇つぶしになっています。

また、バイトや他の用事の関係でリアルの活動に参加できなくても、会員の方々がどのようなことをされているかをネットでチェックすることができるのでとてもありがたいです。

後、自分も「#kiryuanzu-memo」という分報チャンネルを作ってみました。Twitterで呟くほどではないけど言いたいことがある時に気楽に使えるので楽しいです。進捗報告などにも使ってます。 また、自分が作っているサービスについての助言やフィードバックをもらうこともできて、パブリックに出す前にも人から反応をもらうことでモチベーションを保って開発を進められるというメリットがありました。

2.3, 部室と新歓飲み会とOB会

リアルでのKMCとの関わりですが、バイトや授業の関係で平日の20時以降に部室に遊びに行ってコードを書いたりお酒を飲ませてもらったりボードゲームで遊ぶといったことをちょくちょくやっています。今月はまだ行けてないのでそろそろ遊びに行きたい。

部室に遊びに行くと、ゲームに集中している人もいれば、コードを書いている人、技術の話をしている人、お酒を飲んでいる人、ボードゲームをやろうという誘いを人々に持ちかける人、色んな人がたくさんいます。

その中で好きにコードを書いたり、何か別のことをしたくなったら他の人に構ってみたりすることができて居心地がとてもよくて好きです。

交流系のイベントだと、新歓飲み会とOB会にも参加させてもらいました。新歓飲み会では、SlackやTwitterでしかまだちゃんと関わっていなかった人と話すことができたり(オフ会っぽい)、2次会では京都Web界隈おなじみと噂のDEN-ENでタワービールを眺めることができました。

 

OB会では、恥ずかしながら先月開発したCrash ChatについてのLT発表をさせていただきました。

OB会の数週間前にSlackでLT発表者を募集しており、よくわからないままノリで手をあげたのですが、会場に入ったところ有名企業に勤めていらっしゃるエンジニアの方々や自分で会社を運営されている方が沢山いられる空間でめちゃくちゃびっくりしました。

その空間の中、「サークルクラッシュをご存知ですか?」というスライドを見せてウケが取れたので私は満足です。

(最近のKMCについての紹介LTが続く中、謎の制作物についてプレゼンをする発表をしてしまい他の発表者の方々に申し訳なかった気持ちもある)

 

www.slideshare.net

そんなことがありつつも、この発表のおかげでOBの方々に顔を覚えてもらい「面白かったよ」とのコメントを数人の方からいただくことができました。

また、来月も大阪Ruby会議01でLTをする予定(今からめちゃくちゃ緊張している)なので大人数の前でLTをする時の感覚を多少つかむことができて良かったです。

ちなみに、新歓飲みでもOB会でも飲み会終わりに鴨川に行きました。他のエンジニアコミュニティでもあるけど、なんだかんだで最終的にみんな「川」へと集まってしまう流れ、個人的にとても好きです。ちょっとしたエモさに溢れてる。

 

4,まとめ

今までIT系のコミュニティに関わる時は、勉強会やカンファレンスがメインだったので現役エンジニアさんなど少し年の離れた方々と関わる機会が多かったのですが、KMCに入ったことで同年代で物作りに興味のある人たちと関わる機会を作ることができたのが本当に良かったなと思います。

同年代といっても様々で、プログラミングだけに限定しても、これからプログラミングを始める新入生や既に高校生の頃からコードを書き続けている新入生、ゲーム制作をバンバンやってパブリックに公開している会員の人、競プロをやりまくっている人、電光掲示板を作る人、ISUCONやCTFに興味がある人、SlackBotを作っている人、インフラにとても強い人たち、Javascriptに強い人、PythonRubyをメインに書いている人、多種多様です。ぶっちゃけ全部紹介しきれません。

関わり始めてまだ2ヶ月ほどですが、会員の人それぞれがみんな何か興味があって面白いな〜と思います。もちろん物作り以外にも、ゲームやアニメ、Vtuberなどを追いまくっている人もいて、好きなことを追求してて良いなあと思います。

なので、思い切って入ってみて良かったです。夏休みも近いので今後も良い距離感で活動に関わっていけたらと思います。

そんな感じの近況でした。

*1:マイクロコンピュータの略称。いわゆる今のパソコンみたいな存在。私のお父さんの世代で使われていた言葉の模様

*2:なお、KMCは大学生じゃない人も入れるらしいです

Ruby歴1年の文系大学生がRubyKaigi2回目に行って感じたこと

桐生あんずです。タイトルがなんか長々しい感じになっててすみません。

1,はじめに

去年のRubyKaigiでの出来事に心打たれて、5/30(木)~6/2(土)に仙台で行われた今年のRubyKaigiにも参加してきました。

rubykaigi.org

また、今回は永和システムマネジメントさんの学生支援により交通費・宿泊費・参加費等を全額負担していただき参加することができました。本当にありがとうございました。

また、宿に関してもえもり(@emorima)さん主催の貸切ゲストハウスに泊まらせていただくことができ、女性Rubyistの方々と楽しく5日間を過ごすことができました。関わっていただいた方々本当にお世話になりました。去年も行われていたRailsGirlsJapanさんの支援で来られていた方々にもそこでお会いすることができ大変嬉しかったです。

今回の記事では、去年感じたことと比較しつつ個人的な話も含めて思ったことを書いていこうと思います。

 

2,「RubyKaigiはRubyistによるRubyistのための祭典である」

最初から何を言っているんだという話なのですが、登壇されている方全員が本当にRubyが「大好き」なんだなということが伝わってくるカンファレンスです。

去年は正直、Rubyに対する知識もあまりなく「なんだかめちゃくちゃ難しいことをしているんだな…」という気持ちで発表を唸りながら眺めていることがたくさんありました。今回も、難しい内容がたくさんあり、全員の方の発表内容を完全に理解したとは到底言えないのですが、毎回強く感じることがありました。

「ああ、この人たちは本気でRubyに関わるあらゆることに対してよりよく、面白くしようとしているんだ…」

RubyC言語拡張、iSeqへの追求、JITコンパイラの最適化手法、irbに関わる実装など、Rubyの内部のあらゆるものに探求し、よりよくしようとOSS開発や実装を行なっている人たちが何を考えてどんな取り組みを行なっているかを発表を通して生で見聞きすることができるのがRubyKaigiの最大の特徴だと思います。

MatzとRubyコミッターの方々によるトークタイムのイベントもあったのですが、ここでもRubyの機能の実装の裏側でどんなやりとりが繰り広げられているかを垣間見ることができる大変面白い時間でした。

去年は「なんか面白そうなことをしているんだなー!」とワクワクフワフワした気持ちで眺めていることが多かったのですが、「あっこの人たちはRubyに対して本気(マジ)になって向き合っているんだな…」と去年よりもRubyに対する知識が深められていたからこそスピーカーさん達の恐ろしさを知ってしまう場だったと思います。

 

3,技術学習に対するモチベーションが上がった

参加して感じたのは、Rubyのカンファレンスではあるけど「あっこれC言語のこともっと知るべきだな」ということでした。 

Rubyは本当に書きやすい言語で、初心者にもオススメの言語としてよく紹介されており、私も最近、JavaやGoに触れてみてそう紹介されている理由が分かってきました。最初にRubyを始めるのは良い選択だと個人的には思いますが、RubyのありがたさとRuby独自の特徴を根本から理解するためにはのはC言語等の他言語のメリットやデメリットを知ってからなのではと今回のカンファレンスを通して強く思いました。

会期中もRubyの処理のスピードに対してC言語の処理スピードと比較している発表が何個もありました。それらの発表を見ているうちに、Rubyの便利さや特徴をもっと知るためにもまずC言語と仲良くしたいな、という気持ちがじわじわと強まっていき、我慢できずに帰り道に立ち寄った本屋で「苦しんで覚えるC言語」を買いました。

 

苦しんで覚えるC言語

苦しんで覚えるC言語

 

 

今100ページ近くまで読んでいますが、簡単な概要のパートでも「えっこんなことも用意して書かなきゃいけないの…?Ruby簡単に書けすぎなのでは…!?」と驚きの連続にぶつかっています。(こういうこと適当に書いて怒られたら怖い)

 

4,同年代のRubyistと知り合うことができた

会期中は私と同い年のRubyistの子達とも会うことができました。

その中で知り合った女の子の2人は、高校の頃からRubyを知って高校卒業してすぐエンジニアになってRuby技術者認定試験Goldも持っているとのことで、大学4年でRubyを知った自分からするとカルチャーショックを受けました。

そういった比較的早く学習して実際に仕事をしている子と自分を比べて焦るのはあまりよろしくないとは思うのでそれでマイナスなことを考えるのはやめましたが、同い年でここまでやっている子がいるのだから、私もこれからも頑張らなきゃとつい思ってしまいました。

なので先ほどのC言語教本と一緒に「Ruby技術者認定試験合格教本」を買いました。Silverの問題をさらっと見た感じ、そこまで厳しい内容ではなさそうだったので、近いうちに試験を受けてみようかなと思います。(実は前ブログに書いた基本情報技術者試験も就活の忙しさに流されて受けられてないので両方ともちゃんと受けたい)

 

[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応) Ruby公式資格教科書

[改訂2版]Ruby技術者認定試験合格教本(Silver/Gold対応) Ruby公式資格教科書

 

 また、同年代のRubyistとしてインパクトがある存在はやっぱりそらはーさんでした。同年代として比べて良いかすらも分からない存在のお方なんですが。(中学生からRubyのコミッターをやられている方です)

会期中に会うたびにネットワーク班の人たちと一緒になってワイワイ話したり、ESMのドリンクアップの時に酔っ払いのノリでツーショットで写真を撮りました。すごく楽しかったです。次はKMC(京大マイコンクラブ)のOB会で会えるとのことなので楽しみです。(ブログではまだ言ってませんでしたが最近京大マイコンクラブというコンピュータサークルに入りました。それに関する記事もまた書きます)

 

5,「物作り初心者」じゃなくて「物作りをする人」と言えるようになります

これは個人的な話(言ってしまえば「エモ」い話)なので、そういうのが苦手な人は読み飛ばしてもらって大丈夫です。

去年のRubyKaigiでは当時開発していた「布教箱」の初期段階を見せたところ、様々なフィードバックをもらうことができて、「独学で一人でここまで作ろうとしてて偉い」といった初心者ゆえの頑張りを褒めてもらう機会に恵まれ、今まで頑張ることができました。

最近2週間ほどかけて作った「Crash Chat」(オタサーの姫人工知能APIと会話することができるRailsで動かしているWebアプリケーションです。好意的な会話をしすぎるとブロックされる仕様のネタがあります。)

www.crash-chat.net

のベータ版に対しても会期中に直接好意的な反応をもらえて大変嬉しかったです。実際今の所約800回以上は遊んでもらえている模様でherokuのデータベースの無料枠を超えそうになっていてどうしようか悩んでる状況です。

そんは話は置いといて、プロダクトを完成させてパブリックに公開できることまでやるようになったけど、フロントエンドやデザイン周りのスキルもまだ乏しい状況で、「遊び」で作った感が強いプロダクトしか私はまだ作れていない状況だと思います。

今回のRubyKaigiでもエンジニアの方々に「発想が面白いからもっとフロントやデザインにこだわって作ったらもっと良いものが作れると思う」といったアドバイスをいただくことがありました。

その言葉を受けて、もう「作るのが偉い初心者」の段階は終わって、「高い品質のプロダクトを作ることを心がける技術者」の段階にそろそろいかなければならないんだと気付きました。

そうなっていくとCやRubyの学習意欲も高まってきたけど、フロントエンドやデザインの勉強も必要だという感じです。これに関しては個人開発以外にも今のバイト先でも頑張らなきゃいけない部分なのでまだまだやること盛りだくさんです。

でもまだ学生なのでほどほどに勉強する時間はあります。やっていきましょう。

 

6,終わりに

今回のRubyKaigiを通して思ったのは、すごい人たちと関われて話せるだけでもすごく嬉しいけれど、その人たちともっと深みのある技術の話やプロダクトの話ができるようになりたいということでした。

前回は「初心者なのにすごい人たちと話せてる、めっちゃ嬉しい」という手の届かない人たちと関わって気持ちが高ぶっている感覚で過ごしていたと思います。

でも、前回知り合った方々や今回初めて知り合った様々な技術者の方々と関わってみて「自分もこの人たちのように自分が好きな技術を追求できるエンジニアになりたい」と強く感じ、イベントに参加してすごい技術者の人と仲良くなるだけではなく、今後も良い影響を沢山もらって自分自身が技術のことをもっと追求する人になっていこうと強く思いました。

という感じに、今までは人に触ってもらえるコンセプトのサービスを作ることに焦点を当てて、コードを書いていたけれどプログラミング言語の内部構造や処理速度の話にもアンテナを張って勉強していきたいと思うようになったのが今回参加してみて一番大きな心境の変化だと思います。

その取り組みがプロダクトに直接繋がるかどうか分からないこともあると思いますが、品質の高いプロダクトを作ることにいずれ繋がっていく気がしています。

そんな感じで今後もプログラミングと楽しく付き合っていこうと思ったRubyKaigi2018でした。

 

あと、今年は風邪引いて川に行けなかったので来年は絶対川に行きたい!!!!!!!!!!!!!!!!!!!!

 

 

京都の中小企業でエンジニアのアルバイトとして働いて1ヶ月経って思ったこと

桐生あんずです。

2017年12月からインターンとして働いていた会社で晴れて2018年2月にアルバイトになりお金をもらって働くようになったのですが、思ったこと、勉強したことみたいなのを振り返ってみようと思って書いてみたエントリです。

 

どんな会社で働いているのか

まずどんな会社で働いているのか紹介タイムに入らせていただきます。

一言で説明するのがちょっと難しいのですが、私がエンジニアとしてアルバイトをしている「株式会社坂ノ途中」は有機農業などの環境にやさしい農業に取り組む新規就農者さんや若手農家さんを応援し、環境負荷の小さい農業を広めることを目指す会社です。主なサービスとして自社のウェブサイトでお野菜の定期便サービスを運営したり、農家さんと買い手さん(スーパーやレストランなど)のマッチングやコミュニケーションを支援するWebサービス「farmO(ファーモ)」を運用しています。他にも、東京や京都で小売店を展開していたりも。

(京都の東寺のすぐそばにお店があります!)

f:id:kiryuanzu:20180318201253j:plain

ITをメインにしている会社ではなく流通な会社ですが、少量多品目の生鮮品の流通の現場ではITで解決するべき問題もたくさんあると感じています。私が所属しているITチームでは自社のECサービスの運用とfarmOの開発・運用がメインになっていて、私は主にfarmOの方に関わって主にバックエンドの機能追加や修正を行なっています。Rails周りをガリガリやっています。

オフィスには出荷を担当する方や経理や人事、営業をしている方など色んな方々がいらっしゃるのですがITチームの方も他のチームの方々もみんな優しい方々でリラックスした状態で仕事ができています。

そして野菜をたくさん使ったまかないを毎日食べています。すごく美味しいです。

f:id:kiryuanzu:20180318201438j:plain
f:id:kiryuanzu:20180318201345j:plain



 

実際にエンジニアとして働いてみて学んだこと

私のブログやTwiiterを以前から知っている方は既にご存知だと思いますが、去年の今頃はRailsを初めて触って間もないという状態でした。それからプログラミンスクールに行ったり自分のWebサービスを開発してみて、エンジニアのアルバイトをやってみたいと思い探していたところ、京都のインターネット界隈の繋がりのおかげで紹介してもらうことができました。

でも、やはり即戦力のエンジニアとしてはまだまだということでインターンとして簡単な機能修正や機能追加を行いつつ勉強したり教えてもらったりして、ある程度できるようになったらアルバイト採用という流れで1月の間出社させていただきました。そして、2月になって面談をしたのちに無事アルバイトとして採用されることになりました。エンジニアとしてお金をもらえるのは初めてのことで、決まったときはすごく嬉しかったです。

という経緯を説明したところで、どんなことを学んだかバンバン書いていくぞ!

1,チーム開発の感覚が分かるようになる

今まで個人開発では適当にGitコマンドを打ってコミット、リモートにプッシュをしていたわけですがそうはいかないのがチーム開発です。タスクごとにブランチを切って、コードを書き、コミットしてリモートにプッシュしコードレビューをしてもらいます。その中で「この書き方だとちょっとわかりにくいかも」、「もっとスマートに書けるんじゃないかな〜」などとアドバイスをもらえてすごく勉強になります。また、困った時にはチームメンバーにアドバイスや調べ方を教えていただけてありがたいです。また、こちらからも「このgemを使ってみたら良いと思います」「この設計やってみたいです」など提案して議論させてもらえてすごく楽しいです。

最近だと、開発に関わっている人たちを集めて開発しているサービスの機能を一から全部触るウォークスルーを企画してみんなで「この画面はどうなんだろう」「こんな機能あったら良いと思う」など議論できてすごく面白かったです。

個人開発の時は基本的に全部自分で考えて、ユーザーの声を聞きつつ機能修正をしていく流れでコードを書いていくことが多いですが、チーム開発の場合は様々な方と協力して議論しあってサービスを作り上げていく面白さがあり、やりがいがあると思います。

ちなみに、緊張感と慎重さを持ってGitコマンドを打つスキルがチーム開発には一番必要かもしれない…。

 

2,いろんな機能に触れることができる

インターンの最初期にはSEO対策(metaタグのdiscriptionの中身やTwitterCards)を個別ページごとにより適切にセットしようというコードを書きました。その中でも、どのように書いたら簡潔に書けるか考えたり、テストコードを書いてみたり、ちゃんと本番環境で反映されるかどうかチェックする必要があるなど様々な流れがあり、勉強になった記憶が残っています。

それ以外にも、ユーザのアクションを検知してSlack通知をつける機能やステージング環境と本番環境のfaviconのイメージを変えたり、ActionMailerのメソッドを新しく書くなど、個人開発では手が回らなかった部分にたくさん触ることができています。

最近だとSTI設計を作ってみる試みもさせていただいて、色々勉強になりました。(話すと長くなってしまいそうなので別記事でいつか書きたい)

また、バイト先で書かせてもらったコードを参考にして、個人開発のサービスの方にも機能を追加してみようという試みもできていてすごく良い循環になっています。

 

3,コードを綺麗に書く努力をするようになる

今までしていなかったのかよとなるんですが、大学4年までコードをまともに書いたことがなかったのでインデントのスペースなんて気にしないままコードを書いていることがかなりありました…。

今までは「動けば良いや」という気持ちで書いていた部分がかなりあったのですが、バイト先でコードを書くようになって「この記述もっと行数減らせるんじゃないのかな」とか「インデントのスペースの間隔が変で気持ち悪い」といったような感覚を得られるようになりました。よかった。

 

4,テストコード、デバッグのやり方を覚えてきた

今まで、個人開発の時はエラーが出たらエラー文をそのままググる→なんか色々試行錯誤して直すみたいなことばっかりで、テストコードもデバッグRailsチュートリアル以外ではほぼやったことがなかったのですが、バイト先で機能追加や修正のタスクをやるたびに「じゃ、まずテストコード書いてみよう〜!」とメンター役の方から提案されるようになったことで、書くようになりました。最初はassert関連のメソッドやインテグレーションテストの書き方もよくわからず、メンターの方に聞いてばかりだったのですが、もともと書かれていたテストコードを眺めているうちに書く流れがわかってきて最近はサッと書けるようになってテストを回すようになってきました。

もし通らなかったときはbyebugを駆使してコンソールでパラメータにちゃんと値が入っているかチェックしたり、テストログをおいかけてどんなエラーが起きているか見る癖もじわじわとついてきました。

デバッグのやり方は最初分からないことばかりでしたが、慣れれば慣れるほど自分で手を動かせるようになれるので楽しいです。

 

5,技術書をちゃんと読むようになった

お仕事としてエンジニアをやらせてもらってすごく楽しいし勉強になる!…のですが、今までザ・文系の人間で大学では情報学を全く学んでいない人間です。他の情報系の大学生の人たちに比べたら本当にまだまだだと思います。

実際のところ、すいすいとコードを書いて機能設計できている自信は正直まだまだなくて、スキルはまだまだだと思います。それでもこうやって雇って仕事を任せていただけて本当にありがたい限りです。だからこそ、絶対に強くなりたいと思いコンピュータ科学の基礎的な技術書からRubyの教本やDB設計の教本をガンガン読むことを始めました。

一冊一冊説明すると長くなってしまうのでまとめますが、こんな感じの本たちを2ヶ月の間読みました。

f:id:kiryuanzu:20180318201517j:plain

入門 コンピュータ科学」や「プロを目指す人のためのRuby入門」を読んだことで、プログラムの書き方が多少見えてくるようになったり、DB設計やサーバーの基本書を読んでみてどんな風にWebサービスが回っているかのイメージがどんどんと肉付いて見えるようになって良かったです。

ハッカーと画家」や「ネットコミュニティの設計と力」も、ものづくりやWebサービス開発において大事なことがたくさん書かれていてすごく面白かったです。

今までネットの文献で知識を得ようとすることが多くて、今でも実際にコードを書く時はネットで調べるのは欠かせないのですが土台の知識があってちゃんとしたコードを書けることに繋がることがわかってきてもっと早く読むべきだったとなりました。アルゴリズムとデータ構造系の分野がまだまだ弱い気がするので積んでる本を早く読み終えたい。

 

まとめ

バイトになってまだ1ヶ月ちょっとですが、振り返って見ると学べたことがたくさんあってまだまだ学ぶことが沢山ありすぎるという感じです。仕事がうまくできなくて悔しいと思うこともよくありますが、やっぱり情報学やWebサービスの勉強はやってて楽しいし、コードが書けるとすごく嬉しいです。

なんでこんなに楽しいと思うんだろうという理由の一つとして、最近読んだ「ネットコミュニティの設計と力」を読んでふと気付いたですが、今までラーメン研究会や京都大学サークルクラッシュ同好会のような様々な大学サークルのコミュニティを渡り歩いた経験から、自然と「コミュニティ」を育てたり関わることが好きになってきていて、それと同じ感覚でWebサービスをといった一つの「コミュニティ」を生成し発展させることに楽しさを覚えているんじゃないかなあということです。

バイト先では主に「農家さん」といった私が普段観測しているインターネットのメインユーザー層からは少し外れておりどう展開していくかまだ考えているところですが、その中でユーザーに便利かつ楽しんでもらえる機能を考えて実装していくことで、独特なインターネットコミュニティが形成できたらすごく面白そうだしやってみたいのが今後の目標です。そんなイメージをしつつも技術書読んでコードをガンガン書いていくぞ〜。

そんな感じの近況でした。

 

宣伝タイム

株式会社坂ノ途中では、Webショップで野菜の定期便の販売を行っています!

多様なお野菜セットが販売されております。お米やお茶、コーヒーも購入できちゃいます。どの野菜も甘みと栄養が詰まっているものばかりで大変美味しいものばかりです。

気になる方、まずはお試しセットからいかがでしょうか!!!

面白法人カヤックの「ブレストカード」で遊びました

桐生あんずです。
今日はサクラ荘の1階のリビングをお借りして、面白法人カヤックさんで出されている「ブレストカード」というブレインストーミングを手助けするカードゲームで遊びました。
brainstorming.kayac.com


「ブレストカード」とはイラスト入りの100枚のカードと他人のアイデアへの「乗っかり力」を高めるための「乗っかりチップ」7個が入っていて、この道具を駆使してブレストゲームをしていきます。
流れとしては、
①参加者の中からまず最初に1人投資家を決める。投資家は「アイデアを出して欲しいお題」を考えて他の参加者たちに伝える。

②投資家以外の参加者は、山札のカードから1枚ずつ順番に引いて30秒以内にカードから発想したアイデアをプレゼンしていく。

③全員がプレゼンし終わったら「乗っかり」フェーズに以降。投資家の「せーの!」の掛け声で他の参加者たちが自分のアイデアカード以外のカードに良いと思ったアイデアのカードに乗っかりチップを乗せる。

④投資家以外の参加者は、乗っかりチップを乗せたアイデアについて30秒以内で「これが良いと思った」「これを◯◯したら◯◯したらさらに良いと思う」など、想像を膨らませてプレゼンを行う。

⑤全員のプレゼンが終わったら、再び良いと思ったアイデアのカードに乗っかりチップを乗せて、④の時と同じように更にアイデアに対する想像を膨らませて参加者がプレゼンを行う。(なお、同じカードに乗っかりチップを乗せた参加者はグループワークを行なってアイデアを出し合ってもよい)

⑥参加者のプレゼンを聴き終えた投資家は、一番良いと思ったアイデアのカードに「ナイスアイデア!」と指差して1ゲーム終了。そのアイデアを発想した参加者、アイデアについて乗っかった者には60億円(!?)が分配される。1ゲームが終了したら最初の投資家になった参加者の左隣の者が投資家になる。そして全員が投資家の役割をこなした時点で本ゲームが終了し、一番資金を持っていたものが優勝。

お判りいただけたでしょうか。60億円が分配されるのがちょっとシュールですね。
このゲームの特に面白いところは、
「30秒以内で思い浮かんだアイデアについて話さなければいけない」「『乗っかりフェーズ』では、自分のアイデアには乗っかることはできず、他人のアイデアを膨らませていく」です。
なので、短い時間内にフッと思いついたアイデアをプレゼンしていかなければならないし、自分のアイデアは最終的には他人の手によって膨らまされていきます。

最初は「アイデアってすぐ出てくるか心配だし、人のアイデアを膨らませるのって難しそう…」と思ってしまいそうですが、やってみると様々な発見があってめちゃくちゃ面白かったです。
また、④の第一乗っかりフェーズでは「良いと思ったアイデア」について、参加者個人個人がプレゼンを行い、⑤では同じカードに乗っかりチップを乗せた人たちで1分ほどグループディスカッションを行なったのちにじゃんけんで勝った一人がプレゼンを行うチームプレゼン形式にしました。

全体的な感想を書く前に、まずはお題ごとの感想や流れを簡単な書いていこうと思います。面白そうなアイデアがたくさん出ました。(ちょっと長いので読むのが面倒になった人は飛ばしてもらって大丈夫です)

①雨の日を楽しむ方法

「水で膨らむと大きくなるおもちゃを街中にばらまく」、「服の整理整頓」、「雨の中で星を一番早く見つけるゲーム」などのアイデアが出た。
最終的に、「雨の中で星を一番早く見つけるゲーム」のアイデアが膨らまされて、「雨の中で星を見つけるゲームを婚活パーティーでやる。ペアでゲームを行なって、一番先に見つけたペアにディズニーランドチケットが優勝商品としてもらえる」といったアイデアが選ばれた。
他のアイデアにも元のアイデアからゲーム性を付与して遊ぶ企画へと昇華されて面白かった。
採用された理由は「ペアを組んで仲良くなってもらうこと、そして勝ったら更に仲良くなれそうな景品が用意されていることなど過程が明確に示されていたから。」だった。

②やってみたら面白そうな野外フェスの企画

「コスプレパーティー」、「ホールの中を真空にする」「ベルトコンベアで演者を移動」などのアイデアが出された。
ベルトコンベアのアイデアからは、「円形や空中など様々に移動ができ、見える側によって多様な解釈を産むイベントができる」といったように膨らまされた。
コスプレパーティーのアイデアからも、「開催側が服を全て用意し、メイクも指導してくれる。一つのテーマを決めてみんなで同じ服装をすることでライブの一体感を生み出すことができる」とまで膨らまされ、コスプレパーティーのアイデアが選ばれた。

③作ってみたいWebサービス

個人的に一番やってみたかったお題で、様々なWebサービスが生まれてとてもよかった。せっかくなので全部紹介します。
・日記を投稿したら「悲しい」「嬉しい」などの感情を表す発言によって音楽が自動で生成されるWebサービス
・人に渡せなかったプレゼントをネットに公開してランダムで受け取る・受け取れるWebサービス
・自分のテキストの続きがランダムに挿入されていくWebサービス
・ゲーム実況についての実況や感想を投稿できるWebサービス(ゲーム実況実況)
・文章を投稿するとAIによって多面的な角度から批評されて自己分析を助けるWebサービス
・物を持ち運ばなくてもいいように目的地に物があるかどうかが見れるWebサービス
・コーディネートを考えてもらって採用した人にお金を渡せるWebサービス

ちょっと言葉だけでは説明しづらい内容のWebサービスもいくつかあるのですが、様々な観点から作りたいWebサービスのアイデアが出てきてすごくよかった。もちろんこのアイデア群も参加者によって膨らまされていきプレゼンされていったのが面白かった。精神医学的観点によって論じたプレゼンを行う人や、「日記が音楽に変わることで他者からの反応がなくとも個人でも楽しむことができる」といった理由で推す人など、様々なプレゼンが見られたのも面白かった。
最終的に選ばれたのは「文章を投稿するとAIによって多面的な角度から批評されて自己分析を助けるWebサービス」でした。
④作りたいサークル
ここでは、「サークル会員がそれぞれ地図を作って紹介し合うサークル」や「日の出を各所で見に行くサークル」「猫を愛でるサークル」、「当番制で料理を振る舞うサークル」などのアイデアが出た。サークルの企画にゲーム性を盛り込めたプレゼンをしたり、そのサークルに所属することでのメリットやコミュニケーションの楽しさについてプレゼンが出てきた。
最終的に「当番制で料理を振る舞うサークル」が採用された。

全体的な感想

最初はすごく難しいのではと思ったが、カードを元にアイデアを出す作業は意外と苦ではなかった。
また、30秒以内でプレゼンをするというルールを設けることで「頭の中に出てきたアイデアをどんなものだったとしても殺させない(言いとどまらせない)」、「30秒以内でわかりやすく共感してもらえるプレゼン能力の向上」などのメリットがあると感じた。
そう、アイデアがどんどん生まれることもこのゲームの大事なポイントなのですがプレゼン力や共感能力を鍛えるゲームにもなっているんです。これ。
また、「自分以外のアイデアに乗っかって膨らませていく」という段階もすごく良いなと思いました。実際、元のアイデアよりも元のアイデアが膨らまされて出来上がったものの方がすごく面白く仕上がります。なので、他人のアイデアであっても自分で作り上げたもののように感じちゃうのです。

ゲームをやっていて、自分が考えたアイデアが採用されて勝つことと、他人のアイデアを膨らませてプレゼンしたものが採用されて勝つことがどちらもあったのですが、不思議なことに後者の時の方がかなり嬉しかったです…。(もちろん前者の時も勝者なので嬉しいんだけど、達成感が違う気がする)
これはちょっとした発見で、たとえ自分が最初に生み出した作品ではなくても、その作品を更に膨らませて良いものにしていく作業もすごく楽しいんじゃないかと思いました。これは今後、ものづくりの仕事をしていくにおいて良い発見だったなーと思います。

また、ゲーム性もかなりあります。実際、人に選ばれそうなアイデアのカードに乗っかりチップを乗せたり(いわゆる美人投票…)、投資家が好きそうなアイデアのカードに乗っかるといった戦略を考えたり。
複数人が乗っかりチップを乗せてるアイデアを選ぶのをあえて避けて、孤軍奮闘で闘って採用されたら賞金をたくさん得る、といった戦法ももちろんできます。

また、「自分が出したアイデアが二番目にベット(乗っかりチップが置かれている)されているときは一番目のアイデアを選ぶ、自分の出したアイデアが一番選ばれていたら二番目に置くと勝つ確率が上がる」といった戦略論を展開する人が現れたりもして、アイデア力やプレゼン力を高める以外にも様々な楽しみ方があることがやっていて明らかになりました。

このように、アイデアを考えるのが好きな人、プレゼンをするのが好きな人、ボードゲームをするのが好きな人など、様々な人が楽しめるとても良いゲームだと思います。

お値段はちょっと張りますが(4,216円)、仲間内で割り勘しあえば普通に買える値段になりそうです。(もしくは部費で買っちゃおう!これもサークルクラッシュ同好会の会計で買ってもらえました…)
何度も遊べて楽しいカードゲームなのでちょっと高いと思っても触って損はないな〜と思います。仲間内、学校、サークル、会社など様々なコミュニティで遊べるはずです。

まだまだいろんな遊び方がありそうなので今後もやってみたいです。参加してくださった方々、ありがとうございました〜。

フライパンでガトーショコラを作ろう #独身男性手作りチョコバトル

桐生あんずです。巷では独身男性手作りチョコバトルなる催しがインターネットで行われているらしい。それも兼ねてチョコを作った時のことを記事を書こうと思います。

(私は独身男性ではないですが、このイベントは独身男性でなくてもチョコに関係なくとも参加できるらしいです。)

 今まで私はバレンタインデーに手作りチョコを生成するにしても、湯煎で溶かしたチョコを流して市販のタルトの型(ロフトとかでよく売ってるやつ)に流し込むぐらいしかしていなかったのですが、さすがに22歳女子大生がこのような状態を貫くのはやばいのではないかという危機感に襲われるようになり、今年は何か手の込んだことをしたいとずっと唸っていました。

だが、一人暮らしの下宿先にオーブンなどない。炊飯器や電子レンジで何か作ることもできそうだけど、あんまりうまくできるか不安だなあとなりどうすべきかとなっていた時に大学の先輩のid:chidorimemoさんのこの記事を読んで、

バレンタインデーの手作りチョコでガトーショコラを炭にした話 - とりめも

ガトーショコラがフライパンでも作れることを知りました。

フライパンで作ってみるの、なんか手料理感があるし焼き加減もコントロールできるし楽しそう。よし、フライパンでガトーショコラを作るぞ!!!

f:id:kiryuanzu:20180215020605j:plain

まずはチョコ100gとバター一切れを湯煎(45~55度くらい。沸騰するくらいまで沸かしてしまうとチョコの旨味がなくなっちゃうらしい。)に溶かす。

溶かしたら、卵一個、ホットケーキミックス600g、砂糖大さじ2杯、無糖ココアパウダー大さじ2杯を一緒にかきまぜて、フライパンにクッキングシートを敷き、弱火で10分ほど焼いてみました。

f:id:kiryuanzu:20180215020718j:plain


なんか、こんな感じに焼けました。ちょっとこのままだと見た目が微妙ですね…。

なので、クッキーの型を使ってハート形や星型を作ってみました。

f:id:kiryuanzu:20180215020742j:plain

ちょっと可愛くなった。

ただ、これ失敗しやすい上に型の外側の余った部分が非常にもったいないことになる。なので全部に適用するのは断念しました。(余った部分は調理者が作った翌日の朝ごはんとして美味しくいただきました。)

f:id:kiryuanzu:20180215020748j:plain

星型を作ろうして失敗した図。

 

結果的に、一口サイズくらいに包丁で切ってココアパウダーとかホワイトシュガー(名前間違ってそう)みたいなやつをかけたらそこそこいい感じになりました。

f:id:kiryuanzu:20180215020752j:plain

f:id:kiryuanzu:20180215020756j:plain

わーい。

 

そんな感じで初めてバレンタインデーにほんのちょっとだけ手の込んだお菓子を作ることができました。味見してみたらちゃんとガトーショコラの味になってました。よかったです。1回分作るだけでも30分満たないぐらいはずだったのでお手軽です。フライパンは良いぞ。

 

作ったガトーショコラは、アルバイト先とその日会った人にあげました。ありがとうございました。

 

「入門コンピュータ科学 ITを支える技術と理論の基礎知識」を読んだ

桐生あんずです。
最近、プログラミング言語の教本を読み進めて勉強してはいるけれども、もっと根底の部分というか情報学の土台の部分をもっと知るべきなのではないかと思ってまずはKADOKAWAから出版されている「入門コンピュータ科学 ITを支える技術と理論の基礎知識」を数日間かけて読んでいた。

入門 コンピュータ科学 ITを支える技術と理論の基礎知識

入門 コンピュータ科学 ITを支える技術と理論の基礎知識

内容としては、1~3章はブール演算の説明から始まり、マシン語オペレーティングシステムといった情報学の土台の土台と言えるような話が続く。

個人的に、実学的な話だと強く感じ始めたのは4章からでネットワークの基礎の話が始まりサーバーとクライアントの構造やネットワークセキュリティの解説が参考になった。一番ハッとさせられたのが5章のアルゴリズムについての章で、どのようにコードを構築すべきかを具体的にイメージするプロセスが細かく説明させられていたのがすごくよかった。
コーディングがちゃんとできるようになるためには、問題解決をするためのプロセスのイメージを膨らませて具体化させていく作業がとても重要だとわかったので、今後開発をしていく中でも困ったらすぐネットの文献やサンプルコードに頼るのではなく開発における問題で何が起きているのかをまず捉えて、どのような対処をすべきなのかを書き出して捉える作業をしようと思った。
問題解決のイメージをどう段階的に膨らませるかについては、P209に紹介されていたポリアの問題解決の段階の定義をプログラムの文脈に置き換えた話ががすごくわかりやすかったので引用します。

第一段階:問題を理解する。
第二段階:問題を解く計画を考案する。
第三段階:計画を実行する。
第四段階:解の正確さと、それが他の問題を解くためのツールとなり得るかどうか評価する。
プログラム開発の文脈に翻訳すると、これらの段階は次のようになるだろう。
第一段階:問題を理解する。
第二段階:アルゴリズム的な手続きによって、どのような問題が解けるかのアイデアを得る。
第三段階:アルゴリズムを定式化して、プログラムとして表現する。
第四段階:プログラムの正確さと、それが他の問題を解くためのツールとなり得るかどうかを評価する。

これをちゃんと行うためには、問題を捉えることはもちろん大事で、問題を解決するために繰り返し構造や再帰構造をどう使っていくかといった「武器」の扱い方を理解することが大事だと思う。
私の場合、問題を捉えるところまでいっても言語に用意されている「武器」の使い方についての知識が乏しいせいで自分で考える能力がまだちゃんと身についてない状態と言える(つまり日本語の読み書きが不自由な状態…)ので、まずは武器の使い方を教本やサンプルコードで理解し、問題を用意して武器をどう使うべきなのかを自分で考えるといった勉強方法が必要なのではと思った。

6章のプログラミング言語について紹介された章も、5章と同じくらい重要なことが書かれていた。
プログラミング言語の形成の歴史から始まり、変数とデータ型、データ構造といった伝統的なプログラミング概念、オブジェクト指向プログラミングにおけるクラスとオブジェクトの概念などといったプログラミング言語の学習においてはかかせない常識が一から説明されている。
この部分に関しては、いずれかのプログラミング言語を勉強してから読んでみると、スッと入る部分が多かったと思う。もちろん早めに知っておくべき話ばかりなのだが、RubyJavascriptの基本的な書き方をある程度知った後に読むと具体的な使い方のイメージがすごくしやすいと思う。
7~9章もモジュールの扱い方やデータ構造、SQLなどといった開発においてはかかせない説明が多くあり、特にDMBSについての解説はまだ完全に理解できない部分はありながらも重要そうだと思った。
なので、一度で読み終わらすにはとても勿体無い本だと思ったので4~9章は定期的(まずは週一ぐらい)に読み振り返っておきたい。

なんとかして全体通して読んでみたけれど、文系非情報系エンジニア見習い的な立場としては情報工学の基礎を文字通り入門できた気がする本だった。
実際、同年代の情報理工系の人はこういった内容を1回生ですでにやっているのだろうと思うしやっぱり専攻の違いはデカいなあ…と今更ながら思った。そんなことを嘆いても仕方ないので、バイト先や個人開発でコードを書いて実際に学びつつ、彼らが授業で知り得ている内容は技術書をガンガン読んで知見を得ていくしかないのだと思う。
また、読んでいて難しいとは思うところはかなりあれど、「ああ、ここが知りたかったんだよ!!!」とずっと思いながら楽しく読めた。

自分が使っているプログラミング言語の教本を読み進めることも大事だけど、もっとこういった基礎じみたことを勉強したいなあとなったので基本情報技術者試験を申し込んでみた。
去年、プログラミング言語のことをあまり理解してない状態でITパスポートを取っていた時よりかは実学的なイメージで勉強ができそうなので楽しみ。
ITパスポートの時にもお世話になった栢木先生の本を書いました。のちのち午後問題の対策もやらないとなあ…。

そんな感じです。文系で情報系に入門したい方はかなりおすすめの本でした。ありがとうございました。

1/30~2/1に東京に行っていました

桐生あんずです。タイトル通りの話です。12月の東京遠征の際はプリパラのライブとコミケといった感じで趣味メインでしたが今回は会社訪問で就活メインで動いていました。

Twitterではちらっと社名は出していましたが、あんまり掘り下げて書いてはいけないお仕事に関する話もあると思うので抽象的な感じで今回の東京遠征を感想を書いていきます。つまりポエムです。恥ずかしいので短めです。

 

勉強会等で京都の会社のオフィスに遊びに行かせていただくことは何度かありましたが、会社訪問という体で行くのは今回が初めてでした。最初はすごく緊張していてどのように社員さんたちと話せばいいか不安でしたが、技術の話や会社のサービスの話をたくさんしてもらえて次第にリラックスできました。あと、こちらが作ったものも見てもらえてすごく嬉しかったです。

会社訪問ということで、オフィス見学がメインになるのかなと思っていたのですが想像以上にエンジニアさんや人事さんとフランクに話せて興味深いお話をたくさん聞けました。インターネットの人の話や、RubyKaigiやRailsGirlsの話もできました。RubyKaigiで知り合った方々とこの機会のおかげで再会することができたのも本当に良かったです。

 

また、3日間ずっとそれぞれの会社を回ったおかげで、それぞれの会社の特徴、福利厚生や働き方の違いをより深く考えることができて今後の就活を考えるにおいてかなり重要な経験になったと思います。

また、どの会社でも「ちゃんと手を動かしてて偉いね」と褒められたのがすごく励みになりました。

Twitterでも述べたことなんですが、子供の頃から使っていた身近なサービスの会社や今もよく利用させてもらっているサービスの会社の方々とここまで身近な距離で好意的にコミュニケーションさせてもらえることが正直まだ非現実すぎて、ものすごく動揺しています。

周りにすごい人がたくさんいるということもあり、自分の技術力に関しては本当にまだまだだと思っていて自信はあまり持てません。でも、今回の3日間の中でいろんなすごい人たちから褒めていただけて、「私が今までやってきたこと、やっていることに関してはちょっとだけ自信を持っても大丈夫なのかもしれない」と頑張って思うことにしました。正直まだまだ自信は持てないけれど、否定してしまったらその方々にすごく申し訳ないと思うので。

その気持ちを大切にして、自分が行きたい企業をちゃんと選んで就活していこうと思います。人生初の会社訪問でそれぞれの会社の状況を生で見れたこともすごく良い学びになったのですが、これからの就活に備えて自分への自信をちょっとだけ持てるようになったことが一番大きいと思います。

 

テストの疲れも癒えてきて、会社訪問も終えて日常に帰って来た気がするのでとりあえず2月,3月の具体的な目標とスケジュールをちゃんと立てようと思います。(遅い気がする)

就活が始まって人生がどんどん進んでしまっている気がして正直不安もちょっとありますが、止まらないように手だけは動かしていきたいです。体調も考えつつ。

そんな感じです。ありがとうございました。やっぱりポエムになってて恥ずかしい。