自然言語処理における、口語の誤文の有用性について

 自然言語処理について特に詳しいわけではないが、会話上における誤文には面白いものがいくつかあり、これがコンピューターによる自然言語処理に活かせそうな気がする。

「所詮お前は勉強ができない」

所詮は本来の用法として現在から未来に向かって避けられない(悪い意味での)結末があることを示したり、あるいは何か先進的ななにかがあるようで本質的には大したことがないといった用法で使われるが、悪いニュアンスを示す副詞としてのみ使っている。誤まっていると言うほどではないが、文中では違和感がある言葉だと思う。こういったものをうまく噛ませられないかなぁとか思いつつ、そもそも会話中でないと現れないような誤文のデータを集めるのも大変だなぁとおもったり

サムザップのインターンに行ってきた(CA Tech JOB)

サムザップって知ってる?

 今回CA Tech Jobにて、サイバーエージェントのSGE部門のサムザップ株式会社で三週間お世話になりました。詳しくは下記リンクを

www.sumzap.co.jp

 

インターン採用まで

  • 夏だしなんかインターン探すか

  • 大学の日程的に人事とコネ(くしょん)があるサイバーエージェントくらいしか行けなさそうだなー

  • ゲーム作ってるし、ゲームのバックエンドとかにしようかな

  • サムザップさんを案内された(受け入れられるタイトルが少ないっぽい?)

 みたいな流れになります。作ってるゲームの話は過去記事にて

やったこと

 リリース前なので言えません!お酒の席で聞いてください


 タイトルは戦国炎舞です。7年目を迎えるロングタイトルです。ゆえにレガシーもあります


 まぁでも基本的にはよくある機能改修です。ちょっとデータの扱いがややこしいが、実装自体はある程度めどがすぐ立つみたいな分量です。

ホラ、キラキラ✨渋谷系エンジニアに見えてきただろう?

開発環境うんぬんについて

 言語はPHPです。ぺちぱーって言われてるやつですね。環境もAWSに載せてはいますが、おおむねLAMP環境を踏襲した感じになってます。PHPmyadminもあるし、var_dumpデバッグも健在です。

開発に関して思ったこと

 最近はもう静的型付けでしかプログラムが書けなくなってきたのですが、今回は本当に書けませんでした。Codeigniter系フレームワークをカスタムしてるような使い方をしており、PHPStorm君がまったく補完を利かせてくれません!おれがIDEだ!(周りに聞いたら大体頭に実装を叩き込んでいてびっくりしました。)


 ソースコードを読むよりも、ゲームの仕様を把握するほうが大変というか、ゲームの仕様をわかってないと読めないコードが多々あります。

 それが昔やってたイベントに合わせた実装であったり、補完の利かない動的型付けらしくどんな形で変数を渡してるのか見当もつかない(つくけど追いかけるのがとても大変)みたいなのが結構ありました。

 開発環境まわりのリファレンスはあるのですが、ゲームの仕様は特にリファレンスになってないので、ひたすらプレイしたり攻略サイトを眺めたりしてソースコード読みました。ここらへんはゲーム特有の開発スタイルかもしれません。

サイバーエージェント・サムザップについて

 前回のアーキテクチャチャレンジでもある程度話したような気がしますが、かなり人柄重視だなと思います。今どきの言葉で言えば「心理的安全性が高い」ってやつですね。

 渋谷系IT企業としては珍しくコーディング試験をせずに面接を重視するところであったりすることからわかるとおり、社内の空気感にはかなり気を使っている印象があります。ただ、この辺りは言葉で説明しても難しいのでぜひインターンに参加しましょう(丸投げ)


 有名な話ですが、子会社ごとに裁量があります。それゆえに会社ごとにいろいろルールが違ったりします。

 サイバーエージェントはかなり大きい上に、子会社がかなり独立して運営しているので部門や子会社ごとにかなりカラーが異なるらしいです。サムザップは、う~んわからん。普通?割とワイワイしてる雰囲気があります。戦国炎舞の合戦になるとスイッチが入るところは流石だなと思いました(朝会のタイミングもそれに合わせてずらされている)。自分で作ってるゲームに自信を持っていることは大切だと思います。

参加して得たこと

  • 鈍ってしまったコーディングの勧

 こまかくレビューをいただくことができ、忘れてたり見落としていた部分を見ていただけて非常に助かりました。けど動的型付けはもう書きたくない……

  • 高負荷なソフトウェアの運用ノウハウ

 これは是非自分でリリースするときにいい感じにまとめたい

  • チーム開発

 とくにPHPフレームワーク的にMVCのViewで結構ロジックが書けるので(そこが良いところでもありますが)、その分フロントエンドとのすり合わせは大切ですね。あとは、小さい機能なら多分一人でやったほうが楽です(結局フロント作んなきゃデバッグできないしね)  Unity側でバグが出たけど自分は確認できないみたいなのが結構辛かったです。APIとみなせるところはテストを書いたほうがよさそうです

オプション

 参加するとこんなの付いてきますよ~みたいなやつです

シャッフルランチ

 人事の方が様々なインターン生や社員を混ぜてランチを組んでくれます。就業場所以外のこともいろいろと知れるので非常に参考になりました。トレーナーの方もサムザップ内でいろいろとランチを組んでくださり、さまざまな業種の方とお話しできたのがとてもよかったです(昼食代も浮いてラッキー)


コンピューター貸し出し

 結構スペックのいいノーパソを貸してくれます。1秒も使いませんでした(サムザップの方で用意されてた……)



ジュース

 無料自販機やウォーターサーバーがあります。めちゃくちゃ水分補給をするタイプなので助かりました。(ほかに書くことあるだろ)


インターン同期生との懇親会

 インターン初日にあるらしいです。ちなみにその頃私は電気回路の試験を受けていました。


悪かったこと

 「よいところもわるいとこもぶっちゃけて書いてくれ!」とのことで、いくつか気になるところを



環境が古い

 これはサイバーエージェントというよりは、ゲーム部門あるあるなのかもしれません。ゲームは当たりはずれが大きすぎて安定して人を受け入れられるタイトルがあまりないみたいです。戦国炎舞では、AWSを使っているとはいっても、開発環境自体はかなりLAMP的です。クラウドサービスが発展して、「そもそもLAMPってなに?時代はGo!みたいな」みたいな学生エンジニアには少し物足りないかもしれません。


マイクロサービス化を少しずつ進めてるらしいので、そこら辺に期待したいですね(まぁ課金処理の基盤化とかは今のソシャゲ業界のトレンドっぽいので、そこら辺でGoとかいろいろ出てくる気がします。)



キャリアアップがかなりマネージメントより

 これはインターンとはあまり関係がなく、サイバーエージェントに対する印象です。もちろん技術力でキャリアアップする人もいますが、人数で言うとかなり少ないなぁと思いました。サイバーエージェントインターンに来る学生はやっぱり新しい技術をどん欲に追い求めるようなタイプが多く、そこにギャップがあるように感じました。僕の担当のトレーナーの方はいろんなところに会議に行ったりして忙しくしていて、技術のキャッチアップは趣味でやってるからどうにか追いつけているような印象があります。この辺りは会社も問題には思ってるらしいので改善されるとよいなと思います(ちなみに技術力の高い人自体は結構いるのであしからず)



 まぁあとQA業務ちゃんと見てみたかったですね。そこは会社の都合でなかなかできなかったみたいです。

その他ゲーム業界的な話

 最近ゲーム関係の会社の人と会話することが増えたのと、僕の周りにゲーム業界志望が多いのでそれ関係の話をしようかと。


ゲーム自体のトレンドの移り変わりが早いのに対し、ゲームの製作時間やコストは増えているのが現状です。サービス系が半年ほどでリリースにこぎつけるとしたら、ゲームだと3年ぐらい体感かかるといったお話を聞きました。実際どこぞのゲームは10年かかってたりしますしね。新卒で3年間ノーキャリアとなったら流石にリスクになるので、そこら辺の注意は必要だと思います。ゲーム作るのは楽しいのでそこらへんは心配ないと思います(自分の作ったゲームは神ゲーにしか見えなくなるので、世の中のクソゲーの大半はこの罠に陥ってるんでしょうね……)

まとめ

 やっぱり実務が一番伸びますね!どうせ暇してる皆さんは是非参加しましょう!

夏休みの予定

 すでに夏休みが始まっていますが

進行中のもの

  • どこかのIT系企業でのインターン(3週間)
  • 現在委託中の案件
  • TOEICの勉強

進行させなきゃいけないこと

  • オンラインゲーム開発
  • 螺旋本
  • PyMC3

どこかのIT企業でのインターン

 これはあとで記事にしてまとめますが、ザックリ言うとゲームのバックエンドをやってます。webviewを使っている関係で若干フロントエンドとも言えます。

委託中案件

 理科大つながりの案件です。これもいつか記事にしたい。やってることとしては機械学習周りのインフラです

TOEICの勉強

 単位が足りないでがんす!

オンラインゲーム開発

 連載してるやつですね。流石に9月中にはリリースしないとそのあとのスケジュール的に触れない気がします。

螺旋本

 とりあえず終わらせて、AtCoderへの参加を習慣化したいですね。大学生のうちに水色くらいになろうと思ったら、3年生のうちに緑になりたいなーとか思うわけです。

PyMC3

 機械学習のとっかかりに。本当はR&Stanを使うべきなんだろうなぁ

と言う感じです。ほかにもいろいろしたいことがあって死にそう

tensorflowビルドに苦戦したわず

結論としてこのリンクの通りにやればよかった。

TensorFlowのビルド方法(tf1.13.1, CUDA10.1, cuDNN7.5.0, Windows10)|infohub - Development

いやね?CUDAとcuDNNのライブラリを一致させなきゃいけないのはわかるよ?Pythonが新しすぎるといけないのもまだ我慢できるよ?Bazelが最新だと動かないってどういうことよ?ただでさえBazel自体のインストールがだるいのに、0.19未満じゃないと動かないとか意味不明よ!

という感じで一日を溶かしました。キレそう

オンラインゲーム開発日記3 FireBase導入

f:id:Piffett:20190704061640p:plain
firebase会員データ

 Firebaseを導入することに成功しました。とりあえず匿名認証を挟んでいる感じですね。ある程度リリースが安定したらGoogle Play Gamesとかを使ってクラウド経由でデータを同期できるようにしたいですね。なんかPlayStoreからリリースしないと使えないっぽい?ドキュメント見ても仕様がよくわからないし、ゲームのロジックとは何の関係もないのでしばらくは放置しようかと思います。ちなみに開発コードはDibleでも、アプリ名が変わりました。Google play Consoleでプロジェクトをバグらせて消せなくなったので思い切って(中身は同じ)別アプリとしてリリースすることになります。GooglePlayGamesのダッシュボードとかって一回リリースするともう消せないんですね~先に言ってよぉ~! f:id:Piffett:20190704062117p:plain

 こんな感じで利用規約やプライバシーポリシーも用意しました。ちなみにこれ用意しないとGoogleさんにアプリがBANされます(バッチしされました)。罠なのが、テキトーにUnityとかFirebaseのSDK突っ込んだらAnalyticsが走るからそれを検出してBANするみたいな感じになることです。どうせ作るなら先に作っておいた方が良いと思いますね。

オンラインゲーム開発日記2 サーバー側のリファクタリング

今のうちにリファクタリング

 とりあえず動けばいいやで通信していたのですが、今後のことを考えると色々手直ししなくてはなーと思い。会員登録などを行うGo言語のサーバーをJSONAPI化しました。あとは開発環境のmysql文字コードが変わっていなかったので、utf8mb4に変更しました。あとはまっさらにしてある程度作り直しました。Firebaseをいれようとして色々とバグらせてたので、これからまたリベンジしたいと思います。今はPOST投げて登録するだけなので、攻撃に弱すぎる気がします。あとはデータの移行もスムーズにできたほうが良いと思うので、そこら辺をしっかり作りこもうと思います。一人で作ってるとこういうことに時間がとられて大変ですね。

f:id:Piffett:20190628003228p:plain

オンラインゲーム開発日記1 作ろうとしているゲームの紹介

 こんにちは。今回は作ろうとしているゲーム(と言うか既に作り始めているゲーム)の進捗を書いていこうかなって思います。僕はすずぬーとブログが死ぬほど好きで、少しずつ開発が進んで完成するのを眺めるのがめっちゃ楽しかったんですよね。なので僕もやろうかなと

Dible

 ちなみにDibleはコードネームなので、変更する可能性があります。このゲームでは2Dの対戦型のカードゲームになる予定です。

f:id:Piffett:20190620000829p:plain
概要

 k8s上に大体組めるように作っています。ちゃんとした課金システムとか、GooglePlayGamesとかGameCenterとかと連携したりしてデータを保存できたりとかも実装しようかなと思います。まぁでも大変ですね。

f:id:Piffett:20190620000426p:plain
課金の実装