雨が降り始める前に

この1ヶ月の振り返り。

 

数学の再学習はそれほど進まず。原因は、体調不良&多少の飽きが出ている感じがする。なんとなく基礎的な部分ばかりで、ちょっと退屈になってきたのかも。『もう少しで微分積分』までの所に、きているところです。やっぱりグワーって言う勢いが大事ですね。

 

他に何をやっていたかと言うと、AOJとAtCoderの過去問です。特に下の本を読みながらAOJの問題を解くと言う事をやってました。G.W.以降の解答数をかぞえてみると大体30問ぐらいです。解説&擬似コードを見ながら解いているので、偉そうな事は言えませんが。

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

 

あまり考え込む時間を取らずに、擬似コードの解説でScalaで解ける事が多かったですが、しょうもない考慮漏れでAcceptedにならずに苦労しました。TLEもしょっちゅうです。ですが、地道にほぼ毎日続けたお陰で100問解答が提出できています。

 

書籍の後半は難易度が上がってくるので、さずがに解説読んでも解くまでに時間がかかったりするとストレスが溜まったりします。そんなストレス解消のために、AtCoderのABC問題のABCを解くと言う事も始めました。ですが、こちらもCで解けないものが出てきて、またストレスが溜まると言うサイクル。この1週間、5日ぐらい同じ問題で悶々とする日々が続いちゃいました。結局、ACもらえずに次の過去問に進んじゃいました。いつか戻って解きたいと思います。

 

 

 

別のアルゴリズム本で『リスト』のデータ構造の実装を配列で実現していて、???って違和感があったのですが、そこに違和感持って止まる必要が無かったんですよね。何か処理を実現しようと思った時のデータ構造の基本は配列なんですよね。その扱い(添字の考え方、多次元、初期化 etc)に慣れてないと何も出来ないです。その他にも木構造再帰、ヒープ、グラフ、二分木探索とかとか。を知っていると、書けるコードの幅が本当に広がる感じがします(業務のコードが優しく見える)。文章読んで、コード書いてって事を繰り返しているので、仕事にも良い影響があって、調査とかする時の報告のドキュメントとかも、さっぱりとまとめて綺麗に書けるようになって来ている気がします。書籍の課題も残り少ないので、もっかい数学に集中して、梅雨が終わる前には統計学に入門したい。。。入門しよう。

 

 

そう言えば将棋の(小学生向けの)定跡本を図書館で借りて、読んでいたら息子とのやり取りで『僕は、そんな読まなくても勝てるもん!』みたいな発言があった。家族で『強くはなれへんで』みたいな会話をした。けど、この考え方って結構、自分も持ってしまっている。

・人にアドバイスを貰わなくても大丈夫。

・基礎的な事を勉強しなくても、どうにかなるやろ。

・もうある程度出来ているし、これ以上学習せんでも大丈夫やろ。

 

って自分自身思っている部分が多々あり。

そう思わずに学ぶべき姿勢を忘れずにいよう。そして、学んで、強くなって、楽しんでいる姿を息子に見せたい。

 

コンピューターの将棋には相当勝てるようになってきたし、子供の頃からコテンパンにやられている兄に勝てるようになりたいな。残念ながら父には再挑戦する機会は無いけれど、息子とは少しづつでも続けていきたい。

今月の達成感があった事は、コンピューター将棋の難しい対戦で勝てるようになって来た事かも!続けて色々定跡を覚えていこう。アルゴリズムも身につけていきたいな。そして、統計も。ちょっと欲張りすぎかもしれないけれど、地道に積み上げていくぞ。

 

 

 

 

 

 

 

 

 

ゴールデンウイークは始まったばかり

算数、数学の学び直しをはじめて約2ヶ月と少し経とうとしている。

 

最初は小学校から始めて、中学、そして高校と進んだ。

今、ようやく高校2年生の1学期ぐらいまで来た感じだ。

 

小学校の算数でさえ、こんな単語あったけ?って言う箇所が何箇所かあった。

平均とかも普通に出てきているし、色々な形の面積(三角形、四角形、円)とかも出てくる。比例とか、反比例も出てくるから、結構色々学んでいただんだなぁーと感じた。けど、購入した書籍は『6時間で学べる!』とかなので、本当に数日間で練習問題も終わってしまった。そして、最後に苦手意識がある『並べ方、組み合わせ方』が出てきてた。これは今でも何故だか苦手である。その単語を見かけるだけで不安になると言う重症です。

 

続いて中学校も同系統の書籍を探したのだけど、なかなか良いと感じるものがなかったので、小中学校が一緒になった本を買った。連立方程式とか、もう全く記憶に無くて新鮮に感じました。因数分解とか展開とか平方根とかも出てきます。xとかyとか出てくるところが、小学校とは違うところですよね。大体こちらも10時間ぐらいで完了した。

 

次に高校数学です。このあたりから本格的な数学と言う感じがしてきます。まず、指数とか記憶に残ってました。が、二次方程式、二次不等式にかなりつまずいた感じです。昔はそんな事は無かったと思うのですが、真面目に勉強してなかったのか、三角比あたりもほぼ記憶にありません。順列、組み合わせ、確率もしっかりと数式なので、うーんと考える時も多かったです。数1・Aで大体20時間ぐらいかかりました。

 

今は、数2・Bを着手中です。

 

学び直しの中で感じる事は、数学は国語と並んで、本当に全ての事の基礎になってるなと言うこと。もちろんの事ながら、物理とか化学でも使うし、仕事でも普通に使う場面もあると思う。比率・割合の考え方とか小数点以下とか、比例、反比例とかと言った小学校の内容でも、業績評価とかで使うよね。そう言った事に対する暗算の速さとか大事(目標は数字で測れるものにしろ!とかも言うし)。

 

さて、ここまではこの2ヶ月でやってる事の話です。

何故、数学の再学習を始めているのか?

 

・大学生の頃に全く理解出来ずにいた苦い思い出

アルゴリズムとデータ構造(も再勉強)の中で出てくる

・AtCode, Paiza, AOJで数学の知識が必要な場面に出くわす

 

これまで、社会人になってから、sin,cos,tanとか使う場面が無かったのだけど、競技プログラミングの過去問を解くようになって、普通に出て来ます。ラジアンとかの単語を全く覚えて無かったのですが、普通に必要になる場面がありました。とりあえずゴールデンウィークが始まる頃までに、数学2・Bに着手していようと思っていた分が達成できて良かった。大学生になってから、数学に対して苦手意識があったけど、少し思い出して来ている感じがする。

 

何もかも消えていた状態から、目次が頭の中に浮かぶようになった気がする。今のペースだと6月までかかりそうだけど、高校数学も学び直しを終わらせよう。

 

その次の目標は統計検定の取得だ。せっかく身近に大量データがあるのにロクに活用できていない。そしてKaggleにも挑戦したいぞ。

 

もちろん Scalaも日々書きつつ。

 

そう言えば今年はシステムの切り替えがあるから、連休も仕事だ。今回の切り替えも順調に進んでいる。プロジェクトはうまくこなせられるけど、人間関係は悩ましい。Scalaとか数学とかは答えがスパッと出るので、本当に気分転換になっている。自分自身はわりと社交的な性格だと思うけど、どちらかと言えば一人でモクモクする方が好きなんだなぁ。こう言う事を考えると、メンバーとか家族には気苦労させてるし、感謝しかない。

 

とりあえず残りのG.W.も出勤多いけど、可能な範囲で数学再学習を進めたい。

 

 

 

Scala勉強会やってみる?

Scalaの勉強会を立ち上げる機会が貰えそうなので、色々質問に答える形で自分の思いを残しておきます。自分はあまり気合いを入れて、物事に臨むタイプではないと考えているのですが、地道に長く続けたいので、今の気持ちを整理します。

 

目的は何か?

自分自身が、単純にScalaに触れる時間を個人的に増やしたいと考えたからです。独学でやってきたけれど、誰かと会話しながら身につけたいと感じたから。

そう思うきっかけになったのも、大阪での勉強会に参加させてもらったからです。良い経験をする事が出来て、非常に感謝しています。

 

なお、個人学習している分にも情報は一杯揃っています。それらのリンクが揃っている以下のサイトがおすすめです。

Scala入門時に役立つ情報まとめ - Qiita

 

個人学習でも十分できるのですが、それ以上の経験もしたくなりました。

 

誰を対象にするか?

私自身は初心者では無いけれど、もっと知識を定着させて、OSS活動に参加してみたいです。その為には、他の方とScalaについての会話をしたいと考えています。以下のような思いを持ってる方と一緒に過ごせる時間が欲しいです。

  • Scalaを始めたいけど、ひとりではしんどいな~と感じている人。
  • 初心者ではないけど、中級者になりきれていない人。
  • プログラマーかっこいいなと思っている人。
  • 将来、Scala関係のOSSに貢献して、自分の世界を広げたい人。
  • 既にOSSに貢献している方で、自分の経験をもっと伝えたい人。

 

Scalaは難しい言語か?

難しい部分もあると思うし、自分も理解できてない部分が、まだまだ大量にあります。長期間、開発もやってなかったし、直近(8年前!)がっつりやった開発は.NETの初期の頃の分だし、プログラミング経験はそんなに無いです(一応、情報系の大学出身ですが、落ちこぼれ)。

 

そんな状態で、Scalaの勉強始めても、意外に書けるようになりました。初めて勉強してから、大体3年弱かかったけど、基本情報処理のCALSIIのScala版を開発する事ができました。趣味でやってる割には十分な出来具合いだと感じています。『何かカッコいいWebアプリでも開発して、有名になれたらええな〜』みたいな欲もあったけど、最初にがっつり書いたのは、180度逆方向のアセンブラ処理系でした。Java版の書き換えでもかなり夢中になってやれたので自分では満足です。

 

なんでこんな書き方できちゃうの?みたいな事もあるけれど、それはクイズとかで『こんな解き方があったのか』みたいな驚きでもあるので、難しさを楽しめるようになりたいです。

 

 

なぜ社内では無いか?

何度か発表してみたけど、残念ながら誰にも響かせる事が出来ませんでした。みんなにとってみると、業務で使う予定も無いし、Javaもがっつり開発やるわけでも無いのに、何故にScalaって感じかと思います。そんな状況で社外の勉強会に参加してみたら、Scalaやってる人がいっぱいいたのですごく新鮮に感じました。

社外の誰かを探した方が、同じタイミングで同じ考えを持ってる人がいる可能性を感じています。

 

どのような形で進めるか?

1. 初心者向け

公開されている研修資料(新卒、インターン向け)を利用したいです。特にドワンゴ社の研修資料は最高です。同じくはてな社も、大変参考になる資料が公開されています。他にも多々ハンズオン等が公開されています。

一度、チームのメンバーにビズリーチ社のPlayframeworkのハンズオンを実施してみたのですが、あまり良い反応を得られませんでした。内容が悪いわけではなく、タイミングが悪かったのだと思います。Webアプリも詳しくなく、プログラミング経験も少ないメンバーに、いきなりWebアプリはしんどいようです。本当の初心者も受け入れたいので、もっと簡単なバッチとかから始めたいです。

sbtでかなりつまづいたので、できれば sbtの簡単なところから。ディレクトリを自分で作って、参照するライブラリをbuild.sbtに追加して、ビルドして実行してを何度か繰り返す感じ。その後は、すごく簡単な課題集をこなしてみるとか。Aizu Online Judgeとかとか。

 

できれば同じ内容をメンバー変えて、なんども開催したいです。そんな中に継続して続けたいと思う方も出て来ると思うので。

 

2. コードが読める方

Githubに沢山公開されているコードを一緒に読みたいです。ScalikeJDBC、Skinny Framework、Scalatra、GitBucket、PlayFramework とかの良いコードの書き方とかについて話ししてみたいです(Slickはちょっと怖い)。

読んでてもニュアンスがわからない部分とかが出て来るのだけど、自分はひとりだとその場で悶々として終わってしまいがちでした。誰か別の方の視点とかも欲しいです。

 

3. ベテランの方

経験だとか、最新情報とか教えて欲しいです。聞いていて理解できない部分が多いだろうけど、いつか理解できる日が来る可能性もあるので、色々伺いたいです。自社だけだと本当に視点が狭くなりがちですし、記事読んでるのと実物では本当に実感が違います。

 

4. 読書会

今までやった経験ないのですが、やってみたいです。声に出して読みつつ、その部分のコードについて会話するとかがやってみたい。特に以下の本です。

Scalaスケーラブルプログラミング第3版

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)

 

5. 参考書のまわし読み

IT系の書籍は高いです。が、何度か読んで、ある程度身につくと読み返す機会が減ります。そんな読まなくなった書籍を貸し合うとかもやりたいです。デポジット取ってやっても問題ないなら、仕組み化してやっても良いぐらい。(やっぱり後から読むので返して欲しいはあるので)

 

6. Scalaのカンファレンスとかへの参加

関西でも割と規模の大きいカンファレンスがあります。去年は残念ながら一人で参加だったのですが、何人かで参加して、感想とかその場で話ししたいです。できれば東京の大きいカンファレンスとかへも。

 

開催するなら月2回とかやりたいけれど、継続させるのに無理がありそうなので、まずは月1回で、必ず最初に初心者向けの時間を取って、その後は別の話題をプラスアルファしたいです。

 

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

色々書き連ねてみたけど、今の気持ちはこんな感じです。ストイックに何かを目指すわけでは無いけれど、一つずつを積み重ねて、しっかりと土台を築きたい。

 

 

 

エイプリルフールから始めよう

ブログを過去に少し書いてた記憶はあるけれど、内容も薄かったし、続く事も無かった。昨年から、色々経験する事ができて、やはり言葉に残すことが大切だと感じたので、今思っていることを記事に残す事にしていきたい。

 

エイプリルフールから始めるけれど、自分に嘘をつかないようにしよう。

 

これまで

高校まではわりと成績も優秀で、あまり努力せずにそこそこ成績上位に入っており、それでそれなりに満足だったように思う。家で色々大変な事があって、それはここにも書けない(書ける日が来たらいいのに)事があって、外で普通に生活できる事だけが幸せだった。大学で成績が悪くなったけど、私生活はそれなりに楽しく過ごせて、それで満足していた。社会人になる時も就職氷河期の割には、何故か就職できて、目の前にある仕事もそれなりに葛藤しながらこなせてきた。周囲と衝突する事もあったけど、この数年はそこそこの成績を残せている。

と言うことで、また『そこそこの成績』なのだ。それで満足出来ない自分がいるのである。悪あがきと言うか往生際が悪いというか。gridとか言う『やり抜く力』みたいな言葉もあるみたいだけど、それとは違うよねって感覚。その感覚を整理するために言葉にしたい。

 

好きな事

今まで他人からの目を気にせず『これが好きだ!』って言うのがなかった。プラモデルもうまく作れなかったし、 はんだごてを使っててもテンションが上がらなかった、漫画は好きだけど家の嫌な事の現実逃避的な感じがあった。本が好きな事もそんな理由だろう。絵は描くことが好きだった。美術の時間が楽しくて、絵は夜中まで描いてた時があったな。他の授業の時とかも夢中で描いてる時があったかも。それと数学が得意だったから画像処理研究室に行ったけど、内容についていけずに落ちこぼれ。それでそれなりの社会人生活が始まったように思う。それなりの生活を18年送った結果が今のアラフォーおっさんだ。

 

興味が出る

それなりに過ごしてた三年前にScalaの記事に出会った。元々は仕事で感じてたメールでの情報共有に不満を感じて、ビジネスチャットの存在を知って、Scalaに行き着いたって感じだ。色々記事を漁ってるうちに仕事(大量データ)にもつながりそうだなって思って、コップ本を買って勉強し始めた。元々新しい言語を身につけたいなーって、気持ちがあったところにScalaを見つけた感じ。まずは環境を作って、『書くこと』から大変だったけど、今は少し進んだ感覚がある。初心者から脱してる感覚。

Java,VB6,.NETとそれなりに経験してきたけど、しっかりコーディングしてこなかったので、データ構造とかアルゴリズムの理解が浅いから自信が無くて、劣等感があった。そんな中でpaizaとかAtCoder、AOJに出会って、自分の実力の無さを感じつつ、問題を解く事に喜びを感じてきている。今はそんな感じだ。もっと解けるようになりたいけれど、なかなか解けないね。

 

これからは

昨年、Apache Sparkの利用を提案して、オフロードする時の性能的な問題解消に、技術的な観点で課題解決する事が出来た。自分の住んでる世界の中だけだけど、それなりにインパクトのある答えを出せたと思ってる。これもScalaに興味を持った延長線上にあった結果だ。三年前のあの記事に感謝したい。

一方で、道具を使うことだけが目的になっていて、本来目標にしたいことに真剣に取り組めていなかった。大量データを扱ってはいるけれど、決定的に価値のある課題解決に取り組めていない感じだ。解きたい課題はあるけれど、実力が伴っていない。幸いそれは数学の知識とApache Sparkの知識があれば、答えが出せそうだ。まだまだ世の中的にはインパクトとしては、低い事かもしれないけど、今年は真剣にその事に取り組もう。それなりに生きてきたけど、もっと達成感のある人生にするために。

まずは夏までに高校数学の学び直しとデータ構造とアルゴリズムの学び直しも終わらせる事が目標だ。まずはpaizaでAを普通に解けるようになりたい。こういう競技プログラミングは年を重ねても純粋に楽しめるんじゃないのかな。解けたときとかの達成感は、答が無いpuzzleでピタッとはまった感じ。算数、数学の話はまた次回に書こう。

 

死を身近に感じる事は何度かあったけど、自分に降りかかるとは感じたことがなかった。今はあと残りの人生は30年だと思ってる。短くも長くもない。限りある人生を普通の幸せを大事にしつつ、日々達成感を満たして過ごしたい。今は家族に囲まれて、本当に幸せだけど、もう少しの充実感を求めて。30年後に真剣に取り組んだことを一つでも作るために記録を残そう。

 

are you happy?

今日、子供と一緒にポケモンセンターに行ったら、外国の方が子供に聞いてた。いい言葉。幸せかい!?