2017年3月28日 (火)業務上での必需品、メモ

おはようございます。
もうすぐ入社して1年になる新人プログラマーのT.Tです。

来月からアクセスゲームズに就職する人もそうでない人も、就職に向けて準備を始めていると思います。
そこで、この1年の中で 業務上で最も活躍した”メモ”についてお話します。bookpencil

就職活動においてメモを沢山とった という人もいると思いますが、就職後も、先輩に質問する時、会議に参加する時、電話を取る時など、メモをとることが多くありました。

会議では机の上で書きやすいノートを使用し、先輩に質問する時は、立っている状態でも書きやすい リングメモを使用しています。

また、電話の近くにはペンとメモを 普段使用しているものとは別に置いておき、いつ重要な電話が来ても困らないようにしています。telephone

このように業務上ではメモが必要不可欠と言える存在になっています。
メモは百貨店や100円ショップで、安価で買えるので、もしまだ買っていなかったり、使っているメモの残りページがあと少ししか無かったりする場合は、このブログを参考に状況に応じて自分にあったメモを探してみてください。
follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-4efe.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月27日 (月)姿勢には気を使うべし

ここ数ヶ月続けてほしいゲームが発売されて手が回っていないプログラマのK.Kです。
いつになったら全部消化できるんだろうか....。

さて本日のネタですが、皆さんは姿勢に気を使っていますか?
私は、最近まで姿勢に関して気を使ったことなどなかったのですが、
実はこの間、肩を痛めて人生初の整骨院に行ってきました。
その時医者に、「相当背骨などが曲がっていますね」って言われました。

そして姿勢が悪いせいで上半身の様々な筋肉に常に負担がかかっていて、
限界を迎え痛みになったんだろうと説明されました。
まさか姿勢だけで体のいたるところにこんなに影響が出るとは思いませんでした。

整骨院に行く前は、姿勢が悪かったんですが最近は出来るだけ正しい姿勢でいるのを心がけるようになりました。
姿勢を良くすれば、肩こりなどになりにくくなったり、なんと姿勢が良いと体を大きく動かすことが出来るため、
消費カロリーが増え痩せることが出来るそうです。
色々とメリットが多いですね。

皆さんも気が付いたときは姿勢に気を使って生活してみてはいかがでしょうか?

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-5810.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月24日 (金)PCにもプログラムを書かせよう

日中は少しずつ暖かい日が増えてきました。
日本の春は三寒四温を繰り返しながら暖かくなると言いますが、
4日も暖かい日が続いている気がしないですね。
おはようございます、本日のブログ当番M.Iです。

皆さんはプログラムで同じようなコードを書く時、どういう風に書きますか?
例えばC++ならマクロやテンプレートといった技術を使うかもしれません。
これらの技術だとソースは短くなる代わりに、
複雑なマクロを定義するとどんな展開のされ方をするのかがわからなくなりがちです。
VisualStudioでもマクロを展開した後のコードを出す、
ということができるらしいのですが、ここでは置いておきます。

今回紹介するのはT4テンプレートというコード生成機能です。
VisualStudio2010から標準で実装されています。

さっそくコード例を紹介します。
なお、生成するファイルの拡張子を指定するコードなども必要なのですが、
このエントリでは省略しています。
あらかじめご了承ください。

<# for (int i = 0; i < 3; i++){ #>
i = <#=i#>;
<#}#>


このようにすれば

i = 0;
i = 1;
i = 2;

といった文字列を生成することができます。
<#と#>で囲まれた部分はC#のコードとして無視され、
<#=と#>で囲まれた部分を評価した値が出力されます。
<#+と#>で囲まれた個所にクラスやenumが作れます。
囲まれていない部分はそのまま出力されます。

この場合iが0~2なので、iを評価した値が出力されています。
forで似たようなプログラムを連続して出力ができるわけです。
ただ、同じようなコードが出力されるため、冗長なコードになります。

また、色分けやインテリセンスも効かないので、
それらを使用できるようにする拡張機能を導入したほうが捗るかと思います。

https://marketplace.visualstudio.com/items?itemName=tangibleengineeringGmbH.tangibleT4Editor230plusmodelingtoolsforVS2013

現在個人的に使用しているのが上の拡張機能です。

できることはprintfなどでコンソールに吐き出したものをリダイレクトするのと変わりませんが、
こちらだと変更後保存すればすぐに出力先ファイルに反映されます。

実用例として、例えばUE4だとUE4で管理できるクラスや構造体を宣言する場合
クラスならUCLASS、構造体ならFSTRUCTという文言をクラス宣言の前に書くという風に決まっており、
命名もクラスならUHogeHoge、構造体ならFHogeHogeという風にしないといけません。
こういったテンプレートを作っておくとクラスから構造体に変えたいといった時に変更しやすくなります。
どう定義するのか忘れた場合の備忘録、タイプミスで起こる分かりにくいエラーを防ぐこともできます。
タイプ量も節約できます。

<#
  var className = "HogeData";
  var type = UTypes.Class;
  var prefix = type == UTypes.Class ? "U" : "F" ;
  var typeString = type == UTypes.Class ? "UCLASS" : "USTRUCT";
#>
<#= typeString #>(BlueprintType)
<#= Util.LowerAndDeleteHead(typeString) #> GAME_API <#=prefix#><#= className#>
{
  GENERATED_BODY()
  int Hoge = 0;

  bool operator ==(const <#=prefix#><#= className#>& rhs ) const
  {
    return Hoge == rhs.Hoge;
  }

};

<#+
    static class Util
    {
        // 最初の一文字を消し、すべて小文字にして返す
        public static string LowerAndDeleteHead(string input)
        {
            if (String.IsNullOrEmpty(input)) return "";
            return input.Substring(1).ToLower();
        }
    }
    enum UTypes
    {
      Class,
      Struct,
    }
#>

と入れると

UCLASS(BlueprintType)
class GAME_API UHogeData
{
  GENERATED_BODY()
  int Hoge = 0;

  bool operator ==(const UHogeData& rhs ) const
  {
    return Hoge == rhs.Hoge;
  }

};

と出力されます。
var type = UTypes.Class;

var type = UTypes.Struct;
に変えればclass部分がstructになり、名前もFHogeDataになるかと思います。

リフレクションも使えるので、.netアセンブリ内にあるクラスを列挙し、
クラス内のメソッド情報をとり、コードを書く、といったことも可能です。

自動生成で作れるものならこういった技術を使えば生産性を上げていけるかもしれません。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/pc-50c4.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月23日 (木)柔軟に

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

来年度からまた新卒が加わるという事で、内心ワクワク、ドキドキしております。
自分は入社してから5年目になりますが、入社した頃の事は、昨日の事のように感じます。

入社した頃は、しっかり仕事ができるのか不安でいっぱいでした。
初めてのプロジェクトに携わった時は、右も左もわからず混乱状態でした。
ですが、任された仕事をキッチリこなしていく事で、仕事に対しての自信をつける事ができました。

仕事をする上で自分なりに意識している事があります。
プロジェクトに携わるタイミングというのは、決まっているわけではありません。
最初から携わることもあれば、途中から携わることも、終盤で携わることもあります。

そんな中で、自分の担当する箇所のみを注視して、その部分の処理のみを把握するだけでは効率は良くならないでしょう。
多少時間がかかるかもしれませんが、プログラム上での全体的なフローをキッチリと把握する事で、処理の影響範囲やゲームの流れを理解する事ができ、作業効率の向上にも繋がります。

どんな作業でも、最短ルートを行くことが最適とは限りません。
多少の回り道をしてでも、全体を把握してキッチリと進む事が最適なルートに繋がることもあると思います。

もし、作業に行き詰ったり、問題が発生した時は、無理やり解決するのではなく、色々な道筋を考慮してみてください。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-dc06.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月22日 (水)自分だったら

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

最近のゲームラッシュで増えた積みゲーを消化するために、3連休は朝から晩までゲームばかりして過ごしました。

ざっくり1日で15時間近く、3日間で45時間ゲームをプレイしたと考えるとやってやった感があります。

ゲームをプレイしていると、ゲームの面白い所つまらない所、操作性が良い悪い部分など色々な事を気にしながら遊びます。

が、

プログラマー的に特に気にする事と言えば、自分がこのゲームのこの部分を作るとしたら、どのような考え方でどのような処理で実装するだろうか?
といった内容です。

このブログを読むゲームプログラマーを目指す学生の方は毎日ゲームをプレイするでしょうが、ゲームをプレイしている最中に、自分だったら、このゲームのこの処理はこういった作りにするだろうなー、と想像しながらゲームをプレイするとイイかもしれません。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-6e89.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月21日 (火)GCC'17に行ってきました

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

先月の話になりますが、大阪府立国際会議場で行われた、
GAME CREATORS CONFERENCE'17(以下GCC)に参加してきました。
サンフランシスコで毎年開催されているGDCには参加したことはあるのですが、国内のカンファレンスに参加するのは初めてでした。

イベントや講演といったものは関東で行われるものが多い中、こういったカンファレンスを大阪でやってくれるということは、大阪在住の私にとっては非常にありがたい話です。happy02

例えば東京で朝10時からカンファレンスがある場合、前乗りできればいいですが、それができない場合、朝早くに起きて新幹線に乗って東京へ行く必要があります。
そして帰りは新幹線の終電に間に合うようにしなければならず、帰るまでは恐らく落ち着くことができません。coldsweats02
その日は非常に疲れてしまい、聞いたことを十分に吸収できないかも知れません。

しかし、大阪で開催となれば話は別です。
GCC当日は普段と同じ時間に起床し、普段と同じ時間に家を出ても、開始時間から非常に余裕をもって到着できました。catface
さらに帰りも慌てる必要もなく、梅田でカンファレンスの内容を振り返りながら、一緒に参加した社員と食事を取り、有意義に過ごすことができました。

極端な話をしましたが、国内でのカンファレンスというだけでも貴重な機会です。
個人での参加も可能ですし、私が参加したあるセッションでは、結構な数の学生さんも参加していました。
参加しやすいものには片っぱしから参加するといいと思います。
CEDECも大阪でやってくれないかなー(チラッ

大阪でやると他の都道府県から来る人が疲れる?何のことやら…

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/gcc17-f3a3.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月17日 (金)チャットウプスpart2

どーもー。happy02
今年の新人とイニシャル被ってるので呼び名を変えようと思います。
おはようございます。本日の当番のプログラマーのT&Tです。

前回僕が書いたChatOpsの記事
あれから進展したことを書きます。

■Googleカレンダー → Slack
20170316chatops00

どこでも楽に見れるGoogleカレンダーを重宝してます。
僕は仕事、ゲーム、漫画、映画の予定を突っ込んでます。

これをSlackへインテグレートすることで、
予定時間前になるとDMで通知してくれます。
チャンネルへの通知も可能です。

■twitter検索結果を表示
20170316chatops01

レッツエゴサーチ!
定期的に指定ワードを検索し、botに報告させます。

hubot の hubot-twitter-search というモジュールを参考にいじくってます。
(画像はワードをかなり限定して弊社のアカウントを検索結果に出しました)

■タスクとして活用

20170316chatops02

自分へDMを送りそれをスター化(お気に入り?)することで、
スターアイテムを簡易的なタスクリストとして利用します。
タスクが完了したらスターをはずす。
これはSlackの一つの機能です。

また、chatworkのようなタスク機能を有したサービスもありますね。
chatworkさんもAPI出ているので、
ChatOpsのインターフェースとして利用できるかもしれません。(たぶん)


とりあえず3つほど書きました。

実装とかはむちゃくちゃ楽しくしていますが、
業務の傍らやってるので時間見つけるのが難しいところです。

また、コンシューマのゲーム開発ばかりで、JavaScriptに触れていないので、
botのコードであるCoffeeScriptの理解が浅すぎるところ。
こっちはサンプルを使う時に書きうつすことで理解していきたいですね。

ChatOpsSlackbotなどで検索すると、
基本フロー以外にも色々なアイデアがあり、参考になることも多いです。
少しずつ出来ることを増やしていき、
チャットでの業務効率化を進めていきたいですね。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/part2-a73f.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月16日 (木)納期と品質

おはようございます。sun

プログラマーのG.Iです。

3月もそろそろ後半に差し掛かっていますが、まだまだ寒いですね。

今日も、パッチを履いて出勤してます!

さて、今日は納期と品質について話をしたいと思います。

ものづくりにおいて、納期と品質はどちらも大切ですよね。

これはゲーム製作においてもまったく同じです。

もちろん、納期がなければ開発チームはずっと楽しい時間は過ごせるかもしれませんが、
現実問題そんなことはありません。

ユーザーに完成したゲームを届けるのが仕事なので、ちゃんと納期どおりに終わらせて作ったものを発売するというのは当たり前ですね。

ですが、ただ納期だけを守って品質の低いものを届けるというのも絶対だめです。

まあ、色々な事情でどうしようもない場合もありますが、できる限り品質を上げるよう努力して製作を続ける必要があります。

個人的に、これは開発プロジェクトの規模にかかわらず、どのプロジェクトでも同じだと思っています。

なので、その開発予算や期間、開発チームの能力や企画内容によって、どこに時間をかけるべきか、どこを切り捨てるかをプロジェクトの始めに決めて取り組むことが大切です。

時間をかけるところは、スケジュール予備を大幅に取ったり、良くなるまでトライ&エラーを繰り返し、逆に優先度が低い箇所は納期厳守で遅れそうであれば切り捨てるということですね。

もちろん、開発チームはみんないたるところをより良い品質にしたいと思っているのでそういった考えも大切ですが、状況によってはそれがプロジェクトをだめにしてしまう
場合もあります。

チームの中でのスケジュールを握るスタッフにとっては絶対に必要な考え方です。

また、このチームにとってどこに時間をかけるべきかという考え方は個人のスケジュールにも当てはめることができます。

特に経験が浅いスタッフなどは、自分のスケジュールを決める際に新しいことにどんどん挑戦していく必要があります。

つまり、そこは時間に余裕を持って作業をすすめ、すでに経験している作業はさっさと終わらせましょうって事です。

常にこういう考え方で仕事を進めていれば、もしプロジェクトのスケジュールを握る立場になったときに楽ができますよ。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-c46f.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月15日 (水)集めた情報で色々やってみよう!

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

昨日のブログで情報収集についてありましたが、日々、新しい情報が舞い込んできており、興味を引くものが大量にあります。
その中で自身のリソースが許す限り手を出すようにすべきだと思います。

理由としては見て聞くのと、実際にやってみるのでは、理解度に大きく差が出るからです。

自分の引き出しを増やすために、好きな事おおっぴらにできるのは良いことです。

以下に、今興味があり、手を出しているものを上げていきます。

・レイマーチ

 64K intro等をちょくちょく触ってましたが、 とある講演に関する社内勉強会がきっかけで再燃しました。
 ボリュームレンダリングの手法の一つで、 今後の制作で実際に使う機会があるかなと感じています。

・T4テンプレート

 同僚発案で勉強会の発表物として検証中です。
 C#で処理を記述できるコードテンプレートで、 同じような記述を簡単に書けるので、業務で楽ができます。

・とあるゲーム①
 最近発売されたゲームでネットの記事を見ていましたが、 同僚が楽しそうに遊んでいるので購入しました。
 今後の制作で、あれみたいにやってと言った指示があるかも?
 また、面白いゲームとは何かを再認識するために。

・とあるゲーム②
 ネットで関連記事から偶々見つけた、 昔から好きなゲームデザイナーの作品。
 同好の士に情報共有済。
 完全に趣味ですが、同じ趣向の人への話題になります。

皆さんも、正当な理由付けの上で好きなことをやっていきましょう!

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2017/03/post-231a.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月14日 (火)情報収集

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

少し前の事になりますが、引っ越しすることになり、去年から今年にかけて、いろいろ引っ越し作業をしていました。

部屋探しの時点から既に大変だったのですが、ようやく部屋も決まり、これで一段落するかと思いきや、次のステップとなる家電家具類の選択がさらに大変でした…

今回は実家から引っ越しだったので、持っていくものよりも、新しく購入するもの(例えば、テレビ冷蔵庫洗濯機など)が多かったのです。

優柔不断な性格なので、それらを選ぶのには本当に苦労しましたね。
特に100%理想通りの製品というのはほとんどなく、それぞれに長所短所があったので余計に難しかったです。

購入する決め手になったのは、製品の情報でしょうか。
ネットのレビューを見たり、カタログを集めたり、店頭で実物を確認してみたり…などでようやく製品を絞れたと思います。

今回の件で、何事も事前の情報収集が大事だと思いました。

これは業務でも同じですよね。
ゲームの要素を作り始める前に、関係者と話をしたり、仕様書を確認したりすることはとても大事です。

もちろん作業を始めてから、気付くことも多いのですが、事前情報の有る無しで、作業効率が大きく変わると思います。

さて、悩んで選んだかいもあっていい買い物ができたと思っています。

部屋にも結構、いろんなものが揃ってきたのですが、まだ買えていないものもありますので、引き続き情報収集を頑張ります!happy02

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

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

«最小限で最大の効果