サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
gumilab.hatenadiary.org
こんにちは、gumiでエンジニアへの研修を担当している高柳です。 今回のレポートは「supproted by gumi」として2日間開催したハッカソンの話しです。開催のきっかけは社内のエンジニアからやってみたいという提案でした。昨年からやっと私が社員のつぶやきに対応できるようになってきたなぁという感じと、提案してくれる社員の存在はいいなぁと思いながら調整しました。ハッカソン運営のノウハウがない中での開催でしたが、参加者が楽しそうに語り合ったり、集中して開発する姿を見ていい時間を作れたなと思いました。 今回は、gumiでも初の試みということで、参加者をしぼらせていただき、社員の知り合いという範囲で募集させていただきました。またハッカソンという名を使いましたが、完全なハッカソンのカタチでの開催は経験不足というところもあり、片方の日だけでも参加できるように「ゆるい」集まりにしました。さらに途中入
gumiではバージョン管理システムにGitを採用していますが、 その中でもGitHub Enterpriseを推進しています。 GitHubは皆さんご存じかと思いますが、 GitHub Enterpriseは社内にGitHubを構築できるという画期的なサービスです。 多くの人がGitを使ったことがあるとは思いますが、 GitHubって便利ですよね。 Gitがこれほど普及した理由の一つとしてGitHubというツールがあったから、 というのは非常に大きいと思っています。 ここで疑問があると思います。 「何故GitHubのprivateリポジトリを使わないのか?」 答えの一つとして、 「情報共有の範囲を社内に区切ることによってより密度の高い情報共有をする」 という事があります。 人によってはprivateじゃなく、 publicにしてオープンソース化し、 外に公開すれば良いじゃない、 そうすれば
単に「見積もりをする」ときどのように見積もっていますか? 「プランニングポーカー」ですか? それは正しく使えていますか? それらの再確認も含め、 社内勉強会にてやっとむさんをお呼びして「アジャイルな見積もりと計画づくり」勉強会を行いました。 「計画」とは何か? 「見積もりと計画づくり」とは何か? といったようなことを主体に参加者で話し合いました。 まずはやっとむさんによる「アジャイルな見積もりと計画づくり」の「計画」について。 「計画づくり」とは? 見積もりの不正確さについて。 さて、これは何でしょう? プランニングポーカーによる実践。 ポーカーは手作り。 こんな感じで出していきます。 何度か繰り返します。 最後に勉強会の振り返りと感じた事の共有。 gumiではこういった事を積極的に行ってプロセス改善を意識しています。 大切なことは「改善する」という強い意志を持つこと、 そして、それを「継
XP(Extreme Programming)で有名なケントベックは言いました。 僕は、偉大なプログラマなんかじゃない。偉大な習慣を身につけたプログラマなんだ。 今まで出会ってきた「偉大だ」と感じるエンジニアには共通した習慣があるように感じます。 道具に拘りがあり、常に研鑽する 道具というとキーボードなどを思い浮かべるかもしれませんが、道具とは物理的なものに止まりません。 エディタ、OS、言語、モジュール、フレームワーク、ライブラリ、様々なものがそれにあたると思います。 勿論、キーボードもマウスも、ディスプレイも、ガジェットもそうです。 そして、それらを使いこなそうとします。 深く探求し、自分なりのリズムを刻もうとしています。 コードリーディングから始める 新しいものを学ぶとき、「書くことから始める」か「読むことから始めるか」という違いです。 多くの場合、新しい言語を与えられると人は「書く
弊社ではプログラミング言語としてPythonを採用しています。 最近のウェブ系スタートアップが採用しているプログラミング言語やフレームワークまとめ - laiso パッと見て頂くと解るかと思うのですが、思った以上にPythonという言語はスタートアップに採用されています。 日本にはLLというと、 CGIで一世を風靡したPerl、 そのPerlを塗り替えたPHP、 もしくはRailsと共にブームになったRubyというイメージがありますが、 Pythonは十分に実用的な言語でかつ、実践的な言語だということがおわかり頂けるかと思います。 特に我々が重視しているのはその思想です。 バッテリー内蔵言語とも呼ばれるPythonですが、 PythonにはZenの考え方が採用されています。 即ち、 import this The Zen of Python, by Tim Peters Beautiful
社内勉強会において、 TDDの伝道師、t-wada(和田卓人)さんにお話を戴きました! TDDというとまず思い浮かぶのが、 テストってそもそもたくさんあるよね まずテストに何を書いて良いかわからない といったようなことかと思うのですが、 そういった疑問に対しても適切にお教え頂けたかと思います。 例えば、テストにはどんな種類があるか? テストはどう書き始めればいいのか、といったようなことです。 テストにまつわる混乱から始まり、 少しずつテストを書いていくお話、 テストのサイクル、 また、テストに関する黄金律のお話などをしていただきました。 TDDと一言で言うと非常に敷居が高く感じられるところもありますが、 そういった誤解を解くことにも一役買ったものと思います。 開発を効率化することもそうですが、 エンジニアの意識や技術を高める方法としてもTDDは優れた技法だと考えさせられます。 TDDの伝道
gumiでは社内勉強会を毎週(週に1〜2回)行っています。 gumiで行っている勉強会は主に3つあり、 社内のエンジニアの発表/LT 社外から呼んだエンジニアの発表 社内エンジニアの手を動かすハンズオン といったことを行っています。 なぜ3種類あるかというと、 これらは意味が違うと考えているからです。 1.では、 社内のエンジニアの発表はそのエンジニアが持っているバックグラウンドの話(例えば、趣味で作っているゲームや、触っている言語の話)、 社内で関わっているプロジェクトの振り返りを行っていますし、 2.では、 社外からは様々なエンジニアをお呼びし、 MySQL、GAE、Django、SQLAlchemyといった各分野のスペシャリストにお話をお願いしています。 3.では、 ハンズオンではPythonでのPILによる画像処理や、Pygameによる簡単なゲーム作成、 基本にかえって、Djang
こんにちは、gumiの新居です。 遅くなりましたが、昨年12月21日、株式会社マイネット・ジャパン様と共催でgumiStudyを開催致しました。 概要はこちら http://atnd.org/events/22907 今回のテーマはFacebookアプリ勉強会。 弊社からはCTOの堀内、株式会社マイネット・ジャパン様からは伊藤さんと後藤さんに発表して頂きました。 発表資料は本記事下部にシェアさせて頂きます。 ということで、発表して頂いた内容の中から気になったポイントや重要だと思うポイントを初心者目線で簡単にまとめてみました。 具体的な実装方法などには触れていませんが、開発する上で当たり前に知っていないといけない内容だと思います。 1. オブジェクト(Objects) Facebook上では、ユーザー、写真、アルバム、投稿など全てが「オブジェクト」という概念で扱われる。 全てのオブジェクトは
度々登場しております、gumiの新居です。 最近勉強会報告のブログばかりとなっておりますが、また何か面白いネタがあれば書きたいなーと思いつつ業務に追われ後手後手に回っております。。。 ということで、遅くなりましたが、先日11/8(火)、【エンジニアカフェEvent×gumiStudy】ソーシャルゲームの解析を支える技術-Hadoop編-を開催致しました。 ちなみにMongoDB編はこちら↓↓↓ gumiStudy #9「ソーシャルゲームの解析を支える技術-MongoDB編-」開催致しました 弊社からは堀内と本間、そしてAmazon Web Services(AWS)を提供されているアマゾンデータサービスジャパン株式会社から大谷様をお招きし、発表を頂きました。 会場は、今回もパソナテック様にご提供頂きました。 ソーシャルゲームとデータ解析 まずは弊社CTO堀内から、開会の挨拶と「ソーシャルゲ
こんにちは、gumiの新居です。 先日10/24(月)、祝gumiStudy復活ということで、約11ヶ月ぶりのgumiStudy #9 【エンジニアカフェEvent×gumiStudy】ソーシャルゲームの解析を支える技術-MongoDB編- を、パソナテック様に会場をご提供頂き、開催致しました。 今回は、ドキュメント指向データベースで注目されているMongoDBをテーマとし、MongoDBの概要や弊社での導入事例などを発表して頂きました。 弊社からは、堀内、本間が発表させて頂きました。 ソーシャルゲーム業界の現状 弊社取締役CTOの堀内です。 ソーシャルゲーム業界の現状や弊社での取り組みについて、発表させて頂きました。 ソーシャルゲーム開発の概要や、膨大なトラフィック・膨大なログデータを扱うという技術的にも課題の多い領域で、チャレンジできる喜びや楽しさを説明して頂きました。 日々更新改善が
はじめに はじめまして。gumiの古閑です。 簡単に自己紹介するなら、僕はWebエンジニアとしては働くのはgumiが初めてです。 今まではコンシューマーゲームを主としてきましたので、Web素人の僕がgumi Engineer's Diaryに何を書こうかと考えていたのですが、良い題材がありました。 unityです! unityとはWeb/Windows/OS X/iPhone/Android、さらにWii/XBOX360/PS3などにも対応しているという話題のゲームエンジンです。 またGREE SDK機能を簡単に組み込めるiOsやAndroidに対応した「Unity Plugin for GREE」というのもあります。 有料版と無料版がありますが、無料でも充分すぎる程の機能が揃っています。 今回は無料版でも出来る内容で面白そうな機能として、ラグドールを触ってみようかと。 業務外の趣味でやっ
はじめまして、こんにちは。 エンジニア一年目、gumiの新居(ニイ)です。 拙い知識と拙い文章の私が今回ブログを書かせて頂くことになりました、よろしくどうぞ。 高度な内容は書けませんが、活用して頂ければ幸いです!! (間違った記述がありましたら、ご指摘頂けるとありがたいです。) 内容 今回書かせて頂く内容は、個人的に注目、勉強しているTitanium Mobile(タイタニウムモバイル)です。 Titanium Mobileとは、JavaScriptのみでiPhoneとAndroidのアプリケーションを開発できるツールです。 しかもソースコードひとつでiPhoneとAndroidどちらにも対応できるので、マルチプラットフォームに対応できます。 ちなみにRuby、Python、PHPでデスクトップのアプリケーション、iPadのアプリケーションなども開発することができるようです。 Titani
こんにちは、gumi 元エンジニアの鎌谷です。 gumi では解析システムの開発や、今回紹介する SWF バイナリ加工ライブラリの開発を行っていました。 SWF バイナリ加工について ガラケー向けにインタラクティブなコンテンツを配信したい場合は、ほぼ全ての携帯機種に対応した Flash Lite 1.1 が用いられます。 ただし、この Flash Lite 1.1 は非常に多くの制約があります。 一度パブリッシュした SWF を動的に加工したい場合、バイナリをサーバーサイドで直接いじるという荒技が用いられているようです。 gumi でも SWF バイナリを動的に加工する必要があり、python ライブラリ Tomato が開発されました。 Tomato によって、 パラメータの注入 画像の置き換え MovieClip の置き換え が python で行えるようになります! Tomato G
はじめに こんにちは。gumiの畠です。 世の中には、Advent Calendarなるものが存在しているみたいです。 僕は不勉強なのもあって今年になって初めて知りました。 そのうちの一つPython Web フレームワーク アドベントカレンダー にいかがですか?と @terapyonさんに声をかけて頂き、@RyoAbeさんからバトンが回って来たので、何かそれっぽいことを書いてみようかと思います。 とは言え、僕自身はDjango以外のPython Web フレームワークを使った経験があまりないので、今回は前職でちょろっと使っていたGenshiと現在gumiで使っているDjangoテンプレートの比較をしてみようかなーと考えています。 Djangoテンプレート そんなわけでDjangoテンプレートです。 Djangoには専用のテンプレートシステムがあります。 詳しくはこの辺を見てください。 D
はじめに こんにちは。gumiの畠です。 今日のお題は悪名高きガラケーのCSSのお話です。 キャリアごとに色々あって面倒くさいガラケーのCSSも、これを読めばPCサイトのように簡単に扱えるようになります。 モバイルでもCSSを使おう! 最近のウェブサイトでは装飾と構造を分離するためにCSSを使用するのが一般的です。 しかし、docomoの古い携帯ではPCサイトと同じようにはCSSが使用出来ません。 そのため弊社でも本来はCSSで表現すべきものをインラインのstyle要素としていました。 ですが、perlやPHPにはこういう状況を解決するために、styleタグで指定した外部CSSファイルを読み込んで、インラインのstyle要素に入れ込んでくれるライブラリが存在しています。 実に羨ましい限りですね! なんでpythonにはないんでしょう>< とは言え、ないことを嘆いていても仕方ないのでHtml
Djangoを始めるその前に こんにちは。gumiの西川です。さて今回はPythonもDjangoも始めたばかりの私が、あえてDjangoのことについて書いてみたいと思います。というのも、正直Djangoの公式サイトは本当に始めたばかりの初心者の入り口としてはあまり優しくないなぁと思ったからです。今からDjangoを始めようという方に「Djangoってこういう感じのものなんだな」というのがなんとなくでもこの記事から伝われば幸いです。 初心者向けというのも考慮して、文字だけだと堅苦しくなってしまうので、写真や図などを使って説明していきたいと思います。とりあえず写真は私の息子の翔太です。とっても可愛いですね! なお今回は『Djangoを利用した一般的なWebアプリケーションを作る』ということに絞って、簡単に書くことを優先しています。正確性よりも分かりやすさを優先していますので、若干微妙な表現が
はじめまして、gumiのジョンです。 8月に一ヶ月頂いてgumiのキャバウォーズアプリをMixi Touchスマートフォンに移植させて頂きました。対応の半分以上は単純にFlashからHTML5への書き直しでしたが、今考えたらいくつかの点は誰かが先に知らしてくれたらよかったと思います。このTipsリストはそのスマートフォン対応を始めようとする過去ジョンのためです。つまり、この投稿のもう一つのタイトルは「Mixi Touch対応を始めるジョンへ 〜愛情を込めて〜」。 早速Tipsですが、 1) hrefは次のページのトップにリンクすべきです。 <a href="http://gu3.co.jp/index.html">Next Page</a> じゃなくて <a href="http://gu3.co.jp/index.html#">Next Page</a> iFrameの中でページのリンク
はじめまして、gumiの津村です。 現在は解析系の仕事をしたり、ツールを作ったりしています。 今回の話は高速化についてです。 結構長めの文章です。 目次 実行速度の高速化 Python/C API ctypes Pyrex Cython SWIG その他 纏め 実行速度の高速化 高速化といっても色々ありますが、今回は実行速度の高速化についてです。 弊社ではPythonを全面的に採用していますが、そもそもLLは実行速度が遅い言語です。特にC言語のようなコンパイラ系の言語と比べると非常に遅いです。 それでもLL系の言語がここまで使われるようになったのは、開発効率が良いからです。 もはや常識ですね。 しかし、それでも特定の領域ではどうしてもPythonのようなLL系言語では厳しい部分も出てきます。 アルゴリズムを変更しても、ハードウエアを変えても、無理な物は無理です。 速度に問題がある場合の最適
こんにちは。gumiの木村です。 すっかり秋めいて寒い位になりましたが皆さんいかがお過ごしでしょうか。 さて、今回はPythonのシリアライズを題材に書いてみたいと思います。 シリアライズとは、簡単にいうと数値・リスト等のオブジェクトをファイルやDB等に保存できる形式に変換することです。シリアライズされたものに対し逆変換を行いデータに戻すことをデシリアライズといいます。 Pythonでシリアライズ/デシリアライズを行なう方法を以下にいくつか挙げてみました。 str, eval 関数 シリアライズにデータ値を文字列に変換するstr関数、 デシリアライズに文字列を評価するeval関数を使用します。 pickle, cPickle モジュール Pythonに標準で付属するpickleモジュールを使用する方法。シリアライズされたデータは独自形式になります。 更に内部処理をCで記述し高速化されている
こんにちは、gumiの奥田です。 肌寒い季節になってきました。体調管理には充分気をつけましょう。 さて、弊社では各プロジェクトの管理としてRedmineを使っています。 今回はRedmineのちょっとした活用方法をご紹介します。 カスタムクエリ タスクの管理としてチケットを起票していくと思いますが、たくさんのチケットがある場合、埋もれて探すのが大変だったことはありませんか? 自分の担当するチケットだけ見たかったり、解決していないチケットだけ見たいときってありますよね。 そんな時にカスタムクエリを作成すると便利です。 カスタムクエリを作っておくことで、チケットの情報をフィルタリングして該当するチケットだけを表示することができます。 それでは実際にやってみましょうー! 自分の担当するチケットだけを見たい。 チケット一覧画面を表示します。カスタムクエリは「フィルタ」の部分を変更することで作成でき
はじめにというか雑談 こんにちは。gumiの畠です。 先日GREEでスターフロンティアというゲームを公開しました。 ここ2か月くらいの忙しかった日々が報われたかと思うと感慨ひとしおです。 まぁ今も修正やら調整やらで忙しいのは変わらないのですが。。。 キャッシュを自動化しよう さて、本題です。 ソーシャルアプリのようなトラフィックが高いサービスを作るときはDBアクセスを減らすことが重要になります。 Djangoにはそのための機能であるdjango.core.cacheが存在していますので、DBアクセスの結果は積極的にキャッシュしたいところです。 ですが、各モデルにいちいちキャッシュの機構を組み込むのは面倒ですし、万が一消し忘れたりすると大変です。 そこで、スターフロンティアではキャッシュする抽象モデルクラス(AbstructCachedModel)を作って、ある程度のキャッシュを自動化してい
gumiの粟飯原です。 データマイニングやってます。しかしながら最近はあまりデータをいじる時間がなく社内でプレゼンばかりする日々で、社内でも私がなにやってるのかわからないというもっぱらの評判。そこで今回は一応データ解析もやってはいるんだよということを内外に主張するためにもデータマイニングの話をしようと思います。 アプリの基本的な日々の統計データ取得などは別の方々はやられているので、私からはhadoopを使った大規模解析の話や、そこで得られたデータを分析する環境の話をしたいと思います。コードを併記した具体例などは今回載せられないのですが、今後また紹介していければと思います。 大規模データの解析 日々のログ解析やDB解析はcronによる処理で毎朝レポーティングを行っているのですが、新しい情報を過去のアクセスログからまとめてどかんと取得したいと言う時はHadoopによる大規模解析を実行しています
こんばんは。gumi の濱咲です。 Twitter の Basic 認証が終了したので、OAuth 認証の方法を紹介いたします。 使用するライブラリは「Python-twoauth」にします。 Basic 認証は非対応です。SearchAPI がありませんが、その辺は適宜。 Applicationの作成 dev.twitter.comで「Register an app」を選択します。 NewTwitterApplicationで作成するアプリの情報を入力します。Application Typeは「Client」で作成します。全ての情報はあとから変更できるので、今は適当でもかまいません。 登録が完了すると、Consumer Key と Consumer Secret が発行されます。 PIN から Access Token, Access Token Secret の取得 Python-tw
9月26日(金)にgumiStudy#20を開催しました。 gumiStudyでファシリテーターをさせていただいている高柳です。 前回の#19ではgumiのリリースしたゲームについて、関わる職種を横軸に全部見せる構成で、 ディレクター・デザイナー・エンジニアの視点からお話させていただきました。 今回は、Ver.Techと称してエンジニア視点でgumiの開発を語ってもらう場を作りました。 内容は…。gumiのiOS版『ドラゴンジェネシス -聖戦の絆-』のあるイベントに持ちいられた AIという機能についてと、ソーシャルゲームにおけるデータの扱いを分割や整合性という面で 実例を語ってもらうという内容でした。 講演1:分割と整合性をがんばる話 ソーシャルゲームの整合性対策 gumiStudy版 登壇者:清水 佑吾氏(gumi Specialist Engineer) 他の勉強会で話した内容をgum
はじめに こんにちは。gumiの畠です。 先日弊社CTOの堀内がgumiStudy#1でKVSについての講演を行いました。(スライドはここ) そこで今回は実際にKVSを使用している例として、リアルタイム・ランキングを取り上げたいと思います。 一見難しそうに思えますが、リアルタイムでのランキング処理なんてメインのロジックは15行もあれば書けちゃうんですよ! リアルタイム・ランキング ゲームを扱うコンテンツ・サービスにおいてランキングは重要な要素となりますが、データの件数が多くなると単純な方法では負荷が高くなってしまうので難しいです。 その辺の難しさや解決策は GREE Engineer's Blog の「リアルタイム・ランキングを考える 」にまとまっているので読んでみて頂けると理解がしやすいんじゃないかと思います。 ただ、GREEさんの記事は素晴らしいのですが、実際どうやっているのか等の細か
はじめまして。gumiのtamuraです!( ゚∀゚)o彡°Python!Python! Python使ってますか? Excel使ってますか? 両方使っているそんな貴方のために、今回はPythonでExcelを操作するライブラリpyExceleratorとxlrd/xlwt/xlutilsを紹介します。 pyExceleratorは長らく使われてきたExcelを読み書きするライブラリで実績があり、 実用上困ることはあまりありませんがメンテナンスがほぼされなくなっており、 (2005-10-26に0.6.3a、2009-04-12に最新の0.6.4.1がでたきり) Python3の事を考えれば今後はxlrd/xlwt/xlutilsを用いる方が良いでしょう。 xlrd/xlwt/xlutilsはその役割によって、三つのライブラリに分かれており、 xlrdは.xlsファイルを読み込むため、xl
このページを最初にブックマークしてみませんか?
『gumi Engineer’s Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く