2018年12月21日金曜日

新天地で「キラッとプリ☆チャン」がやりたい人向けのサービスを作った。

はじめに


あきおです。
琉大情報工学科(知能情報コース) Advent Calendar 2018 - 21日目担当です。

今回は、
新天地で「キラッとプリ☆チャン」をやりたい人向けのサービス、名付けて

ぷれいぷり!


をリリースしましたので、ご紹介します。
https://play-puri.firebaseapp.com/play_cite.html

「キラッとプリ☆チャン」とは


まずは公式を全部よく見てください。

見ました?

大丈夫。小さい女の子向けだけど、大人でもできるから。全国にたくさん筐体があって、ゲームセンターに行けば、みんなプリチャンアイドルになれるから。

で、見ました?

どうやって筐体のある店を探すのか


これが課題で、公式にも一応あります。
しかし、店名と住所だけしかない。けど、いちいち店名や住所をコピペするのは面倒。

ということで、今回はFirebaseで簡単にサービスを作ってみることにしました

サービスの仕組み


FirebaseにはGoogleが提供するアプリケーション向けインフラツールです。
僕には説明することができないぐらい、たくさんの機能があります。

この中からHosting機能とFirebase Realtime Database機能を使いました。

Hosting機能では、静的Web(HTML、CSS、JavaScript)をサポートしていて、専用ツールを使って簡単にサイトをデプロイすることができます。
つまり、Webサイトが簡単に作れるということです。

Firebase Realtime Database機能では、NoSQLで構造データベースを組むことができます。実態はJSON形式のため、手元にJSONデータを作ってしまえば簡単にインポートできます。このDBはWebサイトからJSでデータを取得することができます。
つまり、JSONっぽいDBをJSで操れるということです。

おわりに

今回は、新天地でプリチャンをやりたい人向けのサービス「ぷれいぷり!」をリリースしました。現在は神奈川県だけですが、全国版に向けて拡大する予定です。
また、Firebaseの説明はしませんでした。またどこかでやるかもしれません。

明日はとーばるゆーくんです。お楽しみに。





2018年12月19日水曜日

はじめてphpcon2018に行ってきた

はじめに


あきおです。
琉大情報工学科(知能情報コース) Advent Calendar 2018 - 19日目担当です。
今日は「はじめてphp conference 2018に行ってきた」話をします。

きっかけ


業務でphpに関わっていたので、トレンドや言語を扱っている人たちの雰囲気に興味を持ちました。カンファレンスでしか聞けない話もありますし、しかも無料(重要)。

ちなみに、phpconはLIVEで見ることができます録画も配信されていますので、この記事を読んで興味を持ったら、ぜひ見てください。
とくに徳丸浩さんの講演は必聴です。

カンファレンスは学生のときに行ったYAPC::Okinawa以来、2回目ですね。

聞いてきた講演と1行感想


スライドはこちらの記事がよくまとめられていました。
僕が聞いてきたのは下の4つ+LT。1行で感想を述べます。

  • Cygamesにおける長期運用タイトルのこれまでとこれから
    • チームへの情報共有は大切。計測グラフ化は人を納得させやすい。
  • 継続的なバージョンアップのためのテスト戦略
    • dockerで安全リリース。テストしない・通知がない・マージ基準がないと保守しなくなる
  • ユニットテストが入れられないレガシーなソースでCIが回せるようになった
    • レガシーはgithub・gitlabのようなホスティングから。そこから文化が変わる。
  • 安全なWebアプリケーションの作り方2018
    • 法律に無関心では大変なことに。xmlよりもjsonを使え。大切な情報は持つな。
  • LT
    • 20代が考えるエンジニアキャリア論
      • 就職や転職による環境変化をどう乗り越えるか。
    • 発表駆動開発を1年間続けてきて
      • 発表は新しい気づきをもたらす。
    • 「クソコード」言い換えの御提案
      • 遺憾(いかん)コード
    • ハニーポットを植えて分析した
      • まず隠しファイルから攻められる。
    • テストコードはいいぞ
      • まずペアプロから始めよう。@t_wadaの例のアレ*1は圧が強い。
    • トウダン・ジャーニー
      • 採用活動、発表練習、ふりかえり、フィードバック。重要。
    • PHP筋肉をつける
      • 車輪の再発明で筋トレ。便利な機能は作ればいい

おわりに


PHP歴は2ヶ月くらいなので、難しくて理解できない話ばかりかと思っていました。しかし、実際はそんなことはなく、丁寧に分かるような講演が多かったです。

会場にはプレゼント付きスタンプラリーや、協賛企業のサービス紹介もあり、かなり楽しめました。次回はphpcon2019。ぜひ行きたいですね。

明日の担当は、にっしーこと@dobuzoraさんです。


補遺


2019年の初めにもカンファレンスがあります。
僕が注目しているのは、


です。(が、もう満杯なので終了後のスライドを期待)
沖縄でもJava Kucheなどありますので、ぜひ飛び込んでみてください。



*1: 例のアレ

2018年12月14日金曜日

2018年で通勤中とか休憩中に聞いたり読んだりして良かったと思うものをあげてみた

のだけど、どうですかね?

はじめに


お久しぶりです。あきおです。
琉大情報工学科(知能情報コース) Advent Calendar 2018 - 14日目担当です。
OBとしての参加です。アドベントカレンダーも初参加です。よろしくお願いします。
サービスの話?なんのことだかわかりませんね。

なんでこの話を?


書くことがなかったのでいい機会なので今年の棚卸しです。また、今年から社会人になり周囲の同期を見渡すと、技術書を読んだり、podcastを聞いたり、という人がいなかったのでオススメする意味も込めています。興味があれば読んだり聞いたりしてください。
あ、何かオススメがあればコメントください。


今年は「理解できるコードを書く」こと「エンジニア職について考える」ことをメインで本を読んでいました。

リーダブルコード
今も読んでいます。処理の分解、ガード節の考え方がとても参考になりました。

リファクタリング
レガシーコードをどうしたらよくできるのか。会社に入ってから、新規にプロダクトコードを書くことが少なくなったので読んでます。あと、改善の前の計測が大切。

Javaで学ぶデザインパターン入門
デザインパターンは勉強していなかったので読んでます。アルゴリズムを覚えるみたいで楽しいです。GoFはもう古めらしく、新しいパターンもあるみたい。

すっきりわかるJava入門 実践編
研修でJavaをやっているときに役立ちました。大学2年次以来です。基礎編もありますが、一度経験しているならこっちからでいいと思います。

実践Scala入門
最近Play Frameworkに手を出していて、Scalaを使ってみたくて読んでます。歴史から描いてくれているので、経緯がわかって良いです。業務ではJavaがデファクトなので、提案して手を出せる言語といえばScalaかなという感じです。

達人プログラマー
1節ごとにある緒言、よくネタがあるなーと思いながら読んでました。

プログラマーが知るべき97のこと
業務で一息つくときに読んでます。97といいつつ100以上ある。

Joel on Software
ブログです。スタックオーバーフローの共同設立者のJoelが書いています。日本語版がありましたのでそちらを。

Martin Fowler's Bliki
ブログWikiです。リファクタリングの著者です。ちなみに誰が日本語に翻訳しているのかなと調べると角さんでした。リーダブルコードとClean Architectureの翻訳者の方です。

ソフトウェア開発者の人生マニュアル
エンジニアってどうやってスキルアップしていけばいいんだろう、と悩んでいたときに読んでいました。後半から経済の話になるのは、なんだか勉強になるような。

SCRUM BOOT CAMP THE BOOK
見積もり方やスクラムの考え方が頭を柔らかくする、気がします。業務ではスクラムやってないので...。

シス管系女子1 ~ 3
コマンドなんだっけ?ってときに読みます。かわいい。

明文術 伝わる日本語の書き方
業務の半分がドキュメントを書くことになったので読みました。辞書として使っています。

ゴブリンスレイヤー 1 ~ 5
メンタルが養えます。

NEW GAME! 1 ~ 8
メンタルを回復できます。

銀河英雄伝説 1 ~ 11
メンタルを増強できます。

プラネテス 1 ~ 4
悩みすぎたときに読む漫画。はからずも、社会風刺的になっていたり。


技術書・ビジネス書大賞というのもあります。ぜひ投票してみましょう。

podcast


Turing Complete FM
低レベル(物理層に近い)な話や与太話が多くて楽しいです。同世代のすごい人が出ていて、はえ〜ってなる。

Rebuild FM
hakさんの寿司ネタが好き。いわずもがな。

しがないラジオ
SEからフリーランスやWeb系に転職した人たちのラジオ。技術書展で買った本は今読んでます。

6 Minute English
駅から社屋まで10分くらいあるのでちょうどいい英語のラジオ。英語って話したり聞いたりしないと錆び付くので良いサビ避け。話の内容もクイズ形式で面白い。

バイリンガルニュース
時事ニュース系。日本語と英語を交互に読んでくれるので好き。ただし、日本語だけ聞いているかも。

虚構新聞ニュース
安心と信頼の虚構新聞です。本当にありがとうございました。

おわりに


なんとか今日中にまにあったはず。
ではまた来週。
明日は黒猫のことを愛してやまない@Intel0tw5727さんです。

追記 : 2018/12/17(月)
@Intel0tw5727さんの記事はこちらです。コメントありがとうございました。



2018年9月27日木曜日

$_GETと$_POSTで気づいた

業務中に気がついたんだけど


PHPファイルに対して「POST命令でクエリ文字列付きURL」を叩くと、$_POST['hoge']と$_GET['fuga']が同時に使えるらしい。

具体的に


bodyにhoge : hogehogeを含んだ

https://hogehoge.com/index.php?id=fuga&passwd=fugafuga

をPOSTでリクエストすると、POST bodyパラメータとクエリ文字列の2つが与えられているので、index.phpでは$_POST['hoge']と$_GET['id']、$_GET['passwd']が使えるということ。

今まで、POSTなら$_POSTだけ、GETなら$_GETだけと思っていたんだが、どうやら違っていたらしい。

なんで命令で使うリクエスト変数を分けなかったんだろうね?

参考




2018年8月25日土曜日

Androidアプリ開発を1ヶ月やってみたんだけどさ。

業務でAndroidアプリを作ってから1ヶ月が経ちました。
来年、新卒社員が入ってくることを見越して「こういうのあったなー。ちょっと面白かったなー。いまだに疑問だなー。」的なのをメモっときます。

Androidアプリ開発にあたり、僕のスキルは次のような感じ。
  • Java ... 大学で半年やって、忘れた。新卒研修で1週間復習+独習した。ジェネリクスとかリフレクションとかわからないところもある。
  • Androidアプリ ... 大学で2週間やって、忘れた。kotlin?なにそれ?
(以下、Androidアプリ開発のことを、特に注意しなければアプリ開発と呼びます。)

匿名クラス
こういうの。


setOnClickListenerのnewね。「え、クラスの中にクラスが書けるの!!!???」まず最初に思ったのがこれ。

普通にJavaやってたら使わないと思いますけど。コーディング規約にもダメって書いてあるし。
アプリ開発のリスナーは大体この形をとってますよね。なんでだろう。
考えてみた限りだと、たぶん、外部からアクセスが可能かどうか、かな。よくわからない。

クラスフィールド名
こういうの。


なんでmってつけるんだろう。違和感があるというか。Pythonしてるときもnumpy as npとかあったからな...。

とまあ、2つ驚きがあったんでメモでした。
なんか、もっと他に書くことありそうだけど。


最近考えているので、何かカメラアプリがつくりたいな。
ボタンアプリからかな〜?

2018年8月14日火曜日

2018年8月13日月曜日

よい日本語の文書を書くためにはどうしようか

4月から7月にかけて、文書についての次の3冊を読んだ。
  1. 理科系の作文技術
  2. 文章読本
  3. 明文術:伝わる日本語の書き方
1と3は仕事に関する文書作成法で、2は文学的な文書作成法について書かれていた。

仕事では文学的なことはしないし、1と3だけで十分かなと思ったが、そういうことを言っていていいのか?と思うようになった。

背景

研修中では、議事録、ドキュメントをひたすら書いた。プログラミングよりも重きを置かれていたと思う。というのもそういうSIerな会社だからだけど。

この議事録やドキュメントを書く仕事は、想像以上に技術が必要だということを思い知らされた。無駄なく、漏れなく、伝わる文書を書くことは難しい。

これは文章読本にも書いてあるが、思考から文字に起こされると情報落ちが発生して、結局100%考えていることを伝えられないのだ。だから、何回も他人に見せるし、何回も推敲する。

何が言いたいのかというと

こうやって伝わる文章ができるのだけど、伝わる文章は読まれる文章じゃないんだよなーと思う。

結局、ドキュメントを書いても読んでくれる人ってどのくらいいるんだろう。正確に伝わる文章を書いても読まれないんじゃしょうがないよな。

読まれる文章にするには、文学的な要素が入っていた方がいいんだろうなーと思う。
(これはケースバイケースなのはわかっているけど、全く勉強しないのもやばいと思う)

ただ、実務で文学的な要素が入った文書を書くことがないので、どうやったらいいかわからないんだけど。

2018年8月12日日曜日

谷崎潤一郎「文章読本」を読了

4月6日から読み始めて、5月ごろ(丁度1ヶ月)で読了しました。
文章読本の初版が1975年なので40年前の古典です。表紙も今風ではなく、文体も古めですが努力したら読めます。

動機

社内研修の敬語やビジネスマナーで困った時に先輩に勧められたのがきっかけです。

結論

な ぜ こ れ を オ ス ス メ し た。 

全然、敬語とビジネスマナーに関係なかった!!
でも、得るものはあったので、書き残しておきます。

どういう本なのか

「理科系の作文技術」は以前読みましたが、「文章読本」は毛色が異なります。「いかにわかりやすく簡潔に書くか」よりも、引用すると「日本人が日本語の文章を書く心得」を目的としています。「伝える文章」から「読まれる文章」といった感じでしょうか。

例えば

「どこで読点(、)を打つべきか」
「文中の漢字にルビを振るべきなのか」
「正確に物事を表現するには、どう書くべきか」
「そもそも、言葉がうまく伝わらないのはなぜなのか」
といった問いに対する答えが書かかれています。

とはいっても、全てにおいて正解ということもなく、谷崎の指針といった感じです。

あまり多くは語れないので、記憶に強く残ったところを挙げておきます。

  • 「思ったことを言葉で正確に伝えるのは不可能。言葉の型にいれるため絶対に齟齬が発生する。そもそも日本人は国民性として昔から寡黙で自信を謙遜することを美徳とする。一方、西洋人は自己を主張することが美徳とされている。この点において、日本人は西洋人と同等ではなく、考え方も異なると頭に置いておく。科学においては西洋からの文化なので、正確さや主張をするのがよい。小説においては日本人に向けて書くのなら、日本人が美徳とする書き方が良い。」
  • 「文法は西洋の科学であり、日本はそれを取り入れたけど、そもそも区分が当てはまるものではない。日本語は文法に曖昧性がありすぎて、そこが良い。文法にとらわれすぎるよりも、流れを感じた方がいい。」
  • 「送り仮名については、たとえ文法に反しても、読み間違いを防ぐ書き方をした方が良い。読者に親切にしては際限がないため、ある程度の常識やセンスのない人は置いていったほうがいい。読者に親切すぎるのはかえってよくない。」

僕には、まだその心はわからないなぁ。

2018年5月14日月曜日

TDD+モブプログラミング会に参加してきた

5/13(日)のtddyyx(てぃーでぃーでぃーわいわいかい)に参加してきました。
10分くらい遅刻しましたが、心理的安全性が保たれた素晴らしい会でした。ごめんなさい。


何をしたのか


tddyyxでは、テスト駆動開発モブプログラミングで問題を解決します。
  • テスト駆動開発は、間違いを恐れず言うと、テストを書いてからプログラミングする開発方法です。
    • テストに通らないコード(Red) -> 通るけどリファクタリングする必要があるコード(Green) -> 通るし綺麗なコード(Blue)の順に実装していく。
  • モブプログラミングは、間違いを恐れず言うと、一つの問題についてチーム全員で解決していくプログラミング方法です。
    • 作業分担は効率が良くなるように見えるけど、後に作業集約することを考慮すると良くないかもしれない。
    • モブプログラミングは作業分担しないため進みが遅いように見えるけど、全員が共通したコンテキストで動くので最終的には効率が良いかもしれない。
    • モブプログラミングはドライバー(コードを書く人)とナビゲーター(周りで調べたり知恵を出したりする人)に別れて作業する。ただし、コーディング時はモニターは同じものを見る。
    • 問題の一部でも解決したら「やったー!」と言う(重要)。
  • 問題というのは、FizzBuzzやLeapYear(うるう年)のようなプログラミングするとよく出てくるお題のことです。

今回は前半を3チームに分かれて別々の問題を解きました。後半は自由にチームを組んで好きな問題を解きました。

前半戦


@y0taさん、@hirarinさん、@ie_tetrahymenaさんと一緒に100Doorsを解きました。使用したのはCyber-dojoです。言語は参加者みんな初めてのR。

  • 仕様からのタスク分け -> テスト書く -> 実装する -> 動く -> 「ヤッター!!」 -> 以下テストから繰り返す。
以下学び
  • タスク分けに設計の話と混ざるとハマりそうなので避ける。
  • Rの文法が風変わりで楽しい。配列が作れない、三項演算子ができない等等。
  • ネストが3つ以上あると気分が悪い。できるだけ2つまでにする方法を考える。
  • 関数の挙動に注意。副作用の話。
  • 定期的におこる「ヤッター!!」はモチベの回復になる。楽しい。
  • コーディングに自信がなくても学び合うことでカバー可能。(メンバーの人柄によるかも)
    • 自信がない、わからない、と正直に声をあげることが重要だと思う。
  • お菓子大切。喜久福美味しかったです。

後半戦


ごめんなさい、一緒にコーディングしたのに名前を忘れました...。後半はLeapYearをやりました。前半戦と同様にCyber-dojoを使用しました。時間が少なかったので言語はみんな大好きPython。

以下学び
  • 文化の違いをどう解決するか。チームによって問題へのアプローチ(僕たちの場合はタスク分けから先)が違っていたので、最初にどうやってきたのかをお互いに聞くべきだった。
  • 地味にPython忘れている。悔しい。
  • 「ヤッター!!」は重要。

おわり

以上、楽しいコーディングイベントでした。
モブプログラミングはモブ+プログラミングなのでプログラミングではない別の作業でも活用ができる。モブの考え方は原始的だけど、作業が複雑になっていたり知識や経験がない状態からスタートアップする方法として頭においておくのが良さそうです。

あと、けん玉が少し上達してよかったです。

モブけん玉の様子




2018年4月18日水曜日

風邪っぽい

社会人初の風邪という実績を解除してしまいました。
原因として考えられるのは、
  • 電車でうつされた
  • 窓を開けていたので部屋が乾燥した
  • 緊張からある程度解放された
かな。

うがい、手洗いを毎日していなかったのはダメだったかと。
というわけで、ご飯たくさん食べて、薬飲んで、お風呂はいって寝ます。

予防策としては、
  • うがい、手洗い
  • 人混みではマスクをつける
  • 栄養をとる
  • 体力をつける
くらいかな。

2018年4月17日火曜日

新社会人になって嬉しかったこと10選

こんなことを書いていたので、今回は逆に嬉しい(かった)ことを書いておきます。


  1. 一人暮らしが楽しい
  2. 家事が楽しい
  3. 寮の仲間ができて嬉しい
  4. 減量できて嬉しい
  5. 朝早く起きれて嬉しい
  6. 時間ができて嬉しい
  7. 考え事する時間が増えて嬉しい
  8. 有名選手のサインがもらえて嬉しい
  9. 電車楽しい
  10. スーツはわりとよい

一人暮らしが楽しい


初めて一人暮らしをするので、なんだかんだ楽しい。
自分の自由な空間があるのは良い気がする。
(たまに寂しいけど。)

家事が楽しい


2週間くらい暮らしてみて、家事があまり苦ではない気がする。
洗濯と掃除だけだけど。
料理ができないのはストレスです。

寮の仲間ができて嬉しい


ボードゲームとかTVゲームで遊んでます。
楽しい。

減量できて嬉しい


フルグラ生活しているので減量できてます。
ちなみに運動もちょっとやってます。
やっと80kg以下になりました。

朝早く起きれて嬉しい


朝5:50、バネ仕掛けのように飛び起きます。
よくよく考えると、高校の時も同じだったな。
生活習慣を戻せたことは良い。

時間ができて嬉しい


基本ヒマなので時間があります。
とはいえ遊ぶこともできないので、ずっと本を読んでます。
最近は谷崎潤一郎の「文章読本」を読んでます。

学生の頃も時間はあったのでは?というツッコミはありますが、
学生の頃は「やること(課題)はあるけどヒマ」な状態が多かった気がする。

考え事する時間が増えて嬉しい


研修は待機の時間が多いので、今後の方針を考えたりしています。
やりたいことを考えてる時が一番楽しい。

有名選手のサインがもらえて嬉しい


会社に実業団があるので、サインボールをいただけました。

電車楽しい


連結部がおすすめ。そこに立っていることが楽しい。

スーツはわりとよい



スーツを着ていると砂漠でも生き残れる確率が高いのでカーリマンになれます。
服を選ぶ必要がないのは楽です。
もうちょっと体にあった服が欲しい感じはします。



これでバランスとれたかな。


2018年4月16日月曜日

新社会人になってたった1つ不満に思ったこと10選

熊谷さんのパクリ乙。

けっこう不満はあるもんで、書いておきます。

  1. 向かいの人が怖い
  2. 寮長が怖い
  3. むしろ都会の人が怖い
  4. 会社が怖い
  5. てか同期が怖い
  6. エリート社員が怖い
  7. 先輩社員が怖い
  8. Wi-Fiがない怖い
  9. お金たくさん必要で怖い
  10. 自分が怖い

向かいの人が怖い


挨拶したら舌打ちされます。
あとで聞いたら、その人が僕の寮札(外出を示す札)を捨てていたらしい。
その人の名前知らないのに、あったこともないのに、なんでキレられてんの??
マジで怖い。

寮長が怖い


普段は気のいいおじさんなのです。
なのに、たまにとんでもない下ネタをぶっ込みます。

僕「風呂入りまーす」
寮長「ピンサロ?」

え、怖い。

むしろ都会の人が怖い


駅でディフェンスしたら舌打ちされます。
トイレでも舌打ちされます。
怖い。

会社が怖い


入社して2週間たちました。
4回くらい全体で怒られました。
セキュリティ的にも厳しい会社なので仕方ないかと思います。
でも、変に矛盾してる時があるんだよな。
ほんと怖い。

てか同期が怖い


なぜか変な奴が多い(と他の社員に言われている)。
リーダーをやるのにやる気がないとか、すぐに飲み会に行く人とか。
なんか怖い。

エリート社員が怖い


僕が務める会社は子会社なので、親会社があります。
親会社のエリート社員は、研修を一緒に受けることがあります。
しかし、自分の手は動かさないのに、他人の手は動かしたがる。

エリート社員「じゃあ、後の作業(絵を描く)は女子お願いね。僕はやらないから。」
僕「(ええ...。)」

さらに、

エリート社員「ぼくSEだけど、プログラミングとかしたくないから。」
僕「(ええ...。)」

エリート社員怖い。

先輩社員が怖い


研修がたまに宗教っぽいことがあります。
先輩社員「一致団結できましたか?意見はあわせられましたか?」

いや、意見を合わせるのは違うでしょ。
体育会系研修の先輩社員怖い。

Wi-Fiがない怖い


ちょっと書き疲れてきた。
とりあえず、Wi-Fiがないのが怖い。
いつテザリングの上限にかかるかヒヤヒヤしてる。


お金がたくさん必要で怖い


新生活の最初は給料が出ないので基本的に貧乏です。
最初だけで25万くらい飛びました。(旅費、生活費、その他新生活に必要なもの等)
たぶん、僕は少ない方で、ほんとは50万くらい飛ぶと思います。
僕は4月に給料日があるのでまだ楽ですが、基本はフルグラ生活です。
あと、就業時間終えてからお金を引き出すと手数料が取られるので、地味に痛いです。

は〜怖い。

自分が怖い


こういう生活に慣れ始めている自分が怖い。


以上、たわいもない話でした。




2018年4月15日日曜日

新社会人になって不満なこと1つ。

それにともない「あきおの情報院生生活」から「あきおの抑留生活」に変更しました。
深い意味はあります。今、研修中で寮暮らしだからです。

研修中で寮暮らし


すいません。浅かったですね。
ところで、社会人になってから起こったことを一部時系列で書きます。
  1. 3月末ごろ、沖縄から上京しました。
  2. 数日は東京で過ごし、数日は埼玉にいました。
  3. 先輩の家が快適でした。最高です。ありがとうございました。
  4. 埼玉のホテルも快適でした。洗濯物洗えてよかった。
  5. 会社の命令(言い過ぎ?)で埼玉のとある寮に入りました。
寮暮らしはそこまで苦じゃありません。壁が薄いけど、そこまで気になりません。
ご飯も出てくるので(給料から天引きですが)助かってます。

ただし、ネットが無い。ねっとがない。ねっとがあんあななあjfkld;さfklだfdksじゃ;fjdkぁ;skfdじゃlk;ふぁlsfsd;あfkldsじゃ;fjkdlさ;jfぐぃおhgんねあえええええええええええええええええええええええええええええええええええええええええええ






取り乱しました。


ネットが無いです。これだけ。不満はコレだけ。
ネット開通日が待ち遠しい。

2018年3月30日金曜日

大学院を修了したけど

注意:このエントリーは自分語りです。本当に暇な人だけ読んでください。

今年度で大学院を修了しました。これによって修士(工学)が頂けたわけです。というわけで4月から晴れて社会人になります。おめでたい。

本当におめでたい?


おめでたいのは自分の頭のような気がしてならない。
本当に修了していいのだろうか?
あんな50ページ程度の成果もあまり出ていない論文でよく修了認定されたもんだと思う。
他の大学なら「もう一年がんばるドン」とか言われそうだ。

修士を振り返ると


論文に繋がるのは修士2年の10月から3月までの半年間ぐらいだ。
研究内容が決まったのが10月で、早速論文を読みまくって11月終わりにプログラムができた。
12月には修了要件の学会発表に行った。意見をもらいにいくつもりで行った。しかし、その分野の先生があまりいなかった。
そして2月に引用している外部の先生に連絡できたおかげで、ようやく論文が書けた。

プログラムもやっていることは理解したが、改善なんてできてなかった。むしろ劣化したのでは?と思う。
本当ならこれを修士1年の段階でやるべきだった。だけど、その頃を振り返ると、僕は別の研究をしていた。教授の研究だ。

学部生の時に引き継いだ内容だ。内容はわかるけど、全然納得ができなかった。
教授は自分の意見を言うけど、それがなんだと言うのだ、と言う感じで聞いていた。
とはいえ、この研究で僕は4回も学会発表(国内2件、海外2件)し、僕の後輩がその研究を引き継いだ結果、海外のジャーナルに掲載され、彼は学会で奨励賞を取った。
それでも、僕はその研究については先が見えなくて、その場しのぎっぽい研究に思えてならない。

あの研究をしていた頃の僕は意見する力がなかった。自分に自信がなかった。なにもできないと思っていた。なぜか僕をめでたくする某ブログもそれを手伝っていた。
だから修士をやめたかった。本当に研究ができない気がした。他の先生にも相談した。でも何をやっても無駄な気がした。カウンセリングもこのとき初めて受けた。(この顛末は卒業式話したので割愛)

区切りは最後の海外発表のあと


12月頃だった。教授に意見ができた。すんなり通った。
本当にあっさりしていた。教授は「そうですか」くらいしか言わなかった。

でも、この時期は就活で忙しかった。本格的に研究はできなかった。
合間に論文を読んだり、計画書を書いたりしていた。
ゼミも休んだし(そのせいかこの期間の成績がB。Aがトップ)、成果なんて出るわけなかった。
企業の人が「どんな研究しているんですか?」と毎回聞いてくるが、その度に辛い思いをした。

5月頃内定が取れた。研究もやりたい内容が固まった。
でも、新規性がなかった。教授も知っている情報は30年前だし、最後まで中身はアップデートされなかった。GMM(ガウス混合モデル)をHMM(隠れマルコフモデル)のことだと思っていた。ゼミのたびに訂正した。

新規性が出せるようになるまで論文を読んだ。けど、結局8月終わりくらいまで新規性は出せなかった。
その新規性も超苦しい。銅鉄実験と言われたらそこまでな気がした。
偶然にもネット上に研究内容とほぼ同じソースコードがあったから助かった。

9月の学会に出る予定だったが、想像以上にコーディングが進まなかった。
環境構築は簡単だが、scikit-learnのソースを読まないと理解できないことばかりだった。
そして、結局12月に学会に出られた。ブログの冒頭へと繋がる。

修士に入って


2年間の時間を失った。教授に一定の失望した。もちろん良いところもあるが、それ以上に失望をした。

かわりに、意見することとプログラムをじっくり読むスキルを得た。
自分のコーディング時間を見積もること、日報を書くことができるようになった。
他にもいろいろできることが増えた。

でも、修士を修了した時に全然やり遂げた感じがしなかった。
他の修士の人に情けないような感じがしてならなかった。

こんなのでいいんだろうか、と思いつつ、明日から会社の寮で暮らすことになる。
やり残したことを落穂拾いしながら社会人1年目をやっていきたいと思う。

2018年3月8日木曜日

YAPC::Okinawa2018に参加してきました。

はじめに

YAPC::Okinawa 2018 に参加してきました。会場のOISTは琉大から北に約1時間程度みたいで、朝9時に琉大を出たら10時のセッションに遅刻しました。

YAPCのような言語系(?)カンファレンスは初めてです。学会とは違い、運営・参加者全員の情熱が全面に出ている雰囲気を感じました。(学会は静かな情熱がぶつかり合っている感じがします)

「ブログに書くまでがイベント」らしいので、未来の自分に向けて聞いてきたセッションをまとめておきます。


セッションまとめ

GraphQL をプロダクション導入した結果 @bird_tummy

REST APIに変わるかも?ということで聴講しました。
セキュリティ的に難がありそうですが、JSONと比べて読みやすそうな構成だったかなと思いました。とりあえず、MutationとQueryを覚えました。


全部Perlが教えてくれたこと @k_nishijima

起業家ジム・クラークを読みたくなりました。
「ペイ・フォワード」の考え方、好きです。
もくもく会はコミュニティになるのかな?と思ったけど、交流があればコミュニティになれそうですね。

正規表現と曖昧性、マッチングの難しさについて(だったかな?) @sinya8282

スライド見つかんない。
正規表現エンジンの弱点の話でした。バックトラック(vM)法は拡張性が高く、魔改造できるけど、22の壁(?)があるとか。
文脈自由文法は、自然言語処理とオートマトンの講義を思い出して懐かしんでました。


Perlを中心としたワンライナーあれこれ @teckl

ワンライナーについては普段からやりたいと思っていて、Shell Scriptではパイプとxargs、sedを使って頑張っていました。しかし、Shell Scriptに環境依存があるのはまあまあ辛いところです。いろいろスライドで紹介していただいたので使ってみようかと思います。


WordPress運用を支えるPerl @xtetsuji

スライド見つかんない。

ド直球にやばそうなアイスブレイクでした。
「枯れたところに飛び込む」のは嫌いじゃないです。横井軍平を思い出しました。


ノンプログラマーのプログラミング活用法 / The Non-Programmer's Programming Techniques @note103

僕の中では一押しでした。編集者がプログラミング知識を持つとこうなるのか〜と夢が広がりました。
gitを使えるようになったら、どうなるんだろうかとワクワクしました。

Perlで作られたLINE NEWS(だったかな?) @nipotan

LINE NEWSってPerlで作られてるんだ、って素直に思っちゃいました。0.5秒と目標づけたのはすごく具体的で良い感じがしました。ところでPerlでやるひty(以下検閲済み)


Perl in Merkari(だったかな?) @kazeburo

トイルの撲滅、初めて聞きました。SRE本に興味を持ちました。アジャイル開発では自動化をどんどん進める感じだったので、自分自身の方向性は間違ってないんだなと思いました(?)。Googleとかは数百万行のテストがあるらしいので、いちいち手動テストしてられないですよね。


新卒Rubyistが1ヶ月でPerlmongerになった @_serinuntius

LTの発表でした。本当にドラを鳴らすんですね。「とりあえず1ヶ月書いてみろ」はいいですね。覚えるテクニックが受験勉強的なゴリゴリな感じで楽しかったです。

おわりに

Togetterも公開されたみたいですね。

次は5~6月あたりで開催地は東京らしいです。その頃には東京にいるのでラッキーですね。
次回はPerlを使ってるレベルで参加していたらいいな〜と未来の自分にプレッシャーをかけておこう。登壇できたらいいなーとか思っておこう。


最後に、運営のみなさま、開催お疲れ様でした。お土産ありがとうございますm(_ _)m

2018年3月1日木曜日

沖縄ぬーやが#1に参加してきた

先日, 沖縄.ぬーやが#1に参加してきました.
「論文を広く浅く読む」で発表しました.

技術よりの発表は面白いですね. 参加してよかった.

ぺんさんが発表した「画像からコード実行する方法」は, 
画像を音声に置き換えてもできそうですね.
問題は, Perlができないっていう点ですが.

というわけで, 次回は5月くらいらしいです.
社会人になっているのでYoutubeで参加かと思います(参加できたらね).

2018年2月1日木曜日

GaussianMixtureとprecisions_cholesky_について

最近, scikit-learnのGMMを使ってプログラムを組むことがあったのでメモ.
間違ってたら斧をなげてください.

GaussianMixture

scikit-learn(sklearn)は主に機械学習に用いられるPythonライブラリです.
機械学習の中の一つに教師なし学習がありますが, それをするためにGMMを使います.
GMMを使うには
import sklearn.mixture
して
gmm = sklearn.mixture.GaussianMixture(n_components=32, covariance_type='full', max_iter=100)
で呼び出せます. コンストラクタ内のパラメータは適当です. 内容に沿って変えてください.
gmm.fit(data)
をすると学習からモデルパラメータを最適にしていきます. 
参考: Furukawa Laboratory 素晴らしいデモが見られます.

詳しい使い方は割愛. 

学習済みGMMパラメータを取り出す

学習したGMMのモデルパラメータは取り出せます.
weight = gmm.weight_
means_, covariances_なども同様に取り出せます.

新しいGMMにモデルパラメータを入れる


新しいGMMに学習済みGMMのモデルパラメータを入れることができます.
new_gmm = sklearn.mixture.GaussianMixture(n_components=32, covariance_type='full', max_iter=100)
new_gmm.weight_ = weight
new_gmm.means_ = mean
new_gmm.covariances_ = cov

この時, new_gmm.precisions_cholesky_も入れないとpredict_proba()が使えません.
これは, 内部の_check_is_fitted()で学習したかどうかの判定で, precisions_cholesky_がチェックされているからです.

precisions_cholesky_

precisions_cholesky_はなんでしょうか?

内部を見てみると, GaussianMixtureクラスがSuper()を使っているので親クラスBaseMixtureクラスと関係がありそうです. 

GaussianMxitureクラスの中に_initialize()があります. fit()時に, _initialize()でprecisions_choleskyは設定されるようです.
self.precisions_cholesky_ = _compute_precision_cholesky(covariances, self.covariance_type)

このことから, _compute_precision_cholesky()にはEMアルゴリズムで分散を推定する役目がありそうです.
そもそも, precisions_cholesky_についてdocumentは何をいっているのか?
The cholesky decomposition of the precision matrices of each mixture component. A precision matrix is the inverse of a covariance matrix. A covariance matrix is symmetric positive definite so the mixture of Gaussian can be equivalently parameterized by the precision matrices. Storing the precision matrices instead of the covariance matrices makes it more efficient to compute the log-likelihood of new samples at test time. 
そもそも, precision matrixがわからないです. 共分散行列の逆行列を精度行列(precision matrix)というらしいです(参考). 精度行列を使うことで, より効率的に計算ができる, みたいな感じでしょうか?

とりあえず, ここを参考に,
from sklearn.mixture.gaussian_mixture import _compute_precision_cholesky
new_gmm.precisions_cholesky_ =_compute_precision_cholesky(covariances_, "full")
と書いておきます. covariances_ = covとしておこう.


2018年1月25日木曜日

流しそうめん

2017年の9月はじめごろにやった流しそうめん大会の記録です.
記事にしようと思ってたんだけど, やってなかった.

竹でやりました. 自前です. 山から切ってきました. チェーンソー万歳.



で, 竹は簡単に割れるんですが, そのあとが問題.



中がわただらけです. 沖縄のたけだから?よくわかりません.
とりあえず, 紙やすりで削りまくりました. そして洗ったのがこちら.



おおー. きれいだ. すべすべしてて気持ちがいい.
というわけで, 大学で流しそうめんしました. 2000円くらいで水ポンプもあるのでお得.


ここからは反省.

まず, 竹が細すぎる. 流すとき取りづらいです.
次に, 水の管理. 水場がないとつらいです. やや反省.

くらいですね. おおむね満足でした.

次の日には竹が水を吸って小さくなっていました.
丈夫な竹が必要なんだな.

というわけで, 参加してくれたみなさん, ありがとうございました.



2018年1月18日木曜日

「理科系の作文技術」読書会

2017年8月頃に開催された「理科系の作文技術」読書会について紹介します.
4ヶ月も紹介が遅れるとはなぁ.

なぜ読書会に参加したのか?


僕が「理科系の作文技術」を読み始めたのは, enPiTに参加した時に, 楽天の吉岡さん(@hyoshiok)からの紹介がきっかけです.
他にも本の紹介がありましたが, 読書法や作文技術から読むのがいいだろうと考えて, この本から読んでいます.
しかし, だらだら読みたくもないと思っていたとき, 運良く琉球大学の國田先生からお誘いがあり, この読書会に参加しました.


読書会の目的


目的は2つ.
  1. 速く読むこと.
  2. 読書後に内容を把握できるようにすること.
参加者は大学院生と学部生の合わせて8人程度, 時間は5時間を2日間です.
(速く読むために)一章分を30分で読み, その後, (内容を把握するために)意見交換会を30分で行います.
このペースで行けば, 休憩を入れても8章までいけるだろうという想定です.

結果からいうと, 8章まで行けませんでした.
これは後述します.

意見交換会


意見交換会は全員で2つの作業を行います.
  1. その章にふさわしいタイトルをつける.
  2. その章の内容を3文で表す.
これを各自の付箋紙に書き込み, 1つのボードに貼っていきます.
できあがったボードがこちら.(写真はすべて@innparusuの撮影)
第1章のボード

















全員が付箋紙をボードに貼り付けたら, どれがタイトルとしてふさわしいのか, 内容としてふさわしいのかを決めます.
決め方は, 全員でその付箋紙に指をさし, 多いものにします. その後, 付箋紙にシールを貼ります.
そして最終的にできたボードがこちら.
最終的にできたボード





















読書会が終わっての学び


読書会は仲間でやっていたので非常に楽しく過ごせました.
終わった後の疲労感はありますが, エクストリームリーディングほどではないです.
ただし, 記憶している内容は(読むものに左右されますが)読書会の方が多いと思いました.

得るものも多かったのですが, 意見交換会が長引きます.
1時間は意見を言い合っていた章がありました.
そのため, 5章までしか進めませんでした.

休憩時間はお菓子を食べながら, 飲みながらゆっくりできるし, 普段は話すことの少ない学部生ともお話することができたのは大きかったです.

読書会の成果はこちら. (画像が小さくてごめんよ.)
第2章のボード
第3章のボード
第4章のボード

第5章のボード


その後


自力で最後まで読みきりました(2018-01-07).
特に印象に残った言葉が2つ.
字面を白くしろ
まぎれのない文を書け
これから実践していきたいです.

2018年1月11日木曜日

Docker上のUbuntuでsndfileにハマっていた話

dockerでjupyterを使う


最近はjupyter notebookをよく使っているので, モジュール(ここではlibrosaなどのこと)をホストマシンに直入れしています.

誰しも, いろいろプログラムを触っているうちに, 有用なレガシーコードを動かしたくなることがあると思います.
しかし, importしているモジュールのバージョンが古い, ということがあります.
僕は, それを解決するために, dockerコンテナ上でjupyter notebookを動かしています.

dockerコンテナ毎でモジュールを管理していけば楽じゃないかと.
(結局, モジュール数が増えると管理が大変なんだけど. 誰か上手な方法を教えて欲しいです.)

構築は大変楽で, anaconda3入りのコンテナをpullして, ターミナルで,

docker run -dit -p 8888:8888 --name jupyter-notebook -v $HOME/jupyter-notebook/notebooks:/opt/notebooks continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --no-browser --allow-root"

するだけです. あとは,

docker logs jupyter-notebook

で出てくるURLをブラウザにコピペするだけです.


ところが


jupyterでimportした, 音声系のプログラムを動かすためのsoundfileがこう吐き出すのです.

OSError: ctypes.util.find_library() did not manage to locate a library called 'sndfile'.

ctypes.util.find_library()がsndfileを管理していない??
ググっても情報が少なくて小一時間はまりました.

結論


apt-get install libsndfile1

で直る.

libsndfileはUbuntuの音声読み書き用のライブラリで, soundfileが読み書きに使っています. 
僕は, /usr/lib内にlibsndfileがないため, OSErrorになったのだろうと考えています.

わりとチンケなエラーだったな_(┐「ε:)_

2018年1月4日木曜日

TeX環境を2017年版にupdateする件

1. TeX Liveをupdateする

updateしようと思ったんだけど, 誤ってTeXを全て消してしまった.

諸事情により,
不要だと思った/usr/local/texliveを消したら, /Library/TeXの中身が消えてた.
どうやら, /Library/TeXは/usr/local/texliveのエイリアスのようだ.

2. TeX Live 2017を導入する


導入はTeX wikiを参考にした.
僕はMacTeXでインストールした. なぜならば, OS X 10.10 Yosemite以降はMacTeXの方が導入が楽そうだったからだ. Yosemite以前の場合はTeX Liveからインストールした方がいいらしい.

パッケージをインストールしたら, 使っているシェル環境の設定ファイルに以下を追記する.
僕は.zshrcに書き込んだ.

#TeX
export PATH="/Library/TeX/Distributions/Programs/texbin:$PATH"

これでおしまい.

3. TeXstudioをupdateする


TeXstudioは僕が好きなTeX環境です. なぜならば, 式を書くのが簡単だから.
これもパッケージインストーラーに従うだけでいい. 非常に楽だ.

導入した感想

最初にTeXを消した方が楽かもしれない. 
ただし, styファイルは全て消えたので, それは自分自身で新しく入れる必要がある.