ゲストに勝手に自己紹介してもらう

この記事は、みす51代 Advent Calendar 2017の6日目の記事です。

 

 

1.お詫び

皆さんこんばんは 51代プログラミング研究会のとまとです。
とてもとても真面目な大久保工科大学の模範囚です。

そして諸々の進捗ダメ。実験ツラいのだ!
そこで代わりにゲスト呼んだので、
その人たちにやってもらうぞい。

 

2.ゲスト紹介

 

f:id:tomato9071:20171203231645p:plain

茜:今回ゲストの琴葉茜(ことのは あかね)や!

f:id:tomato9071:20171203231710p:plain

葵:同じくゲストの琴葉葵(ことのは あおい)です。
  今回は、私たちのことについて布教(自己紹介)させていただきます。
  主に、私たちが出演している動画を色々紹介していく感じです。


茜:先に言わせてもらうけど、うちらはYoutubeニコニコ動画
  メインに活動してるVOICEROIDっていうやつや!
  まぁ、VOCALOIDは歌うのが(vocal)メイン、  
  VOICEROIDは話すのが(voice)メインやと思ってくれたらええで!

 

葵:公式設定などもありますが、動画によって無視されることも多々あるので
  ここではしません。動画を見ながら設定を感じてください。


茜:要はぽんでりんぐや!ぽんでりんぐ!


葵:Feeling?


茜:それやそれ!

 

葵:お姉ちゃんがふざけている間に、話を進めていきますね。
  さてまず、PUBGというゲームを題材に話を進めていきましょう。

 

3.PUBG

                                     

  PUBGとは、全世界で200万人以上が同時に遊ぶほどに、
  現在かなり盛り上がっているTPS(三人称視点のシューティングゲーム)です。
  PUBGの正式名称はPLAYERUNKNOWN'S BATTLEGROUNDSというものなのですが、名前の通り、
  「プレイヤー同士は基本見知らぬ人同士で、その人たちが最大100人同時に、
  同じ無人島に上陸します。その無人島には、
  防弾チョッキや銃、応急処置の道具や爆弾、
  あと車やレッ〇ブルやフライパンが沢山置いてあります。
  それを集めたり奪いながら、最後の1人(1チーム)になるまで、
  互いに殺し合いをする」というゲームです。

                                     

  まずは、それをプレイしたり、その合間にVOICEROID達が話したりしている
  動画の紹介をしていこうと思います。

 

3.1.【PUBG】光のお姉ちゃん 【VOICEROID実況劇場】

葵:一つ目はこれです。
  私たち琴葉姉妹に関するオリジナルの物語を紡ぎながら、
  PUBGをプレーする動画です。
  PUBGを知らなくても、一つの物語として楽しめると思います。
  ネタバレになるため詳しくは話せませんが、優しいお話です。

 

茜:それもそうなんやけど、FPS,TPSを知らない人向けの解説も豊富や!
  PUBG初心者向けの情報が直感的に動画の中で説明されてるで!
  これからFPS,TPSっていうジャンルを始めたり、
  PUBGを気楽にプレーしたい人におすすめな動画シリーズやで!
  

 

3.2. [PUBG]助けてあおいーーー![琴葉姉妹実況]

茜:二つ目はこれや!
  実はPUBGが日本で遊べるようになったのは今年の 4月頃なんやけど、
  その頃に、PUBGを布教するために作られた動画シリーズや!
  それなりに早いテンポで、ガシガシ好き勝手やる動画とも言えるで。
  

葵:こちらの動画も初心者向けです。
  ただ先程の動画と比べるとPUBGの専門用語は説明される割合が低いため、
  PUBGを1度はプレーしていないと難しいかもしれません。
  また、PUBGの本質が殺し合いのゲームであるため、
  ケチャップぐらいの流血表現が苦手な人は避けましょう。

  

 

3.3.【PUBG】仲間任せの茜ちゃんサバイボゥ【VOICEROID実況】

茜:PUBGのラストはこれや!一言でいうなら、プレイヤーがめっちゃ強い!
  そして、その人のゲーム画面を中心に、うちらが色々話していくという動画や
 
葵:あと、PUBGが強くなる秘訣みたいなものがかなりちりばめられているので、
  強くなりたい人は特に見るのをお勧めします。
 

茜:この人の知り合い、PUBGでアジア1位を取ったり、虹六?っていうゲームで
  世界1位のチームのリーダーやってたりしてるんや。
  別の動画でその人のプレー動画もあるし、世界トップレベルを知りたい人は
  この人の動画を調べるとええで。
 

葵:こういっちゃなんだけど、この動画がYoutubeに上がってたりTwitchで生放送してるので、
  ある意味ニコニコ以外での活動も活発な人ともいえるね。
 

 茜:これでPUBGは終わりやな。次のゲームに進むで。
 

4. Besiege

                                   

Besiegeでは、貴方には多種多様なパーツが与えられます。
それはブロックだったり、爆弾だったり、ロケットだったりいろいろあります。
それらを組み合わせて、兵器を作ったりして、
沢山のオブジェクトの破壊や物の移動などをしていきましょう。

                                  

茜:というシンプルゲームやな。

葵:でもまあ、シンプルなゲームほどゲーム実況者が好き放題やるんだよね。

茜:うんうん、某マイン〇ラフトと同じような感じやな。
  というわけで、好き放題やってる有名どころを二つほど上げるで。
 
 

4.1.【Besiege】英国面に堕ちた茜ちゃんのパンジャンドラム縛り VOICEROID実況

茜:圧倒的紅茶!圧倒的英国面!
 
葵:お姉ちゃん落ち着いて。

茜:おっと、すまんすまん。まず、このゲームの目的が
  オブジェクトの破壊や物の移動って言うのはええな?
  この動画ではそれを、タイトル通りパンジャンドラムという兵器のみで行うんや。
  口では形容しがたいから、パンジャンドラムってなんや!?って思ったら、
  是非動画で見てな?
 

葵:極端に思想がイギリスと紅茶に侵食されていますので、
  イギリスが大好きな方や紅茶が好きな人はぜひ見てくださいね。
 

4.2. 【Besiege】茜ちゃん筋肉化計画1セット目【VOICEROID実況】

葵:先ほどはイギリスと紅茶に狂ってましたが、こちらは大丈夫です。
  筋肉に狂ってます。いわゆる脳筋です。

茜:脳筋とは心外な。筋肉とは何かについてガッツリ思考するお話やで?

葵:ソ、ソウダネ
  あ、尺が少なくなってきたらしいので巻いていくよ?お姉ちゃん。

茜:はーい

 

5. 異色系

葵:最後は色々と、特殊な動画を上げていきましょう。

5.1. 【ボイスロイド実況】茜のカービィボウルをプレイするで!

葵:これはお姉ちゃんが、変態的な技術をゲームで発揮するお話です。

茜:変態ゆーなや。葵だって言動が色々ぶっ飛んでるで?

葵:私はいいのお姉ちゃん。それよりもこれの解説をお願い。

茜:それでいいのか葵…。まぁこのゲームはとてもシンプルや。
  カービィをゴルフボールに見立ててゴルフをする。それだけや。
  あ、カービィが自分で動くから、カービィが痛い思いをすることは無いで。

葵:この動画シリーズで特に他の動画と違うところ、それはゲームがバグってることです。
  例えば、反発係数って普通1を超えませんが、バグのせいでたまに超えます。

茜:確かカービィボウル学会の人たちも匙を投げたって言われてるし、
  そういうのが好きな人は見てみるとええかもな?

5.2. 琴葉葵「トポロジーってなあに?」

葵:トポロジーってなあに?

茜:タイトルそのまま読み上げるなや、紛らわしい。
  この動画は、葵が大学数学で学ぶ「トポロジー」について興味を持って、
  私がそれの解説を出来るだけ平易に行う話や。
  でもかなり難しい話やからな、あくまでトポロジーの考え方の説明で終わるで。

葵:言い換えれば、トポロジーの布教動画って感じかな?

茜:多分そういう認識でええんやないかな

5.3. あかねちゃんカフェはじめました

葵:最後は落ち着いた動画で締めましょう。

茜:飯テロやん!

葵:とても落ち着いた動画でお勧めです。
  内容としては、食べ物や紅茶の料理番組のような感じです。

6. まとめ

茜:さて、これでアドカレの分量もヤバそうやし、これでおしまいかな?

葵:そうだねお姉ちゃん。なおここで上げた動画はほんの一部です。
  これらの動画は「琴葉姉妹」「平和」のフィルターをかけた結果です。
  他にも色々な動画がありますので、気が向いたら自分向きの動画を探してみるのもどうでしょうか?
  ちなみにフィルターに弾かれた約60件のVOICEROID実況シリーズなどについては、
  とまとに聞いてください。私たちには知らされてないので。

茜:というわけで今回はここまでや!またなー!


(後述:
 VOICEROID業界は、自主規制が実質無いためぶっ飛んだ作品がとても多いのは事実です。
 ですがそれは裏を返せば、他の業界に無い表現の幅があるということです。
 幅が広すぎて気分を害する動画と出会うこともあるかもしれません。
 その時はそっとブラウザバックをして、別の動画に旅立っていきましょう。
 後最後に一つ。姉妹愛は良いぞ)

 

 

明日は、なかさんの「花園たえ入門」です。

CODE_THANKS_FESTIVAL_2017体験記

凄いギリギリだったんだろうなぁ…

そんな気持ちで、当日は向かっていました。

 

理由は簡単で、

予選A:404位

予選B:859位

予選C:326位 だったからです。

 

多分予選Cの上の方は、既に突破した人がたくさんいたからなんだろうなぁっと思います。

来年はもっと順位を伸ばしたいです。ハイ。

 

 

長々と書く気力もないので、解いた感想だけつらつらと書いておきます。

問題A:

頭が寝ていて、問題文を読んでもあまり理解できない問題発生。なお、入出力を見てmax取ればいいんだな~って感じで雑に通して終了。

 

問題B:

文字列操作は嫌いです。ただ、文字列の長さが50以下ならTLEは無いなぁってことで、冗長に回文の可能性を探っていってみたら勝手に通った。

 

問題D:

問題Cが分からなかったので飛ばした。

何となくではあるものの、

互いに素な整数a,bがあった場合に、

a*i (mod b)  (0≦i≦b-1)で、

0~b-1の全ての整数を表現出来るっていうやつがあったのを思い出して、後は雑にpythonライブラリにあるgcdにぶち込んでゴールにシュートして超エキサイティングした。

 

問題E:

「コイン、重さ、10回しか使えないはかり・・・閃いた!!!」

となったら絶望的な問題。

無事僕は5進数でいけるなぁってルートをたどったものの、コイン1枚当たり重さを8g引いたり諸々の計算をバグらせ、計4WAからのAC。

 

問題F:

bit演算は苦手なんだよおおおおおおおおおおおお

ということで放置

 

問題G:

再帰で全通り探索したら多分TLEだろうなぁ!!!って思いながらコードを書いた。

すると、TLEがたったの2つしかないではないか!!!

これは行けると思ってひたすら高速化を目指した。

結局駄目でした。計9TLEと1CEと1RE。

 

問題C:

冷静になったらpriority_queue(スペルあってる?)の問題だと分かった。終了20分前にギリギリ通せました。

 

 

結果A~Eの5完で1300点。パーカー貰えずorz

 

欲張って、来年はTHANKSではなく本選の方に行きたいです。

Haskellを始めた感想(インストール編)

この度、すごいHaskellの著者をフォローしていた結果興味を持ったので、初めてみました。

内容についてはまだ序盤なので、後々まとめて書いていきたいです。

ここではインストールの感想だけ載せます。

 

<普通>

ここでインストール

動く!  とても簡単ですね。

www.haskell.org

 

<今回>

①上記のサイトでインストール

 

②起動

f:id:tomato9071:20171030020234p:plain

多分、学校の授業で無理やりmingwぶち込まれたせいで、mingw32とmingw64が混ざってるのかな??消すか!(当方TOEIC500未満の英弱のため、質問が出来ない)

 

f:id:tomato9071:20171030020459p:plain

http://akrmys.com/public/mingw/mingw.html.ja

あっ…(cygwinを学校の授業でぶち込まれたり、VisualStudioでmigwが混ざってたりで、本当に消すべき範囲が分からない)

 

④消せない( ^ω^)・・・?

f:id:tomato9071:20171030020705j:plain

(google画像検索--野郎オブクラッシャー)

よし、別の方法を

 

⑤そういえばVisualStudioにあったりしないかな(当方VisualStudioを常用)

f:id:tomato9071:20171030021149p:plain

 

⑥これは…!

f:id:tomato9071:20171030021333j:plain

 (google画像検索--流れ変わったな)

コロンビア! 

 

⑦早速インストールする

.........

///////

........

VScodeにメモリ4GB使用され、タスクマネージャーがフリーズ。

また、環境構築の方法が慣れない方法のため理解が追い付かず断念

なお参照元

qiita.com

f:id:tomato9071:20171030021924j:plain

(google画像検索---涙 ネタ)

 

⑧そういえばUbuntu for windowsTwitterで拝見してインストールしていました。

 

⑨またこれも見かけてたなぁ…

f:id:tomato9071:20171030024831p:plain

⑩やってみた

f:id:tomato9071:20171030025016p:plain

・・・?なんじゃこれ

 

 

⑪色々ググってみた結果、こんなコマンド試した

(bashなどは知らないので、どのコマンドも初めて知った)

$sudo apt update

$sudo apt upgrade

$sudo apt-get update

 

qiita.com

qiita.com

 

⑫もう一回やってみた

f:id:tomato9071:20171030025617p:plain

f:id:tomato9071:20171030025759p:plain

f:id:tomato9071:20171030021333j:plain

 

結論:

コマンドプロンプトで出来ない理由は分からなかった(英強なら出来たかも)

ubuntuのアップデートコマンド初めて知った…

・もしwindowsでエラーが出たら、ubuntu for windows導入した後諸々アップデートしてから、公式サイトのubuntu用導入方法を実行しよう。

・深夜3時なのでちょっと眠い

 

今後:

土日で凄いH本を5章中盤まで読みましたが、まだ標準入出力ですらないので、もう少し読みたいです。やったらまた感想書きたい。

 

 

補足

ここの環境構築を行うと、プロジェクトとして起動は可能になりました。

ただ、単に練習のためにやるには少し大掛かりになりそうで辞めました(失礼)

もう少し本を読み進めたらこちらのやり方を使うかもです。

sites.google.com

Unityで汎用性高そうな関数(練習)

現在Unityでゲーム開発をしてますが、

どこでも使えそうな関数がいくつか見つかったり出来たりしたので載せます。

using System.Linq;
using UnityEngine;
using UnityEngine.UI;

/* 
 * 他の場所でも使えそうな汎用的関数をまとめてあります。
 * 
 */

namespace Assets.Script.Common
{
    public static class UsefulFuncs
    {

        /*
         * 画像パスからSpriteオブジェクトを生成
         * 引数 :画像パス
         * ※    :assets直下のResourcesフォルダからの相対パスにすること
         *    :これは、途中使用するResources.Loadによる作用です
         * 返り値:画像パスのSpriteオブジェクト
         */
        public static Sprite Path2Sprite(string path)
        {
            Texture2D texture = Resources.Load(path) as Texture2D;
            return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
        }


        /*
         * Spriteオブジェクトを、オブジェクトのimageに貼り付け
         * 引数 :Spriteオブジェクト, 貼り付け先のオブジェクトパス
         * ※  :言わずもがな、オブジェクトパスはHierarcyにおけるもの
         *    :GameObject.Findの引数に出来れば何でも良い
         * 返り値:無し
         */
         public static void SetSprite2Object(Sprite sprite,string objPath)
        {
            GameObject.Find(objPath).GetComponent<Image>().sprite = sprite;
        }


        /*
         * 画像パスの画像を、オブジェクトに貼り付け
         * 引数(1つ目) :画像パス、貼り付け先のオブジェクトパス
         * 引数(2つ目) :画像パス、貼り付け先のGameObject
         * 返り値:無し
         */
         public static void SetImage2Object(string imgPath,string objPath)
        {
            SetSprite2Object(Path2Sprite(imgPath), objPath);
        }
         public static void SetImage2Object(string imgPath,GameObject obj)
        {
            obj.GetComponent<Image>().sprite = Path2Sprite(imgPath);
        }


        /*
         * オブジェクトの複製(ジェネリックメソッド版)
         * 引数 :複製元
         * 返り値:複製物
         * サイト:ttp://l-s-d.sakura.ne.jp/2016/04/class_obj_copy/
         * 
         * 使い方:
         * var hogeA = new HogeParam();
         * HogeParam hogeB;
         * hogeB = UsefulFuncs.DeepCopy(hogeA); <=これ
         */
         public static T DeepCopy<T>(T target)
        {
            T result;
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b =
                new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            System.IO.MemoryStream mem = new System.IO.MemoryStream();
            try
            {
                b.Serialize(mem, target);
                mem.Position = 0;
                result = (T)b.Deserialize(mem);
            }
            finally
            {
                mem.Close();
            }
            return result;
        }


        /*
        * すべての子オブジェクトを返します
        * 引数 :self : GameObject 型のインスタンス
        *     includeInactive : 非アクティブなオブジェクトも取得する場合 true
        * 返り値:すべての子オブジェクトを管理する配列
        * サイト:ttp://baba-s.hatenablog.com/entry/2014/07/29/082441
        */
        public static GameObject[] GetChildren(
            this GameObject self,
            bool includeInactive = false)
        {
            return self.GetComponentsInChildren<Transform>(includeInactive)
                .Where(c => c != self.transform)
                .Select(c => c.gameObject)
                .ToArray();
        }
    }
}

約2週間のまとめ(7/28~~8/08)

テスト:

雑にまとめると

・確率統計概論

 何かくっそむずいんですが。Bくればいいです、はい。

論理回路

 まぁ余裕のよっちゃんな感じでした

 追記:テスト返却されたら92/100でした。8点問題が2点だったし、シカタナイネ。

 結構サボったのでA確定です、はい。

情報理論

 かなり読みを働かせたつもりが、完全デレましたね。

 授業聞いてなくても3~4割取れます。無駄に対策してたので素直にA+です。

・回路理論

 答えは全部あってました。

 途中式が結構雑なので、採点基準によってA~Fで彷徨います。

こんな感じ。

単位怪しいのは、回路理論とCBDくらいでした。フル単したいですね。

 

 

その後:

・A+plus

 受講した授業約13個は多分全部200~500字でレビューしました。

ドミニオンオンライン

 見つけたので始めました。AI相手になぶりなぶられの感じです。

・PUBG

 結局0killステルスでtop10食い込むギリギリが限界です。

 もっと最適化してください。現在平均FPS6~8でプレーしてます。

 なお、視点移動のラグは平均1.2秒(体感)です。kill何て無かった。

・OUTLAST実況

 沢山見ました。

 OUTLAST1--既100% OUTLAST_DLC--0%⇒100%(せのびさんにて)

 OUTLAST2--0%⇒70% (そてるさんにて)

・Unity

 OpenBookで4話⇒7話

7/28 中間報告2

今日は信号処理とARがありました。

 

・信号処理

中間が良かったので、ひたすら演習問題などを凝視していました。

手を全く動かさずに勉強しましたが、多分平均点は来ました。

ギリギリA+来るといいなぁ・・・

 

・AR

優勝です。最近英語が読めなかったので、

最終手段の文法分解戦術使いました(from 東進授業)。

何とか最後まで行きました。

日頃の行いがちょっと悪いので、Bかもです。

 

.

.

.

.

土日挟むので、PUBGやっちゃいます

7/27 テスト中間報告

インド人を右に

「なら日本人は左に」  とまとです。

 

テストの中間報告です。

・プロA

リファレンス無しに、コードを丸ごと書かせる… 無理ですね!

大問1,2はほぼ満点だと思うので(慢心)、A+くれないかな~~

 

微分方程式

ん~~、原因は知らんけど、もしかして先生キレてる?

先生の口調や準備が若干変だった印象。

テスト内容としては、

  ・授業を聴いていれば簡単に     解ける問題1問

  ・授業を聴いていると多分…?    解ける問題1問

  ・授業聞いても解けねーよバーカバーカという問題1問

の構成。

簡単に解ける問題以外は、完答率3割切るのでは・・・? Bくれ!

 

・アルゴリ

圧倒的対策の成果が出ました!優勝!

事前予想は出席点関連でAでしたが、

皆テストの点数低そうだからA+ワンチャン!

テスト内容としては、

  ・あれ~?ふざけてるの?

以上。

この授業の目標はもしかして、

アルゴリズムを用いたプログラミング能力の向上」

ではなくて

アルゴリズムを用いるんじゃねぇ!  

 てめぇがアルゴリズムになるんだよ!(迫真)」

な気がしました(割と真面目に)。

 

・80分の試験に手動逐次探索系を5回以上やらせる

・コードが出てこない(Twitterで指摘されて気づいた)

のはちょっと理解できないですね…

典型的な「日本らしい」教育なんじゃないですかねぇ(呆れ)