読者です 読者をやめる 読者になる 読者になる

第5回 関西DB勉強会に参加してきましたって話

第5回 関西DB勉強会に参加してきましたって話

kansaidbstudy.connpass.com

5/20(土)はこれ行ってきました。

DB関係で初めて知ったことだとかをメモしておきます。

続きを読む

Azure Functionsを使ってGitLabのWebhookをDiscordに通知するようにしたって話

Azure Functionsを使ってGitLabのWebhookをDiscordに通知するようにしたって話

 生存報告を兼ねて。引っ越しました。

背景、もともとの運用

 しあわせの国での開発は、GitLab.comで発生したイベントを、Discordに表示させる運用をしてます。

 誰かがブランチをプッシュしたら、こんな感じのメッセージが流れてきます。

f:id:kokeiro0_00:20170430171732p:plain  アイコンと口調がちょっとイラッとするのが特徴です。

 開発メンバーの中にはgit使ってない人もいます。そういった人にも作業進捗が見えるようにしたい!というのが俺の建前で、 実際は誰かが作業していることを目に見せることで「俺もやらねば」と煽るのが目的で作成。

 Issueの操作などの、ブランチのプッシュ以外も通知されます。最近はあまりIssueはあんまり使ってないけど。

 これまではRaspberry Piにボットを住まわせて、GitLabからの通知を拾わせてました。 が、引っ越し先に光回線が引かれておらず、回線工事することとなりました。 工事待ちの間はSoftBank Airってのが貸出されてインターネットそのものは利用できるんですが、無線機ってこともあって機能制限がキツイ。

SoftBank Air における機能制限のお知らせ | インターネット | ソフトバンク

ご利用いただけない機能
・ポート転送

影響を受ける可能性がある利用形態
・外部向けサーバーとしての利用、外部からのリモートアクセスの一部
・外部からIPアドレスを指定してアクセスを必要とするもの

 Raspberry Piのボットに待ち受けさせるの無理やん!引越し前と同じ運用は難しそう。。。 というわけで、自宅のRaspberry Piを経由せずにGitLabの通知を拾うシステムを作ろうと思い立ちました。

続きを読む

2016年にやったことと2017年にやりたいこと

2016年にやったことと2017年にやりたいこと

2016年にやったこと

 とっくに2016年終わってるけど書く。

同人ゲーム制作活動

 ほぼ1年間、しあわせの国というサークルで、同人ゲーム制作を行った。2016年1月に出来たばかりのサークル。構成は大学時代からの顔見知り4名+α。私はプログラマーとして活動していました。

 ベータ版のUnityをガシガシ使ったり、造詣の浅かったUniRxに触れたり、開発を楽にするためのチャットボットを作成したり。同人ではガンガン最新バージョン使って失敗できるのがいいですね。仕事だとリスク考えて動かないと行けない場面でも「とりあえずヤッてみよ~」で手を出せるのが良い。いろいろ失敗して経験値増えたんで、適当な場面でアウトプットしていきたい。

 無事解散せず、C91にゲームを頒布することが出来ました。

 すでに次回コミケに向けて動くことになっとる。頑張る。

転職

 3月に転職した。ゲーム会社 to ゲーム会社。職業もプログラマーのまま。

 転職後も転職サービスに登録しっぱなしにしてたのだが、思いの外良い経験になった。登録したままにしておくと、求人メールやら求人チャットが届く届く。転職したばっかだから殆どの求人は無視してたんだけど「君のソースコード/SNS見たよ~。軽く話してみない?」みたいな、一歩踏み込んで俺に興味持ってくれたところには積極的に話を聞きに行った。現場の生の話を聞けるのは良い経験になった。今の今使ってるツール、今の今使ってる技術ってのを直接聞けた。知らないツール/技術を多く知る切っ掛けとなった。雑誌なり勉強会なり適当なブログの購読なり、様々な方法で広く知識を集めていこうと思った。

2017年にやりたいこと

 年始というほど年始じゃないけど、今年やりたいことやら。

プログラムの設計について学ぶ

 ザックリとした目標だが、学ぶ。

 GitHubとかで他人のソースコードを漁ったりフレームワーク触ったりなんだりして、経験だけは積んできた。とはいえ、体系だった学習をしてきたわけじゃないので、大部分が我流になってる。と思う。そんな気がする。

 クソみたいなコードを書いて、1ヶ月後に後悔するって場面を減らしていきたい。

 当面は適当な書籍を見繕って読み砕いていく。詰まったら人に聞いたり、ライブラリやらフレームワークを読み漁っていく。

スポーツジム通う

 体力の衰えを感じる。俺もアラサー・・・

 駅から帰ってくる途中にジムあるんで、仕事帰りに週1~2回を目安に通う。

 (そのうちOpenAI Gymにも通いたいと思っている)

買いたいもの買う

 いっぱいあるんだけど、金が足りない。

 その時々の優先度に合わせて、少しずつ消化していきたい。

  • Surface Pro:勉強会でのメモ取りは未だにアナログorスマホって状況から卒業したい。
  • HoloLens:二次元キャラ出したい。
  • Oculus/Oculus Touch:二次元キャラと遊びたい。
  • Pixel:日本発売はよ。

ブログ活動を継続する

 月1回を目標に何か書く。プログラミングでもアニメでも財布を落とした話でもなんでも。Twitterのような短文形式じゃなく、まとまった文量をアウトプットしていく癖をつけたい。

 昨年はUnityベータ版一通り触ったり、Discord/Twitter/Slackのボット作ったり、GoogleAPIいろいろ叩いたり、Docker触ったり、C#7動かしてみたり、コミケ出たり、機械学習に手を出したり、Webクローラー回したり、ラズパイ上でMono動かしてみたり、勉強会参加したり、サーバーレスアーキテクチャに手を出してみたり。ブログに書けることはたくさんある。んだけど、記事に起こすのが面倒で更新してなかった状態。どこからかモチベを引き出す術を身につければ、いい感じに書ける気はする。

.NET Fringe Japan 2016参加してきました。そのチビっとした感想郡。

.NET Fringe Japan 2016に参加してきました。一週間くらい前に。

dotnetfringe-japan.connpass.com

セッションに関する内容は俺俺要約と、リンクを張る程度に留め、ザックリとした感想をポツポツと書いていきます。資料自体は全部ココにあります

そもそも.NET Fringe とは?

dotnetfringe.org

An atypical conference for open-source .NET developers.

.NET開発者のための型にはまらない自由なカンファレンス、的なニュアンスかの?

GitHubPagesで公式サイト動いてたから、イベントに関する説明文探してみたけど思うように結果は得られず。ま、要は.NETのイベント。いじょ。

FSharp Deep じゃない Dive

途中から参加。イベントを知ったのが前日で、はキャンセル待ち状態での。繰り上がりで参加できる連絡きてからパパっと移動したンだけど。。。

F#は眺めたことはあるけど、書いたことはない。一行も。

F#の学び方が割りと印象的だった。 ちょっと古めの和書でOK。和書全然新しいの出てこないらしいけど、F#2.0の知識でも大部分カバーできるらしい。

F#は関数もシリアライズできるって点も印象的だった。 資料には載ってないけど、口頭でチラッと情報が出た。 どゆこと?シリアライズってデータをゴニョゴニョするもんじゃないの?

関数もデータっちゃあデータなんだろうけど。 ちらっと調べてみたけどイマイチ分からんかった。 ちな、理屈も利用場面もさっぱり分かってない。 俺が持ってる「シリアライズ」の定義が世間とずれてるのかもしれない。

何にせよ、そういうパラダイム持ってなかったんで刺激になった。

「はじめにお読みください」な C# 言語機能の作り方 - 機能は用法・用量を守って正しく追加してください

C#コンパイラーをちょこっといじる話。怖い。

と見せかけて、実際のセッションでは1行しかいじらない。

  • 言語作ることの大変さとか
  • roslynリポジトリの歩き方とか
  • 言語いじらなくともVisualStudioの拡張機能でカバーできる範囲とか

提案する際は社会人らしく提案しましょう、まる。って感じだった。 issueってポンポン立ってる状態なんだなぁ。

Azure Storage Partition Internals

パーティションの話。

そもそもサーバーのパーティション周りを弄ったことも調べたこともなかったため、さっぱり分からなかった。。。 サーバーサイドのスケーラビリティに関わる機会が生まれたら、再度スライドを見ることになりそう。

Xamarinソースクエスト

Xamarin/Mono周辺がオープンソースなった。ソースコード読んだり弄ったりするためのコツやら注意点やらのセッション。資料スライドは英語だけど、実際のセッションでは日本語で話してもらったので、理解はスルスルと。

触る機会そのものは少なそう。バグっぽい挙動を踏み抜いたときに見返す事になりそう。

makeを3回実行すると動くようになる、というのが印象的でした、まる。

MessagePack for CLIとそこから学ぶ.NETのマルチプラットフォーム対応

「一般的なシリアライザーの構成要素」ってのが印象的だった。本腰入れて作る機会は無い気がするけど、遊びがてら触るときはこの構成にしようと思う。

リフレクションが必要な箇所をマルチプラットフォーム対応するのは大変そうだなぁと思いました、まる。

週末OSSやるんだったら、好きな分野やると良いよってのも印象的でした。好きな分野ってのは、あまり重ならないものらしい。メジャーどころは強キャラだらけでモチベ維持が大変だったりとか。

完璧を求めたりせず、好きなものを好きな通りにやるのが長続きさせるのに重要なのかも。

What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの原理原則

  • 世界で使われるもの作れると名刺代わりになる
  • ライブラリの大きさは関係ない
  • 外に出すためのパッケージングで得られる経験値は貴重
  • OSSは出した瞬間が旬。あとは萎んでいくのが普通
  • 使ってもらうにはコードだけで終わらず、ドキュメントもサポートも外部アプリとの連携も大切
  • 「設定より規約」よりコンパイラがルールを伝えてくれる方がいい
  • APIユーザビリティ設計についてはこの本がオススメ

丁寧にパッケージングする大切さを知った。ポツポツと出していこうと思う。

Beachhead implements new opcode on CLR JIT

.NET Core Runtimeを拡張子、自作オペコードを追加する闇のセッション。手探りでソースをいじってた感が伝わってきました。怖かった。

「最終的にILに自作オペコードを呼び出す処理を実装する必要あるよな?まさかIL吐き出すところまで作るんか?」とビビってたけど、流石に違った。

  1. ほぼ空のコンソールプログラムをコンパイルして
  2. idlasm使って逆コンパイルして
  3. 出てきたIL直弄りして(!?)
  4. ILを再びアセンブリに戻す

という流れだった。怖いぞ。

これも資料は英語だけど、セッションそのものは日本語で行われました。 デモ実演も行われました。

お話としてはスゴイ面白かったけど、自分で直接触る機会は無いでしょう。ないでしょう。

.NET Core とマルチ プラットフォーム Deep Dive

どのようにマルチプラットフォーム対応しているのかというセッション。直前の闇セッションと、MessagePackのマルチプラットフォーム対応のセッションと関連が深く、いろいろ知識を補完できるいい流れだった。

開発/コンパイル時と配布時とで参照先を見えないところで切り替える、みたいな話だった(理解怪しい)。

マルチプラットフォーム対応のライブラリを作る際に見返すと良さそう。

全体を通して

皆さんお疲れ様でした。とても楽しかったです。

長かった。実に長かった。20:20までかかった。

私は遅れての参加だったけど、フルで参加してる人は10時間以上も踏ん張ってたことになる。懇親会で更に遅くまでって人もいるだろうし、運営者に至っては朝もっと早くから動いてたわけだろうし。ホンマありがとうございました。

今回は前日に知っていろいろ焦った。広く情報を仕入れ、前もって予定立てれるようにしよう。

マインスイーパーを機械学習で解くプロジェクトを作った

マインスイーパーを機械学習で解くプログラムを作成した。

github.com

マインスイーパーごにょごにょ。

6x6程度の小さい盤面しか学習できないようなパフォーマンス・設計という致命的な問題を抱えているが、その条件ならしっかり賢くなってくれる。正答率が上がっていくのを眺めるのは楽しね。

アルゴリズムとかは上記リポジトリのREADMEに任せて、プロジェクトの背景とか、私自身の学習過程とかをダラダラ書いていく。

背景、動機

2点。

どこから勉強し始めたか及びその経過経緯

そもそも機械学習とはなんぞや?

機械学習をやりたいけれど、どこから手をつけていいか分からない人のために - Qiita

機械学習を用いればマインスイーパーを解かせられるじゃろ!程度のぼんやりとした知識しかなかった。 ので、機械学習そのものについて調べているときにたどり着いた記事。この記事を読み、強化学習を使えば良さそうだな、と目星をつけた。

強化学習ってどんなことがデキるんじゃ?

ゼロからDeepまで学ぶ強化学習 - Qiita

強化学習という手法について、基礎から最近目覚ましい精度を出しているDeep Q-learning(いわゆるドキュンDQNです)まで、その発展の流れと仕組みについて解説をしていきたいと思います。

いざプログラム作成後に見てみると、クラス名とか記事参考にすればよかったなぁーって部分が幾つか。そのうち直そう(直さない)。とりあえず「現在のステートに対して、うまく出来たら報酬を与えて、うまく出来なかったら減点する」ということを学んだ。数式は全然見てないし、発展的な内容は全然取り入れてない。そのうちな!

いつの日かOpenAI Gymを少しだけ歩いてみたい。

シンプルな感じのサンプルコードを漁っていく

とりあえず今回参考にしたのはこの2つ。Q学習関係のサンプルコードを漁っていた。

Q学習を試してみたかったのだが、最終的にはモンテカルロチックな実装になった。そもそもQ学習を使いたかった理由は「なんかカッコイイから」程度のものだったのだが、マインスイーパーで伝搬が発生するような学習方法は難しい気がしたため変更。囲碁や将棋と比べて、盤面の変化がどのように起こるかが非常に分かりにくい。「あの状態に遷移するとクリアしやすいぞ!あの状態を目指せ!」と分かったところで、とてもじゃないが再現できないと判断したため。

そんな感じの知識を手に入れて、あとはゴリゴリ実装して終了。

改善できると分かってる箇所は多いんで、そのうち対応する。 そ の う ち 。


強化学習

これ買った。いろんな記事で「読んどけ」って宣伝されてたため。機械学習系の書籍は多いけど、強化学習に絞った書籍ってのは少ないらしい。その中で、こいつがオススメ~みたいな雰囲気のが多かった。

あ と で 読 む

ブログ事始め

事始め

はてなブログ始めました。

何書いてくの?

特にとりとめもなく、思ったことをば。

興味のあること、記事になりそうなこと郡

  • プログラミング
    • 特にC#,VisualStudio
  • ゲーム制作
    • Unity
  • エロゲ
    • 特にFavorite作品
  • 同人イベント
    • オールジャンル、オリジナル、技術、批評、酒などなど
    • 特に日本酒
  • その他適当な雑記

備忘録的なものから読書感想文まで何でも置いてく予定。

もともとmixiで日記書いてたり、自鯖Wordpress置いてブログ書いてたり、GitHub Pagesでブログ書いてたりしたんだけど、結局管理が面倒だったり、Markdownが使えなかったりなんだりで、はてなブログに流れ着いたマン。

のんびりやっていく。