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

ゲーム×研究

ゲームに学術的な部分を組み込みたい(人生の目標)

開発の時間を管理しよう!ポモドーロテクニック

こんにちは
最近開発でポモドーロテクニックを使っています。

ポモドーロを使うことでタスクの時間を管理できます。

具体的に何ができるのかを話したいと思います。

ポモドーロテクニックって?

ポモドーロテクニックでは25分の作業時間と5分の休憩時間を繰り返し行います。

作業者はこの規則を守ることで長時間の業務で失われる集中力を落とさずに仕事を続けることができます。

近年この手法が広まってきています。大きなメリットは集中力を欠かすことなく業務ができることです。

しかし、それ以外にもタスクの時間管理の面でも大きく貢献できると思います。

タスクの時間管理の目的と活用法

タスクの時間を管理すると何かメリットが有るのでしょうか?

僕が考える一番のメリットは新規タスクの時間を正確に見積もることができることだと思います。

時間の見積もりに必要なものはいままでの経験です。

有るタスクに1時間今までかかっていた場合、同じようなタスクをやるのに1時間必要だとわかります。

逆に新しいことにチャレンジした時に3時間かかってしまった場合、また新しいことにチャレンジするには3時間かかります。

このように以前のタスクの作業時間を定量的に測定できたら新規タスクの見積もりに使うことができます。

しかし、時間単位で管理すると1分から1時間とかなりの粒度の違いが出てしまいます。

これの難しいところは、10分のタスクなのか20分のタスクなのかの判断がなかなかつかないということです。

僕が推奨するのはポモドーロの25分の作業時間を1ポイントとして作業時間を記録することです。

こうすることで10分も20分も1ポイントとできるので無駄に考える必要がなくわかりやすいタスク時間の見積もりができます。

このようにポモドーロを使ってタスクの時間を管理するということは、タスクを見積もるに当たって大きなメリットがあります。

まだまだ楽しいポモドーロテクニック

他にもポモドーロには色々なメリットがあります。

時間を測定していること

ポモドーロでは時間を作業時間を25分としています。時間はつねに見えるところにあり、タスク作業中も見ることができます。

時間が見えているということは、自分の作業にかける時間がリアルタイムで感じるできるということです。

そのため、作業に時間がかかっていたら焦りが生まれてきます。

この焦りがなくてはいつまでも一つの作業でグダグダ悩むことになり、作業の大幅な遅れにつながってしまいます。

なので、時間をはかって、この25分以内に終わらせようと心がでけることは、作業をする上でほどよい制約になり、作業効率を大きく上げてくれます。

休み時間に作業を省みる事ができる

僕の経験では、作業に詰まったり、有ることで悩んだりして想定以上の時間を使ってしまうことがよくあります。

長時間悩んでも結局答えが出なかったり、同じことで悩んでいたり、そもそも別のやり方があるということもあります。そのため悩んで熱中することでいいことはあまりありませんし、とても視野が狭くなり、そのようなことに気づかないことが多々あります。

ポモドーロテクニックでは25分の作業の間に5分の休憩時間があります。この休憩時間は自分を省みる時間になります。

今の作業が目的に対して適切なのかどうか?今の作業が煮詰まっているなら他にやり方があるのではないか?作業から離れることいろいろなことを考えることができます。

これは、熱中を抜け出して自分のことを客観的に見れてる証拠です。

これができれば長時間悩むこともなく今の状況からよいよい方向へと進んでいけるのではないでしょうか?

まとめ

長文になってしましましたが、ポモドーロテクニックのメリットを上げると以下のようになります。

  • 集中力が持続する
  • タスクの時間の管理ができる
  • 時間を程よい制約とすることができる
  • 自分の作業を省みることができる

ポモドーロテクニックは色々なサイトで解説されていて
また、実現のために色々なソフトウェアが存在します。

今後はこのようなソフトウェアの解説をしていけたらなと思います。

とりあえずはこれで失礼します。

開発で大切なこと ~swiftで体重管理アプリをつくったよ!~

こんには、みなさんGWはどうすごしましたか?
ぼくは高校時代の友達とswiftでアプリをつくっていました。

はじめてのswiftで二日間でつくったのですが、効率的に開発ができたせいか結構余裕をもってつくることができました。

今日は作ったアプリの説明と、開発の仕方で良かったことを紹介したいと思います。

何を作ったの?

下の画像のような体重管理アプリをつくりました。

f:id:tkymx83:20170508223959p:plain:w200 f:id:tkymx83:20170508224000p:plain:w200


機能としては、日にち単位で体重を入力して一覧で表示するだけです。

ではこのアプリをどのように作ったのかを説明していきたいと思います。

作業日程

一日目

  • 10:00 ~ 11:00 機能の洗い出し、画面レイアウトの作成
  • 12:00 ~ 13:00 実装計画を立てる
  • 13:00 ~ 13:30 昼ごはん
  • 13:30 ~ 14:30 数値打ち込み部分の作成
  • 14:30 ~ 15:00 日付の表示と移動をできるようにする
  • 15:00 ~ 16:00 体重データの保存
  • 16:00 ~ 17:00 体重一覧表示作成
  • 17:00 ~ 18:00 体重入力と一覧表示の遷移

二日目

  • 11:00 ~ 12:00 AutoLayoutの設定
  • 17:00 ~ 19:00 フリックで画面遷移

途中予定があったのですが、このような形で勧めていきました。一日目に基礎的な部分を作成して二日目に追加機能やレイアウトの調整などを行いました。

やってよかったこと

今回の開発でやってよかったことをまず挙げたいと思います。

  1. 機能の洗い出しと画面レイアウトの作成を先に行った
  2. タスクを一時間でできそうなものに絞った
  3. タスクにかけた時間を測定していた
  4. 適度に休みがあったこと
  5. 誰かがいたこと

それではこれらについて説明していきたいと思います。

1.機能の洗い出しと画面レイアウトの作成を先に行った

 2日でアプリを作ろうと考えたとき、とりあえず作り始めようと考えると思います。その場合、ある機能が完成したら次の機能を考えるというようにいきあたりばったりになります。このようにその都度整合性を取ろうとすると最終的にめんどくさくなり、モチベーションが大きく下がってしまうと思います。

 そのため、プログラミングに集中できないで中途半端で飽きてしまいます。原因は目標がはっきりしていないことです。最終的なゴールが想像できないと不安が生まれるどこまで作るればいいかがあいまいになり、ある程度作って飽きてしまいます。

 なので目標を作る必要がある。今回は画面レイアウトを作ることで具体的な機能とプログラムの内容が想像できました。理由としては視覚的に必要な要素がわかり、最終的な見た目が想像できたからだと思います。そして、ここまで作ろうと言う目標が生まれた。

2.はじめにタスク一覧を作成。タスクを一時間でできそうなものに絞った

 今回のタスクは以下のようになっています。
これは実装計画を立てる段階で作成しました。

  • 体重を入力する部分を作成
  • 日付の表示と日付の遷移を作成
  • 体重を日付ごとに保存する
  • 体重一覧表示の作成
  • 画面遷移部分の作成
  • フリックで画面遷移を行う

タスク分解の基準は機能ごとに作っていくことです。

 もしタスクを作らなかったり、大きなタスク(入力画面をつくる)で作ってしまうと
以下のようなデメリットが生じます。

1. 長い時間同じことをしている気になってしまう

 長時間同じ作業をやっているといつ終わればいいのかわからなくなり、結果として一つの作業をだらだらやってしまいます。一時間と決めると、それまでに完成させようというモチベーションがわきます。

2. 細かいタスクを考えながら実装する必要がある

 タスクが決まっていなければ、あるタスクが完成した段階で、次のタスクを考えることになります。その時作りたいことは全体としては必要がない機能かもしれません。必要な機能というのは二日間という時間を考えることで初めて実装スべきか判断できるものなので、不必要なタスクを実行してしまう恐れがあります。また、どこまで実装して完成かを把握することがないのでだらだらと作り続けてしますことになる可能性があります。

このように初めにタスクを見積もることは時間内で必要な機能を集中してつくるにかなり役立ちます。

3.タスクにかけた時間を測定していた

これが今回の開発で一番良い点だったと思います。
時間はタスクごとにストップウォッチではかっていました。

 2.でも話しましたがタスクは1時間でできるものとしていました。なので、実際に一時間で達成できたかを図る必要があります。最終的にはオーバーしたものや時間内でできたものがありましたが、トータルとしてみると平均一時間くらいだったお思います。

 また、時間を図ることで残り時間を意識するようになります。人はある程度の制約がないと頑張ることができません。時間が見えると言うのはモチベーションの上でかなりの制約になります。

この制約は、実装するときの心構えにも影響しました。ある機能が完成したときにちょっと休憩しようかなと思ってしまったり、調べ物が脱線してしまう事があると思います。そんなときに時間を見ることで、”やらないと”という気持ちにさせてもらえます。

4.適度に休みがあったこと

1時間半おきごとに休憩を取っていました。
休憩では立って歩いたり、ストレッチをしたり周りの話をきいたりしていました。

そのあと椅子に座ると集中できている自分に気づきました。
ずっと座っていると体の血も偏りますし、肩もこります。

体が痛くなってからでは遅く、人の集中力もそんなに続きません。
プログラムをしている時は、もっとやりたい、早く完成させたいと思うものです。
ですが、あせってケアレスミスで時間を潰すのはもったいないことです。
さらに、集中力が切れてせっかくの調べ物の効率を悪くするのも行けないです。

休憩は長くなくても、ちょっと立って背伸びするだけでも、かなり集中力が違います。
集中力が切れそうと少しでもおもったら、切れる前に立ち上がることを推奨します。

5.誰かがいた事

 僕は一人で何かをつくることができません。いつも誰かのために作っています。普通物事を行うときは誰かに喜んでもらう姿を想像します。

しかし、そんな長期的な想像でははじめは良くても次第に集中力もきれだれてしまいます。

 今回のアプリ作成は友達と一緒におこないました。機能が完成するたびに友だちに見せてモチベーションを上げたり、集中力が切れたときに友達の存在を意識することで頑張ろうとなりました。

仕事場には自分以外の誰かがいます。しかし、個人開発は自分しかいません。そんな中で一緒にやってくれる人はとても貴重だと思います。

みなさんも共同開発とまではいかなくても、誰か一緒にプログラムをしてくれる友達がいたらアプリ開発はかなり捗ると思います。

まとめ

今回実践したことは普段の仕事や勉強などでも役に立つと思います。最後に重要なことをまとめたいと思います。

  1. 目標設定をしっかりする(機能の洗い出しと画面レイアウト)
  2. タスクは実行できる一定の細かい範囲で作る
  3. 作業時間を測定する
  4. 一時間に一回は立ち上がってストレッチをする
  5. 誰かと作る

今回、いちばん重要なことは誰かと作ることとだと思います。それが僕が一番モチベーションを感じる方法だと思いました。一緒に開発してくれた友達に感謝します。

次の記事ではアプリ開発でつまずいた技術的なところをまとめたいと思います。

CentOSへのMySQL導入とperlからの実行

こんにちは続けてMySQLを導入してperlから実行できるようにしたいと思います。

データベースはユーザーデータの管理や、商品の管理な様々な用途に使えます。

はじめに

今回はrpmMySQLパッケージをインストールして、まずはコマンドから実行しDatabaseとTableを作成したいと思います。その後、PerlからDBIを通じてデータベースをいじってみたいと思います。

  • MySQLのインストール
  • (tips)InnoDBに関するエラー対策
  • データベースとテーブルの作成(コマンド)
  • データの閲覧(perl)
  • (tips)DBパスワードに関する注意

MySQLのインストール

以下のサイトを参考にしました。
qiita.com

まずはじめに、既存にMySQLがインストールされているかを確認します。

yum list installed | grep mysql

入っていれば消してください。

yum erase mysql-libs

次にMySQLrpmパッケージをインストールします。

wget http://downloads.mysql.com/archives/get/file/MySQL-client-5.6.20-1.linux_glibc2.5.x86_64.rpm
wget http://downloads.mysql.com/archives/get/file/MySQL-server-5.6.20-1.linux_glibc2.5.x86_64.rpm
wget http://downloads.mysql.com/archives/get/file/MySQL-shared-compat-5.6.20-1.linux_glibc2.5.x86_64.rpm
wget http://downloads.mysql.com/archives/get/file/MySQL-devel-5.6.20-1.linux_glibc2.5.x86_64.rpm
yum install MySQL-client-5.6.20-1.linux_glibc2.5.x86_64.rpm
yum install MySQL-server-5.6.20-1.linux_glibc2.5.x86_64.rpm
yum install MySQL-shared-compat-5.6.20-1.linux_glibc2.5.x86_64.rpm
yum install MySQL-devel-5.6.20-1.linux_glibc2.5.x86_64.rpm

インストールが確認できたら起動します。

service mysql start

次に初期化を行うのですが、パスワードが必要になります。パスワードは以下で確認してください。

view /root/.mysql_secret

それでは、初期化を行います。

mysql_secure_installation

実行すると初めに現在のパスワードを聞いてきます。次に新しいパスワードを設定するか、などいくらか質問が来るので答えてください。

これでインストールと初期化が完成です。

MySQLのログインは以下のコマンドで行います。

mysql -u root -p

実行するとSQLを打てるモードになります。抜ける時は

\q

で抜けてください。

(tips)InnoDBに関するエラー対策

もしかすると、初期化の際に以下のようなエラーが出てしまうかもしれません。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

これは何らかの原因でmysql start した時にsockが生成されなかったためです。
僕の場合は/var/lib/mysql/user.errに以下のようなErrorが出ていました。

[ERROR] InnoDB: Unable to lock ./ibdata1, error: 11

理由はmysqlがもう裏で起動していたためです。プロセスをキルして、再起動することで解決しました。
以下に参考にしたURLを貼っておきます。

MySQLが起動できない | 猫型iPS細胞研究所

データベースとテーブルの作成(コマンド)

それでは用意ができたところで、DBとtableをコマンドで作成します。
参考にしたサイトは以下のサイトです。

Perl/DBIを使ってMySQLでSELECT文を実行する - 調べる.DB

MySQLでログインしたあと、以下のコマンドを入力します。

mysql> create database db;
mysql> use db;
mysql> create table t1 (a int, b varchar(10));
mysql> insert into t1 values(1,'aaaa'),(2,'bbbb'),(3,'cccc');
mysql> select * from t1;
mysql> \q

実行結果は以下のようになります。

+------+------+
| a    | b    |
+------+------+
|    1 | aaaa |
|    2 | bbbb |
|    3 | cccc |
+------+------+
3 rows in set (0.00 sec)

データの閲覧(perl)

それではいま作成したデータをperlで表示したいと思います。

ですがその前にperlからMySQLを操作するDBIとDBDをインストールします。
DBIはData Base Interface
DBDはData Base Driver
です。以下のコマンドで行います。

yum -y install perl-DBI perl-DBD-MySQL

それでは、実際に表示を行うperlのコードをいかに示します。

test.pl

#!/usr/bin/perl

use strict;
use DBI;

our $DB_NAME = "db";
our $DB_USER = "root";
our $DB_PASS = "自分の指定したパスワード";
our $DB_HOST = "localhost";
our $DB_PORT = "3306";

my $dbh = DBI->connect(
    "dbi:mysql:dbname=$DB_NAME;host=$DB_HOST;port=$DB_PORT",
    "$DB_USER",
    "$DB_PASS")  or die "$!\n Error: failed to connect to DB.\n";

my $sth = $dbh->prepare("SELECT * FROM t1;");
$sth->execute();

while (my $ary_ref = $sth->fetchrow_arrayref) 
{
  my ($a, $b) = @$ary_ref;
  print "$a, $b\n";
}

$sth->finish;
$dbh->disconnect;

参考サイトとほぼ同じですが。。。

実行は以下のコマンドで行います。

perl test.pl

以上で終了となりましす。

(tips)DBパスワードに関する注意

パスワードを設定するときの注意点なのですが、@などの文字をパスワードに含める時は以下のように\をしっかりつけてください。
僕はコレのせいでなんでデータベースにつながらないのかをかなりまよいました。

our $DB_PASS = "nantoka\@nantoka";

終わりに

終わってみるとあっという間ですが、perlソースを実行するのに二時間くらいかかってしまいました。これを経て学んだことは

  • エラーログをしっかり見る
  • わからない時は基本的なことを確認する

です。皆さんも参考にしてください。

httpdでCGI(perl)実行できたけど、謎だらけ。。。

どうもこんにちは、昨日に引き続き、構築したwebサーバーでperlCGIを動かしていこうと思います。

CGIは古いという声も聞こえますが気にしないで書いていこうと思います。

今回は最後に謎な部分を見つけたのでそれについて謎のまま終わらせようと思います。誰か知っている人がいたら助けてください。

ちなみにサーバーの構築は以前の記事で作ったものを使用しています。
tkymx83.hatenablog.com

はじめに

CGIを起動する場合は、httpdの設定でCGIを起動できるようにするようです。今回はその設定方法と実際にできたページと注意事項を簡単に説明していきます。

ちなみにサーバーは仮想環境上のCentOS6.9です。順番は以下のようになります。

[CentOS] httpd.confの設定

以下のサイト参考にしました
http://mizushima.ne.jp/Windows/HTTP/Apache/Apache-perl.php

まず、centosにrootではいり、vimで設定ファイルを開きます

vim /etc/httpd/conf/httpd.conf

そして、581行目付近のDirectoryの設定のOptionを以下のように変更します。

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

Options ExecCGIとすることで指定したディレクトリでCGIが使えるようになるそうです。既存の設定を引き継ぎたい場合は+をつけてください。

次に796行目付近の#でコメントアウトされている文の#を外してください。そうすると以下のようになると思います。

AddHandler cgi-script .cgi

こうすることで.cgiのファイルがcgiの対象となるそうです。
以上で設定は終了です。

[CentOS] perlファイル(CGI)の設置

デフォルトではcgiを入れるフォルダは以下のフォルダになっていると思います。

/var/www/cgi-bin/

ここにcgiファイルをいれましょう。サンプルを用意しておきます。

hello.cgi

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<html><body>";
print "<h2>hello wprld</h2>";
print "</body></html>";
exit;

[Mac] CGIの表示

次は実行です。service httpd start でサーバーを起動してmacのブラウザで以下のurlを打ってみましょう。

localhost:8888/cgi-bin/hello.cgi

以上成功すると hello wprldとだけ表示されると思います。
これは、perlのコードが実行された出力結果をhtmlファイルとして取得しているということになります。

ちなみに
print "Content-type: text/html\n\n";
をつけないとブラウザがhtmlファイルと認識しないので文字だけ出力されてしまいますよ〜。

おわりにと謎

今までの説明で"になるようです。"みたいな、曖昧な喋りからに築いた人入るでしょうか?
なぜこんな喋り方をしているかというと、僕の環境では "[CentOS] httpd.confの設定"を行わなくてもなぜか、cgiが実行できてしまったからです。

なぜ。。。。

予想としては、もっと大元の設定でExecCGIやAddHandlerがセットされているからなのかと思います。。。

確信がついたらまら更新するのでこれからもよろしくお願いします。

MacのVirtual Boxで構築した CentOS6.9をhttp serverとしてmacのlocal環境からアクセスする

どうも久しぶりの更新になります。最近はperlでサイトを作ろうかなと思って動いています。

今日はその過程で仮想環境上にhttpサーバーを作る方法を解説します。

はじめに

Virtual BoxでCentOS6.9の環境を構築しています。Apachehttpdコマンドでhttpサーバーを構築しMacローカル環境から読み込んでみようと思います。

やるべきことは

  • [CentOS] ファイヤーウォールの無効化
  • [Virtual Box] ポートフォワーディングの設定
  • [CentOS] httpサーバーの起動
  • [Mac] サイトの表示

[CentOS] ファイヤーウォールの無効化

まずはじめにメニューから
 <システム>→<設定>→<ファイヤーウォール>
と進みます。

f:id:tkymx83:20170415133234p:plain

つぎにツールバーから
 "無効" "適応" の順番で押します。

f:id:tkymx83:20170415133239p:plain

[Virtual Box] ポートフォワーディングの設定

次にバーチャルボックスの起動時の画面から
 <設定>→<ネットワーク>
へ移動します。

f:id:tkymx83:20170415133703p:plain

そして、
 "高度" "ポートフォワーディング"
の順で押します。

f:id:tkymx83:20170415133708p:plain

その右上の+表示のボタンを押して各項目を画像のように設定します。
・http はhttpサーバーのポート
sshsshサーバーのポート

[CentOS] httpサーバーの起動

"端末"を起動して以下のコマンドでhttpサーバーを起動します。

sudo service httpd start

sudoでできない場合は su - で入ってからでもいいですし、httpdがない場合はyum -y install で入れてください。

[Mac] サイトの表示

ブラウザを起動してurl欄に以下を記入してください

localhost:8888

いかのように表示されたら成功です。

f:id:tkymx83:20170415134221p:plain

かんたんな解説とおわりに

今回は仮想環境上でhttpサーバーを構築しました。通常は80番ポートを使用しますが、80番はmacに割り当てられているのでそれ以外のポートを設定する必要がありました。ポートフォワーディングはアクセスされたポートを指定したポートに変換します。今回は8888ポートでアクセスされたものを80番に変換することで、外からでも仮想環境上のwebサイトを見ることができました。ついでにsshもできます。

これからはperlの環境を整えて簡単なwebサイトを構築していこうと思います。
以上

macでdeinでvim-clangをいれてみた

こんにちは、最近飲み会でうまく仲良くなれない筆者です

今日はmacvim-clangをdeinで入れてみましたので解説したいと思います。

vim-clang,deinって?

 vim-clangはc,c++言語の向けの予測変換を行ってくれるvimプラグインです。deinはNeoBundleのようなプラグインのマネージャーです。deinはNeoBundleよりはやいということなので、いれてみました。

よって今回の流れは
1.deinの導入
2.clangの導入
3.vim-clangの導入

deinの導入

deinは公式サイトが役立ちます。

github.com

以下のコマンドを実行します。

curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh installer.sh .vim/dein

これで、.vim/deinにdeinがはいりました。次に.vimrcの設定を行うのですが、以下のリンクでものべられているように、さきほどのsh installer.sh の実行結果を貼り付けます。

qiita.com

これを貼り付けて、保存した後にvimを実行し以下をvim上で実行することでdeinがインストールされます。

:call dein#install()

clangの導入

macではパッケージマネージャーのbrewをインストールした上でclangを導入します。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install clang
brew install clang-format

vim-clang の導入

deinを使ってインストールします。dein#begin と dein#end の間に以下のコマンドを入力します。

call dein#add('justmao945/vim-clang')

おわりに

これでしゅうりょうになります。かんたんですね。実際ネットを似て導入すると、ぼくはに時間かかりました。断片化された情報をまとめるのは初心者のうちは大変です。macでdeinでvim-clangを利用する人は参考にしてください。

パーティーゲームでできること

こんかいは、パーティーゲーム(複数人でやるゲーム)を作るとしたらどんなことができるか考えてみました。スマホのゲームについて考えています。備忘録的な感じなので興味があれば見てください。

どんなシチュエーション?

東京に友達が遊びに来たとします。せっかく遊びに来たし何か一緒にできることはないかなと考えています。そんなときにできるようなゲームを考えたいなと思いました。ゲームを考えると言ってもガッツリモチーフを考えるのではなく、探しものをするゲームのようなざっくりな内容を考えていきます。

複数人のメリットって?

ゲームの中身を考えるために複数人がいるメリットについて考えました。一つ一つ詳しく説明していきたいと思います。

  • 役割を決めることができる。

これは鬼ごっこのようなものですね、鬼がいて逃げる人がいる。ゲームの目的は鬼が制限時間内に逃げる人を捕まえる。役割を作ることで行動に目的ができ、それがゲームへとつながります。

  • 意見のぶつけ合いができる。

なにか、2つの選択肢があるとします。その選択肢に制限時間もあったとします。人はそれぞれ違う考えを持っているので、意見が別れるかもしれません。でも制限時間があるのでどちらかに決めるらめに話し合いをしないといけません。そして、話し合いによって決まった意見でもどちらかに責任が生じるでしょう。正解をしたときには歓喜の気持ちが、失敗したときには責任のなすりつけがありますが、それもまた楽しいひとときになると思います。これは一体感を高めていますね。

  • 対戦・協力することができる

タブレットなどを使う場合、画面は大きいので二分割して何かを行うことができます。二分割で思いつくのはぷよぷよテトリスなどですね。どちらも対戦をすることができます。それ以外にも、コントローラを2つ表示させて協力プレーができると思います。スマホなど小さい端末の場合は難しいかもしれませんが、二人で操作できればとても大きな一体感が得られると思います。

どんなゲームが考えられる?

ではそのメリットを使ったゲームを考えてみたいと思います。

  • 役割を決めることができる。
    • 野球ゲーム : ピッチャーとキャッチャーに分かれて投げた打ったの野球を行う。画面は二分割でピッチャー側では指の奇跡でボールを投げて、バッター側ではそのボールを打つなどが考えられます。
    • 推理ゲーム : 警察と犯人にわけて、推理ゲームをします。たとえばお互い自分のターンにだけ画面を見ることにして犯人は事件のヒントを出します。警察はそのヒントから犯人が誰かを見つけ出します。これは二人以上じゃないといけませんね。
  • 意見のぶつけ合いができる。
    • 脱出ゲーム : 普通の脱出ゲームです。一人でも楽しめますが複数人で考えるといろいろな意見が出てくると思います。その中で正解に導けた場合はかなりの達成感と一体感ができると思います。
    • クイズゲーム : ネプリーグで最後行うゲームのようなものです。二択クイズを連続で正解していくゲームです。一回でも間違えたらゲーム終了となります。それぞれのクイズには制限時間があり、その時間内で決めないといけません。複雑なルールではないので楽しめると思います。
  • 対戦・協力ができる。
    • 落ち物対戦ゲーム : ぷよぷよテトリスですね。パズドラのようなゲームでもいいと思います。基本的には対戦として楽しいですが、共通の敵をゲームで得たスコアで倒すとしたら協力にもなると思います。
    • サポートマリオゲーム : マリオを誰かが操作して、マリオが進みやすいように道を作ってあげるようなゲームですね。wii u でこのようなゲームが出ていたと思います。言いたいことは主人公とサポート役に別れて協力してゴールを目指す形ということですね。

まとめ

まとめると、複数人いるので対戦や協力で目的を達成することが多いと思います。話し合いをする要素があれば一体感が得られると思います。どちらにしても複雑なゲームよりも単純だけど奥が深いゲームのほうがやりやすいと思います。理由は人数が多いほどゲームを始めるハードルが高いからです。今回は備忘録として色々書きましたが、まだまだ考えられることは多いと思いますし、実際は画面が小さいなどのデメリットがあると思いますので、それにも対処した面白いゲームをつくれたらなと考えています。

以上