amazon の仮想デスクトップでPCゲームを動かそうとした

自分は Mac Book (借り物) 使いなので、win向けのPCゲームをプレイすることが出来ませんでした。
デュアルブートVirtualBox を使ってもよかったのですが、借り物のPCにゲームをインストールするのには気が引けました。

そこで出会ったのが amazonクラウド上の仮想デスクトップで、AWS のサービスである「Amazon WorkSpaces」です。

今回はこの「Amazon WorkSpaces」でwin向けのPCゲームを動作させようとした記録を残します。

目次

  • AWS とは
  • Amazon WorkSpaces とは
  • AWS の学生サービスを受けて $150 を貰う
  • ルートアカウントの MFA を有効化
  • WorkSpaces をセットアップ
  • ブラウザからアクセス出来るようにする
  • 仮想デスクトップを起動させ、ゲーム体験版をインストール

AWS とは

ベンチャー企業が大好きなナウくてイケてるサーバやインフラ系の web サービスです。
詳しくは下記のリンクを参照して下さい、理解出来たらアカウントを作りましょう。(クレジットカード必要)

AWS について
0から始めるAWS入門:概要
「AWS is 何」を3行でまとめてみるよ

Amazon WorkSpaces とは

環境構築を含め、下記のエントリが参考になると思います。

公式サイト
Amazon WorkSpacesを使った感想
Amazon WorkSpacesでWindows仮想デスクトップ環境を作成する (Windows 7 + Office 2013)

簡単に説明すると、amazon が用意してくれた windows を自由に使えるサービスです。

ただし、OS は windows server 2008 r2 datacenter です。(謎)
windows7 や windows10 のライセンスを持っていれば、そちらを使うことも可能なようですが。

AWSの学生サービスを受けて $150 を貰う

Amazon WorkSpaces は学生サービス対象外です。(追記2参照)
Amazon WorkSpaces はそれなりにお金がかかります、詳細は下記リンクを見て下さい。
料金表

ちょっと試してみるだけで高額なお金を請求されるのは嫌なので、学生の身分を利用してお金を貰おうと思います。
GitHub アカウントを登録して、.ac.jp 等の大学メールアドレスを登録するだけで amazon から $150 も貰えます。

詳しくは、下記のエントリを参考にすると良いでしょう。
AWS Educate を使ってみる

ルートアカウントの MFA を有効化

AWS を利用する上でのセキュリティ設定で、こいつを設定しないと WorkSpaces にはアクセス出来なかったです。
AWS のコンソールのホームに、「Identity and Access Management」という項目があるのでそこから設定しましょう。

WorkSpaces をセットアップ

資金調達も出来たので、いよいよ WorkSpaces をセットアップします。
AWS のコンソールホームに、「WorkSpaces」という項目があるのでそこからセットアップします。
下記のサイト通りにやれば恐らく上手く行くでしょう、自分は MFA の有効化を忘れてたので一日掛かりましたが。

Amazon WorkSpacesを使ってみる

ブラウザからアクセス出来るようにする

2016年11月18日 より、WorkSpaces にブラウザからアクセス出来るようになりました。
せっかくなのでその恩恵を受けましょう、下記のリンクにある設定をして下さい。

Amazon WorkSpacesがChrome,Firefoxのブラウザ利用に対応しました

仮想デスクトップを起動させ、ゲーム体験版をインストール

遂に windows が立ち上がったので、本来の目的であったwin向けのPCゲームのインストールを行います。
ここで体験版で検証を行う理由は、インストールディスクを WorkSpaces が認識することが出来ない為です。
インストールディスクを吸い出して WorkSpaces に転送すれば製品版もプレイ出来るのではないかと思いますが、 犯罪かもしれないのでちゃんと調べてた上で試してみようと思います。

今回インストールを試みたのは、下記2つのタイトルです。(適当に頭に思い浮かんだ奴です)

  • サノバウィッチ
  • 運命線上のφ

日本語アプリケーションを実行するには OS 設定を弄る必要があるみたいです。(追記参照)
早速ダウンロードしてみましたが解凍しても文字化けしてまうので、文字化けしない解凍ツールをダウンロードしました。 unar というやつです。

文字化けはしなくなりましたが、サノバウィッチは実行しようと思っても「文法エラーです」という情報量0のエラーが吐かれてしまいます。
また、運命線上のφについてはクリックしてもインストーラが起動しませんでした。
OS が windows server とかいう意味不明な奴だからでしょうか、非常に残念です。

まとめ

グラボ積んでる構成にしたら動きました。(追記3参照)
Amazon WebSpaces でwin向けのPCゲームは動かせませんでした、試したゲームが少ないのでもしかしたら動くゲームもあるかもしれないですが、このまま試し続けるなら OS を win7 等にして再チャレンジしようかなと思います。

自分のように MFA 設定を忘れて WorkSpaces にアクセス出来ないと嘆いている人が救われればと思います。

追記 (2016/11/23)

海外の windows で日本語アプリケーションを実行するには OS の設定を変更する必要があるみたいです。
下記リンクを参考に、日本語アプリケーションを実行出来るようにしました。

日本製じゃない Windows 7 で日本語のアプリケーションを使いたい

これでやっとゲームが動かせる!!っと思ったのですが、下記のグラフィック関連と思われるエラーが出てしまい動作しませんでした。

  • DirectXの初期化に失敗
  • ディスプレイアダプタの取得に失敗
  • メモリアクセス違反

一応 DirectX を最新版にしてみたりしたのですが、やはり結果は変わらず...。
次はグラボのデバイスドライバを最新にしてみようと思います。

追記2 (2016/12/2)

AWS の学生サービスを受けて $150 を貰う」についてですが、残念ながら Amazon WorkSpaces は対象外だったようです。

$150 の対象は、下記のサービスに限定されます。

AWS Config
AWS Data Pipeline
AWS Data Transfer
AWS Elastic Beanstalk
AWS IoT
AWS Key Management Service
AWS Lambda
AWS OpsWorks
AWS Storage Gateway
AWS Support (Basic)
Amazon AppStream
Amazon CloudFront
Amazon CloudSearch
Amazon DynamoDB
Amazon ElastiCache
Amazon Elastic Compute Cloud
Amazon Elastic File System
Amazon Elastic MapReduce
Amazon Elastic Transcoder
Amazon Glacier
Amazon Kinesis
Amazon Machine Learning
Amazon RDS Service
Amazon Redshift
Amazon Route 53
Amazon Simple EDI
Amazon Simple Email Service
Amazon Simple Notification Service
Amazon Simple Queue Service
Amazon Simple Storage Service
Amazon SimpleDB
Amazon Virtual Private Cloud

追記3 (2016/12/11)

Amazon Workspaces の Bundle の選択時に、グラフィックボートを積んだ「グラフィックス」を選択したところ、ゲームを動作させることが出来ました。
しかしこの Bundle は1時間で $1.75 (大体180円?)かかり、8時間動作させるだけで 1,500円 近く掛かってしまうのでPCゲームをやるのには向かないのではないかと思いました。

記事が修正だらけでかなり見にくくなってしまったので、近いうちに綺麗にまとめた記事を公開します。

FuelPHP で DBUnit 使ってみる

最近、自動テストの重要性に気が付き PHPUnit を導入しましたが、DB のデータを使ったテストが Rails のように上手く出来ないことに軽く絶望していました。
しかし、DBUnit なるイケてる拡張があるみたいなので試してみました。

ざっくり DBUnit とは

テストの度にテスト用DBに初期値入れたり、DBを初期化するのが面倒...。

でも DBUnit さえいれば!!!!テストの度に自動でDBを初期化してくれて、初期値入れるのも楽!!!!!!素敵!!!!!!!!!!

やったこと

  • DBUnit 拡張の導入
  • とりあえず動かす

DBUnit 拡張の導入

下記のサイトを丸パクりしましたので、この記事の内容も下記リンクの流れに沿っています。 DBUnit拡張を使ったFuelPHPのテストを考える

とりあえず動かす

まずは下記コマンドで、DB構築。
* FUEL_ENV=test oil r migrate
* FUEL_ENV=test oil r migrate --packages=auth

そして、APPPATH/config/test/db.php でテスト用のデータベースへアクセスする設定をする。

テスト環境のDB設定が終わったので、とりあえず初期データも投入せず DbTestCase を継承した状態でテストが動くか確認しました。
その結果、下記のエラーが出ました。

Error - Argument 1 passed to PHPUnit_Extensions_Database_AbstractTester::setDataSet() must be an instance of PHPUnit_Extensions_Database_DataSet_IDataSet, null given, called in /Users/test_user/fuel_test/fuel/vendor/phpunit/dbunit/src/Extensions/Database/TestCaseTrait.php on line 178 in DOCROOT/fuel/vendor/phpunit/dbunit/src/Extensions/Database/AbstractTester.php on line 88

なぜコピペしたのに動かないのでしょうか?

とりあえずエラー文的には setDataSet() は絶対定義しろ的なことが書いてあると思うので、からの setDataSet() を定義してみましたが、結果は変わらず。
よく見直してみると、 testcase.phpnamespace Fuel\Core; を入れるのを忘れていたのでちゃんと入れてテストを実行したところ、今度は次のようなエラーが出ました。

Fatal Error - Class 'DbTestCase' not found in APPPATH/tests/controller/test.php on line 7

困りました、not found と言われてしまってはどうしようも無いので、とりあえずさっきの状態に戻します。

ふと、 setDataSet() が問題なのでは無く、getDataSet() が空なのが問題なのでは無いかと思ったので、先程参考にしたサイトに書いてあったものをテーブル名だけ変えてコピペしてみたところ、なんと正常に動作しました。
大して難しくないところで余計な時間が取られてしまいました...。

しかし、namespace Fuel\Core; を入れてエラーが出てしまう事象については PHP への理解が足りないこともあって謎なので、「coreクラスの拡張」か何かでググってみようと思います。

まとめ

とりあえず動いたので、後は適当にググりながら Rails のようにイケイケなテストが書けると思います。
何か進展があればまた記事書きます。

FuelPHP の軽い感想

 私は今年の4月ごろからFuelPHPを触っていて、簡単なサイトを作ったりしています。 自分がFuelPHPを使う理由は、実行速度が早いからや、生PHPよりも管理しやすいコードが書けるからです (他のフレームワークはあまり触ったこと無いです)。 他に書いた経験のあるフレームワークRuby on Railsで、バイト先で使っています。

 今回は普段Railsを使ってる自分からみたFuelPHPの軽い感想を書いてみようと思います。

環境構築が楽

 FuelPHPはプロジェクトの雛形のzipファイルを公式サイトからダウンロードして解凍するだけで使えるので、環境構築がかなり楽です。 PHPが動作するサーバーではすぐに使うことができるので、お手軽感がいいですね。

Railsエンジニアがとっつきやすい

 全体的にRails感があり、Railsを触ったことがある人は特に戸惑うことなく弄れるのではないかと思います。 これはFuelPHPRailsをリスペクトしていることが強く影響しているのではないかと思います。 具体的には、コマンドの使い方やMVCを採用している点です。

 もちろんFuelPHPにも自動化テストがあるので、テストを書かないと死んでしまう人も安心して使えます。

日本語リファレンスが充実している

 FuelPHPは日本語リファレンスが充実しており、わからないことはリファレンスをみれば大体解決していました。 また、学習もしやすいよう体系的に学べる構成となっているので、フレームワークをあまり触れたことのない人にもオススメ出来ます。

 また、原因不明のエラー等も検索してみるとほとんどが解消されるのもいいところです。

まとめ

 FuelPHPのメリットは学習コストが低いことだと再認識しました。 小規模なプロジェクトでRailsに慣れていないのならば、FuelPHPを選択しても良いのではないかと思います。 個人の偏見入りまくりの雑な記事でしたが、最後まで読んでくださりありがとうございます。

スマホアプリのアイデアを出す

 世の中には普通に思いつきそうなアイデアや、誰も思いつかないようなアイデアを実現したスマホアプリがたくさんあります。 そこで、自分も何かアイデアを形にしたいと思ったので、実際にアプリを開発することにしました。

 しかし、普段からあまり自分のアイデアを考えることがなかったので、何を作れば良いのか思いつきませんでした。 ですので、まずは世の中のアプリにはどういうジャンルがあってどんなことが出来るのかというのを自分なりにまとめてみました。

目次

  • アプリのジャンル
  • どんなアプリを作ればいいか
  • アプリの操作対象
  • 世の中のアプリの例

アプリのジャンル

  • 健康
  • 音楽
  • 料理 グルメ
  • 植物
  • 写真 動画 (加工、管理)
  • 教育 学習
  • 育児
  • 生活
  • 地図
  • 情報収集 (ニュース、天気、交通状況等)
  • 情報整理 (見る予定のアニメ、待ち合わせの時間、持ってる本)
  • エンタメ
  • ファッション
  • ビジネス
  • 仕事効率化 (電卓、メモ帳、TODOリスト、リマインダー)
  • 会計 (お小遣い帳、家計簿)
  • コミュニケーション (SNS)
  • デジタルアート
  • 災害時用
  • クリエイティブ (作曲、小説、プログラミング)
  • ゲーム

どんなアプリを作ればいいか

  • 現実の物(行為)をアプリに置き換え (タイマー、塗り絵、じゃんけん、読書)
  • 流行を取り入れたもの (ポケモンがいる場所がわかるマップ)
  • 面倒なものを楽にしてくれる (自動化アプリ)
  • 悩みを解消してくれる (物を無くす、電車を乗り過ごす)
  • 知りたい情報が得られる (天気、電車の時刻、ファッション、マナー、SNS通知)
  • 時間が潰せる物 (単純なゲーム)
  • 決められた目標を達成する (スコアやレベル)
  • 欲求が満たせる (破壊欲求、自己顕示欲、女の子に会いたい欲求)

アプリの操作対象

 ゲームのようにスマホ内だけで完結するものもあれば、センサ等で取得した現実の情報とスマホアプリが連動しているものも多くあります。 アプリの操作対象というのは、現実とスマホのどちらからインプットし、どちらにアウトプットするのかということです。

世の中のアプリの例

 自分が便利だなーと思ったアプリです、3種類あげていますが特に関連性はありません。

まとめ

 世の中のアプリはジャンルや操作対象が違うだけで、大半は似たようなものばかりだと思います。 ですので、何を作るか迷ったらジャンルや操作対象を何にするか考えてみると良いかもしれません。

 当たり前のことを書き連ねましたが、何かの参考になればと思います。

学生プログラマはプログラミングバイトをしよう

 今回の記事に出てくる「学生プログラマ」には高校生は含まれておりません。高校生は労働基準法で勤務時間が制限されてしまう為、プログラミングバイトが難しいと思われるからです。

 しかし、100%不可能であるとは断言出来ないので、メンタルの強い方は挑戦してみてもいいかもしれません。(責任は取れません)

 

独学には限界がある

 プログラミングをしている学生さんは、独学や学校の授業でプログラミングを学んだことでしょう。自分で処理を考えて思った通りに動作した時は、何よりも気分が良い物だと思います。 

 しかし学生でプログラミングの勉強をしていると、下記のことに悩んだりしたことがあると思います。

  • 実際のシステムがどうコーディングされているのか
  • チームで開発をするときはどのように進めればよいのか
  • 自分のコードの書き方は本当に正しいのか  
  • 今の技術レベルは、業界的に見たらどれくらいなのか 

 そんな時は実際にIT企業にインターンやアルバイトに行き、現場のシステムやプロジェクトに触れてみることが良いと思います。

 自分の中の勝手なイメージですが、学生プログラマの方々は勉強会やコンテスト等には参加していても、プログラミングバイトをしている方は少なく思います。

 勉強会へ行くことは確かに大切ですが、実際に利益を生んでいるシステムの開発に関わることはより価値のある経験だと考えています。

 

プログラミングバイトはどうやって探す?

 プログラミングのバイトは「バイト探しはan」「マイナビバイト」等の普通のアルバイト求人サイトで応募しても、学生である以上ほとんど受かりません。

 自分は高校三年の冬に三社のIT企業に応募しましたが、悲しいことに三社とも面接さえ受けさせてもらえませんでした。常識的に考えれば、高校生が業務で役に立つとは思えないので正しい判断であると言えますが。

 完全に心が折れていましたが、Twitter で上記の経験を嘆いていると優しいフォロワーさんが素晴らしいサイトを教えてくれました。

 そのサイトは Wantedly というもので、学生プログラマのアルバイトやインターンを募集している企業が多く集まっているそうです。

www.wantedly.com

 早速このサイトである企業に応募してみました。すると、その企業の方は自分と会って話がしたいと言って下さったのです。学生というだけで話させて貰えない経験を3回もしていたので、すごく嬉しかったです。

 面接は新宿のカフェで行われ、IT関係で働いているプロの方といろいろなお話をしました。結果的に不採用となってしまいましたが、プロの方とカフェでお話するのはとても貴重な経験で楽しかったです。

 その後立て続けに7社の企業に応募し、2社から内定を頂くことが出来ました。このような経緯を経て、自分は現在web系の企業でアルバイトとして働いています。

 

学校に行きながらいつ働いているのか

 自分は平日週5日、放課後の 18:00 - 23:00 に働いています。また、自宅での作業も許可されているので、働くのが苦だと感じたことは一度もありません。

 全ての企業がこうであるとは言えませんが、Wantedly に登録している企業のほとんどは相談してみれば遅い時間帯であっても働かせてもらうことが出来ると思います。

 

まとめ

 ホリエモンビル・ゲイツも、学生時代はプログラミングバイトをしていたそうです。プログラミングバイトは技術に関してだけではなく、仕事に対する姿勢やエンジニアとしての物の考え方を身につけることもできます。また、周りの人が大人ばかりなので、人間的にも大きく成長出来ます。

 今の自分よりも更に上を目指したいと思っている学生プログラマの皆さんは、是非一度プログラミングバイトを経験してみると良いでしょう。

JQuery との別れ

 こんにちは、専門学校に通いながらwebエンジニアのバイトをしている者です。
普段考えていることや、新しく知ったこと等を適当にブログに書いています。
今回は JQuery についてです。

 自分は趣味でwebページを作ることがあり、ページ内のロジックに JavaScript を使用しています。(当たり前ですが)

 その際に自分は JQuery を使用していたのですが、 最近 JQuery はあまり使うべきではないという話をよく耳にしており、何故ダメなのか疑問に思っていました。 そこで、JQuery のデメリットや、JQuery を使わない場合等をネットで調べたり、会社の先輩に聞いてみたりしました。

 また、今回の記事は私見が多く含まれているので、あくまで考え方の一つとして捉えていただけたらと思います。

JQuery はスコープがでかい

 JQuery を使うとDOM全体を操作出来てしまう為、JavaScript の長いコードを修正する際にコード全体を読まなければならないそうです。 また、対象の要素の親要素を操作出来る .parent() 等のメソッドを使用してしまうと、コードの修正がとても大変になってしまうみたいです。

 これらの原因は、JQuery のスコープが大きいことにあります。 ですので、本来webページのロジックを記述する時はページ内のコンポーネントごとに行うことが理想です。 もちろん JQuery でもコンポーネントごとにコードを書くことも出来ますが、 全体を操作出来るメソッドが存在する以上、見づらいコードが生まれてしまう可能性は潰せないようです。

じゃあどうすればいいのか

 生の JavaScript か、フレームワークを使うと良いとのことでした。
生の JavaScript は面倒なことが多いですが、可読性は高いようです。

 また、フレームワークを使用すれば、ページ内のパーツをコンポーネントに分けて開発できるので、 スコープを縮めることが出来ます。

 JavaScriptフレームワークは一度も使ったことが無かったので、現在開発しているwebアプリケーションに組み込んでみようと思っています。

まとめ

 JQuery さよなら。

 

ある男の為に自作楽曲配布サイトを作る

 Googleアドセンスの申請を通したくて久しぶりに記事を書きました。

 自分は現在、IT系の専門学校に通いながらIT系のアルバイトをしています。 もちろん趣味でもプログラミングをしており、最近はアルバイトの影響でweb系の勉強を多くしています。 アルバイトではバックエンドの仕事が中心ですが、趣味ではバックもフロントもやってます。 しかし、勉強するだけでは本質的な技術は身につかないと思ったので、実際にwebサービスを作ることにしました。

 webサービスを趣味で作った経験はまるで無いので、とりあえず簡単なサービスから作りたいなと思っていました。 そんな時、高校の頃の同級生が学校にも行かずにひたすら曲を自作しているというので、まずはそいつの為のサイトを作ろうと思いました。

 サイトの機能は、楽曲再生・ダウンロード・コメント の3つが中心です。 たったこれだけなのかと思うかもしれないですが、 データベースを使ったり、動的にサイトを書き換えたりという処理をしたのは人生で初めてだったので苦労しました。

 バックエンドは FuelPHP というフレームワークを使用し、フロントでは当然ながら JavaScript を使用しています。 バックエンドに Rails ではなく PHP を選んだ理由は、環境構築が圧倒的に楽だったからです。 Rails が強力なフレームワークであることは理解していますが、趣味で使うにはまだ知識が足りないなぁという印象でした。

 公開するためのレンタルサーバは、Xサーバ の一番安いプランを利用しています。 一番安いとは言っても、個人が趣味で作った小さなwebサービスを公開する分には十分使えます。 料金の支払いは高校の同級生と割り勘です。

 このサイトは8割近く完成しているので、今月中には公開出来るだろうと思います。 公開しましたら、是非曲を聴いてくださると嬉しいです。

 ある男の Twitter@k_t_mejohn

 ある男が作った曲 → 作った曲