プログラマー

2017年6月12日 (月)がんばれagrobo君

おはようございます。sun
本日のブログ当番プログラマーのM.Iです。

大阪は梅雨で雨の日が多くなってきました。
傘を持っていないと不安になりますね。

最近知ったのですが、slackというチャットサービスがあります。
skype等と同じようにチャットができるサービスですが、AIを会話に参加させることができます。

よくbotといわれるものです。
ここで動くbotを作ってみました。

いくつかbotを作成するライブラリは公開されているのですが、筆者は.net好きなので.netで動くnoobotを使用します。



https://github.com/noobot/noobot

からgitなりでcloneしてきてください。

https://github.com/noobot/noobot/wiki/Getting-Started-With-Noobot#get-noobot-up-and-running-quickly

を参考に、botをslackに登録して、指示されたapiTokenをconfig.jsonに書き込み、cloneしてきたソースを実行するとbotがslackでオンライン表示になります。

aboutと発言するとbotが作者の情報を返信してくれます。

さてこのままでは味気ないので話しかけると反応してくれるように実装してみましょう。
helloと発言すると現在の時間に合わせて挨拶してくれるようにします。

noobotではMiddleWareBaseを継承したクラスを作るとチャットに反応するようにできるみたいです。
GreetingMiddleWareクラスを作ります。

using System;
using System.Collections.Generic;
using Noobot.Core.MessagingPipeline.Request;
using Noobot.Core.MessagingPipeline.Response;

namespace Noobot.Core.MessagingPipeline.Middleware
{
class GreetingMiddleWare : MiddlewareBase
{
INoobotCore myCore;
public GreetingMiddleWare( IMiddleware next , INoobotCore core)
: base( next )
{
myCore = core;
HandlerMappings = new[]
{

new HandlerMapping
{
ValidHandles = new []{ "Hello" },
Description = "挨拶するミドルウェア",
EvaluatorFunc = GreetingHandler
}
};
}

private IEnumerable

GreetingHandler( IncomingMessage message , string matched )
{
string greeting =
  DateTime.Now.Hour <  9 ? "おはようございます"
: DateTime.Now.Hour < 17 ? "こんにちは"
: "こんばんは";
yield return message.ReplyDirectlyToUser( greeting );
}
}
}

ValidHandlesに入っている文字列(大文字小文字は無視されます)がチャットに発言されると反応します。
この場合hello や hello worldに反応します。
EvaluatorFuncに登録した関数が呼び出されます。
messageに話しかけてきた人や所属しているチャンネル情報、話しかけられたメッセージ全文といった情報がきます。

話しかけられた後今の時間に応じて返信文字列を作ってやれば完成です。
上の例なら
0~8時なら「おはようございます」
9~16 時なら「こんにちは」
17~23時までなら「こんばんは」
と返信してくれるようになります。

クラスを実装しても実行されないと意味がありません。
noobotのライブラリのContainerFactory.csの

private void SetupMiddlewarePipeline(Registry registry)

メソッドの最終行に以下のように追加するとbotの初期化時に実装したクラスのコンストラクタが実行されます。

registry.For

().DecorateAllWith

();

上の例なら特定の文字が来た場合のみ返事を返す、ということができます。

再度実行してhelloと発言すれば

余談ですが、

myCore.SendMessage( ResponseMessage.DirectUserMessage( message.UserId , "hello" );

という風にすれば能動的に返信できます。

Taskクラスとasync,awaitを利用すれば1秒ごとに実行する処理を記述できます。

		private IEnumerable

GreetingHandler( IncomingMessage message , string matched )
{
Task.Run( async ( ) => {
for ( ;;)
{
await Task.Delay( 1000 );
await myCore.SendMessage( ResponseMessage.DirectUserMessage( message.UserId , "1秒経過" ) );
}
} );
}

メッセージが着た後1秒ごとに1秒が経過したことを返信してくれるbotになります。
これで1秒ごとに情報を持ってこれるようになったので、誕生日に祝うbot等も作れます。

世の中には数式を投げると計算結果を返信してくれるといった仕事の手伝いをするbotもあるようです。

以前このブログでも紹介されましたが
http://www.accessgames-blog.com/blog/2016/12/post-4eff.html
chatopsと呼ばれるそうです。

機械でもできそうな仕事を見つけて、作業を振ってみてもいいかもしれません。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/06/agrobo-4d0b.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年6月 9日 (金)AIとすごす怠惰な世界

おはようございます。sun
本日の当番、プログラマーのT.Fです。

まだ6月ですが暑すぎる日が連日のように続きますね!coldsweats01
通勤時間を経て会社に到着するだけで、その日の体力を使いきった感があります。

暑いと外に出たくないので、家でゴロゴロしている間にゲームを作ってくれる人工知能の開発が待たれます。
まあ、東大に合格する人工知能が作られないかぎり自分の代わりにプログラムを組んでくれるAIは登場しないでしょうが・・・。

ここ数年でAIが人間の仕事を奪う!みたいなノリの記事をみたりするたびに、自分の代わりに仕様書どうりのゲームをバグなくつくってくれよぉぉぉぉ!
と思っているのですがどうもAIの研究は芳しくない様子。

AIに意味を理解させる研究はあまり進んでおらず、いま使われている主流のものは入力に対してパターン解析をおこなって動作しているそうです。
極端な言い方をすれば、山と言えば川。みたいに入力に対して決まった出力を行うだけの物です。

ゲーム中に使用しているAIも、AIとは名ばかりの代物です。

攻撃可能な位置に敵がいる

攻撃!

みたいなパターンをプログラムで組んでいきます。
様々な状況判断をする判定文と、判定がTrueならアクションを実行!みたいなプログラムをひたすら用意しています。
なのでゲームのAIは自分で考えている風に動く開発者の血と汗の結晶なのです。confident

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/06/ai-83f9.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年6月 8日 (木)プログラマー三大美徳

Perlを開発したLarryWall様が素晴らしいことを謳っています。
プログラマーは以下3つを美徳にすべしと。

怠惰(Laziness)
短気(Impatience)
傲慢(Hubris)

うーむ言葉だけとると劣悪ですね。
「怠惰で短気で傲慢なプログラマー」…って書くとすっげぇクズ感ある。

ググるといくらでも解説が出て来ますが、
本日の当番、プログラマのT.Tの言葉で説明していきたいと思います。

怠惰(Laziness)
めんどくせぇなぁ… って思うこと。

転じて、自動化と再利用の活用。

面倒なことはPCに任せよう。
面倒な質問は先にマニュアルに残しとこう。

同じことやるのは2回目まではゆるす。3回目からはころす。

短気(Impatience)
おっせぇなぁ…キレそう…とか、
気が利かねぇなぁ…キレそう…って思うこと。

転じて、
処理速度を追求したり気の効くものを作ろう。
心地よく作業できるものを作ろう。

最低でも自分の作ったものに自分でキレないようにな!

傲慢(Hubris)
はぁ…何言ってんだ…俺のプログラムは完璧だろうが… って思うこと。

転じて、プライドを持って誰からも文句が出ない素晴らしいコードを書くこと。
ヒュ~カッチョいい~。

これで大体理解できたかと思います。

怠惰と短気は簡単ですね。今日から持ちましょう。
傲慢は経験がないと難しいかもしれません。
まぁでも持つだけならできるでしょう今日から行こう。

よし!怠惰で短気で傲慢に生きよう!(すっげぇクズ)

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/06/post-c321.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年6月 7日 (水)経験値というかなんというか

おはようございます。本日の当番、プログラマのT.Hです。sun

メガネの度が少し合わなくなってきたなとかなり前から思っていたものの、特に支障もないので新しいメガネを買わなかったのですが、今週末に行われる某ライブに参加するにあたって遠くでもちゃんと見たいなと思い、数年ぶりに新しいメガネを買いに行くことにしました。eyeglass

メガネそのものには特に問題なかったため、以前と同じ店で買おうと思いましたが、そもそもこのメガネどこで買ったっけ…?と全く思い出せませんでした。

メガネを見ても店名らしきものは書いておらず、メガネを買った時にもらったメガネケースは以前北海道に行ったときに旅館に忘れてしまった上、保証書等も見当たらなかったので、もはや確認する手だてはありません。think

仕方ないので近くのメガネ屋を調べてそこに買いに行きました。
新しいメガネや店に不満があるわけではないのですが、どこで買ったか覚えていれば調べる手間もなく、もう少し楽だったかなーという出来事でした。

日常生活ではさほど問題ありませんが、業務、特にプログラムに関しては、過去にした作業や作ったプログラムを覚えている、もしくはすぐに思い出すことができるというのは割と重要だと思っています。

作業時間の短縮だけでなく、過去のプログラムを自分で覚えていれば、今やればこの部分をもっとよくできるな、ここはよくなかったな、といった一人反省会的なこともでき、自分の成長を実感しやすいため、どのプロジェクトでどんな作業をしたか確認できるようにしています。
うまくいったプログラムは割と忘れにくいかもしれませんが、やらかしたプログラムも覚えておき、同じことをしないようにする、というのも大事ですね。catface

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/06/post-ffa9.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年6月 6日 (火)小目標

おはようございます。
プログラマーのG.Iです。

6月に入り、夏も近づいたのか晴れの日はすごく暑いですね。coldsweats01
毎年、このまま梅雨に入らずに夏になれば良いのにと思っている今日この頃です。

4月から入社した新社会人の皆さんは、もう十分会社にはなれたでしょうか?
まだ、不安がいっぱいという人もいるとは思いますが、始めはみんなそんな感じなので気にせず業務に励みましょう。

実際にプロジェクトに入ってみると、ゲーム製作がすごく細かい作業分担によって作られているというのがわかってくると思います。

私も学生のころは、企画デザインプログラムサウンドくらいしか分かれていないと思っていましたが、特に大きなプロジェクトでは、それぞれのセクションの中でもさらに細かく分業を行っているということが分かってきました。
なので、入社してからしばらくは自分の作業にどういった意味があるのか、この部分がどうなるのか、が分かりにくいとは思います。
特にプログラマーは、ツールのバグ修正だったり、一部のアルゴリズムのテストだったりと非常に分かりにくいです。

先輩や上司はきちんと説明してくれるとは思いますが、始めはなかなか想像できずに、つらい気持ちになることもありますよね。

あくまで個人の見解ですが、そんなときは、その作業に自分自身の目標を決め進めることをお勧めします。
例えば、プログラムの場合、余計な判定はしないとか、制限されたサイクルでコードを記述するとか、自分で決めた時間内に作業を終わらせるとか、、何でも良いです。

もちろん、その作業がプロジェクトにおいてどういった意味を知るのかは大切ですが、新人のうちは、まずはしっかりと仕事を早く正確に業務をこなすことの方が重要です。
あと、口で説明されても分からないものはおそらく自分で経験しないと分かりません
与えられる仕事が大きくなったときに初めて、その前の仕事の本来の意味を知るということは、経験上よくあることです。

話を戻しますが、、作業の中での小目標を持つと、それに集中できるため、先ほど書いたような、いらぬ流れを気にしなくてすみます。
また、その目標を達成するために他の人よりも工夫をしなくてはいけないので、結果的に色々な仕事がこなせるようになります。

以前にもブログで同じようなことは書いたことがありますが、流れ作業にならず自分自身で考えて業務をこなす人は、成長がとても早いです。
さらに、もし、その中で自分だけの楽しみを見つけることができたならおそらく、その時のその作業が、皆さんの得意分野になるはずです。

仕事をする上で、自分の得意分野が出来るというのは非常に良いことです。
とりあえず、皆さんはまずはそこまで目指しましょう。
そこからの話は、また今度にしますね。

では、がんばってください。happy01

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/06/post-b33f.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年6月 2日 (金)試行錯誤

おはようございます。本日の当番、プログラマのY.Hです。

先日になりますが、
某ショッピングモールにある串揚げ屋さんに行ってきました。

そこは、お店の人が作ったものを持ってくるのではなく、自分で串ネタをテーブルに運んできて、自分で練り粉とパン粉を付けて揚げる
…というシステムのお店です。

そのようなお店には、学生の頃に友達と行った事があるのですが、それ以来ぱったりと行ってなかったので、久しぶりに行ってみたい衝動に駆られてしまいました。

行ってみた感想なのですが、通常のお店より手間はかかるものの、自分で揚げるのは楽しいですね。
串ネタ自体もたくさんの種類があって良かったです♪

最初は揚げ具合がわからず、試行錯誤を繰り返していたのですが、何回か揚げるうちにコツが分かってきて、中盤ぐらいにはいい感じに揚げることができるようになってきました。

…とまぁこのように、なんとか美味しく食べることが出来たのですが、ゲーム作りも同じで試行錯誤の繰り返しです

最初から上手くいくことの方が珍しく、何度も調整作業を繰り返すことで、より良くなっていくものではないでしょうか。

場合によっては調整作業だけでは済まずに、仕様から考え直す事も少なくないですが、それも含めてゲーム作りですよね。
少々手間がかかるとしても、面白いゲームを作るためには必要な事だと思います。

さて、その串揚げ屋さんでは、
美味しくて楽しい食事が出来たので、また行ってみたいです♪

串ネタだけでなくソースもいろんな種類があったので、
今回試せていないソースにも挑戦してみたいですね!

…念の為に言っておきますが、C++のソースの事ではないですよ(笑

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/06/post-903b.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年5月31日 (水)集中力と結果

おはようございます。本日の当番、ゴルファー兼プログラマのJ's.Kです。
気温が上がり、絶好のゴルフシーズン到来。
そんな矢先、自己ベストの68を叩き出しました!

さて、本日のお題は「集中力と結果」です。

ゴルフをプレーしていると、緊張せずに淡々とプレーできることがあります。
その時は、概ね結果に拘らずに

「今日は1日○○に注意しよう」

とか

「今日は○○や△△を試してみよう」

という感じで、ゴルフに必死にならずに、要所のポイントを意識してます。
結果として

「ミスしたらどうしよう」

とか

「ここは絶対に上手く対処しないといけない」

という不安要素や追い込み要素を考えることもありません。
それが集中力に繋がってきます。

逆に

「今日は完璧だから良いスコア出すぞ」

という考えを持っている時ほど、スコアが悪い気がします。
邪念が邪魔をするのかもしれません…

集中して淡々と物事をこなすことで、自然と良い結果が出ます。

さて、この集中は、業務にも非常に有効です。

業務にはスケジュールがあります。
ですから、そのスケジュールを前提に

「今日は○○を作ろう」

とか

「今日は○○を調査しよう」

と決めて、それをこなしていく。
その途中で

「これもやってみよう」
「あれはどうだったかな」

というような脱線をせずに、徹底的にこなす。
脱線しそうになったら、メモして後回しにする。

そうすることで、集中して作業が行え、良い結果に繋がると思います。

逆に言えば、集中して作業できる環境を作る、ということも重要になります。

働きやすい環境を作り、集中して作業する。
こういう考え方を会社全体で共有できていれば、自ずと良い結果が出るでしょう。

と、言いつつも、ゴルフではよく邪念が顔を出します…
いつも集中してプレーしたいものですね…

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/05/post-03ea.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年4月14日 (金)リフレッシュ

おはようございます。sun本日の当番プログラマーのY.Nです。

桜が咲いて、ジャケットを冬物から春物に変えようか迷っている今日この頃ですが、担当していたプロジェクトもついに終わり、ご褒美として会社からアップ休暇をいただきました。
アップ休暇って何かというと、”プロジェクト頑張ったね”っと会社がくれるご褒美。
プロジェクトが長かった都合もありますが、なんと・・・2週間近くいただくことができました。happy02

何をしよ~かな?
何をしよ~かな?

・・・ってか長すぎて休みが合う友達がいない!!coldsweats02

って事で、家でダラダラするのも嫌なので、今までできなかったことをしよう!!
と思い、いろいろ考えた結果、北海道でスノボーをしに行くことに決めました。

でも、最近スノボーに行けてないので、体力がもつかな?
向こうでずっと一人だと暇にならないかな?
なんてことを思いながらも北海道にいざ出発!!

ゲレンデについてみるとそんな不安を吹き飛ばすぐらいの壮大な景色!!
関西ではまずありえないですね。

しかも、滑っている人のほとんどが外国人。
ホテルに帰っても宿泊者はみんな外国人。
なんだか海外に来たような雰囲気。

でも、外国人はフレンドリーな人が多いので、いろんなところで気さくに声をかけてくれた結果、一緒に滑ったり、飲みに行ったり、新しい経験をいっぱいすることができました。



仕事って精神的にも、肉体的にも大変なことが多々ありますが、休みの日にはしっかりリフレッシュして、仕事に全力、遊びに全力で楽しく人生を送りましょ~wink
follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/04/post-0aec.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年4月12日 (水)根っこの強さ

おはようございます。sun
本日の当番、プログラマーのH.Kです。

cherryblossomの季節がやってきました。
関西はピークを迎えましたが、近所ではまだまだ桜が満開に咲いています。
20170411_01

近所の桜の並木道です。
関西は先週いっぱいまで天気が良くなかったのですが、綺麗に咲いていました。happy02


ところで、桜の木は家に植えないほうがいいって聞いたことはありませんか?
小さい頃は綺麗な桜の木が家の庭に植えてあったほうがいいんじゃないかと思う時期も
ありましたが、それには理由がありました。

桜の木は、大きく立っている分だけ根の張りも大きく、太くて強固なのです。

そのため、一戸建てなどでは家の基礎が浮かび上がり、最悪、家全体が傾くことになります
庭に桜の木を植えないほうが良いといわれているのはそのためだったんですが桜を咲かせるだけでなく根にそんな力強さがあったのかと初めに聞いたときは驚きました。coldsweats02

そんな家をも動かす根っこの強さを持つ桜の木ですが、だからこそ綺麗な桜を咲かせることができるんではないかと個人的には思います。

仕事に置き換えると、根っこの強さは自分を支える基礎的な能力ではないかと考えます

何事も基礎があって初めて立派な大木になりますし、毎日の地道な努力を続けていけば、いつか綺麗な桜を咲かすことができる
そんな気がします。

皆も自分の桜を咲かせてみませんか?wink
follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/04/post-53b2.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2017年3月30日 (木)場を弁えよう

おはようございます。
最近入社しましたプログラマーのK.Aです。
初ブログとなります。
さて、私は、それなりに子ども時分からプログラミングに興味を持ち、独学で勉強をしてきた人間です。
もっとも、若さも期間も実力を必ずしも保障するものではありませんので、そこは意識を向けないで下さい。

ともかく、若さ故でしょうか、場を弁えないプログラミング熱を持っていた時期がありました。
いえ、実のところ、これは今も大して変ってないのですけども。sweat02
ともかく、若さとプログラミング熱が噛み合った結果、仕出かすことになります。
子供から青年へと成長し、恋人を持つという自然な流れ。
そして、恋人が家に訪ねてくるという、これまた自然な流れ。
私は、プログラミング馬鹿でしたので、そんな私の恋人としては、それなりの準備が必要です。
その時は、クロスワードパズルの雑誌を持って訪ねてきました。
そして、二人で楽しく協力して、問題を解いていきます。
楽しい時間です。
が、ある問題が登場して事情が、一変します。
升目の中にルールに則って数字を書き入れ、その結果から答えを導く問題でした。
頭に閃きます。
この問題、プログラムで解かすのにもってこいだと。
閃いてしまうのです。
私は、さっそくパソコンに向かって、キーボードを叩き始めます。
一時間も掛らずにプログラムは仕上がります。
うん、大して待たせていない。
そして、パソコンに問題を入力すると、瞬く間に問題を解いてしまいます。
私は、当然、大満足なのですが……。
現実は、『大して待たせていない』『瞬く間に問題を解いて』も、どちらも私の恋人が喜ぶ行為であるはずがなく、むしろ、そのです。
趣味にハマって強烈なベクトル(性向)を放つのは、楽しいものですが、それを楽しんでいるのが自分一人であるなら、相方のことも考えてあげるべきですね。

趣味と生活の境目を意識することは、とても重要だと思います。
ずっと後になってから、気づいたのですけどね。
follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-3661.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

より以前の記事一覧