タグ

ブックマーク / mixiengineer.hatenablog.com (53)

  • ミクシィスマホアプリ研修をオープンに開催します - mixi engineer blog

    はじめまして、mixiのiPhoneアプリ開発などをやっています武田です。 最近サントラ欲しさにスマブラを買いました。 さて、1年半ほど前に社内でのスマホアプリ研修を行い、その資料を公開したり電子書籍化などを行いました。 ただ資料も古くなっている部分などもあり、その更新も兼ねて第2回の勉強会を行うことになり、どうせなのでオープンな形で開催しようという運びになりましたのでお知らせいたします。 開催概要 1年半ほど前に社内のスマホアプリ研修で利用した資料をブラッシュアップしつつオープンな形で開催致します。まだスマホアプリ開発をやったことがなかったり、経験が少ないweb系エンジニアがアプリ開発をスムーズに始める一助になればと思います。 勉強会の内容としては、GitHubに上がっている教材を利用し、授業形式で進める予定です。時間は限られているので、自習すべきところや宿題などは随時お伝えします。

    ミクシィスマホアプリ研修をオープンに開催します - mixi engineer blog
  • OpenStackとLXCを導入した話 - mixi engineer blog

    こんにちは、運用部 アプリ運用グループの清水です。Golang鋭意勉強中です。 今回は、SNS「mixi」に限った話ではなく、ミクシィ社全体として利用している仮想環境について紹介したいと思います。パブリッククラウドも一部のサービスで利用していますが、今回は、自社で運用している仮想環境にフォーカスして書いてみようと思います。 今まで利用してきた仮想環境 今まで利用してきた仮想環境というと、手作業で構築したKVM(Kernel-based Virtual Machine)環境が中心でした。手作業といってもある程度手軽に構築できるように、シェルスクリプトとCobblerでVMを構築できるようになっています。構築の流れは以下のとおりです。 CobblerにVMのIPやホスト名などをスクリプトで登録する。 KVMのホスト上でスクリプトを実行(koanコマンドでCobblerと連携してVMをセットアッ

    OpenStackとLXCを導入した話 - mixi engineer blog
  • プログラマではありませんが、プログラマの話をさせてください - mixi engineer blog

    はじめまして。8キロのダイエットに成功しましたが、最近リバウンド気味の土戸と申します。 私は今、弊社イノベーション・センター案件である、Plannah(プランナー)のプロダクトマネージメントとマーケティングに携わっております。 先日我がチームの開発メンバーである衣川から、簡単にPlannahの紹介がありました。多くの方々に記事を読んで頂き、そしてPlannahに関心を持って頂き、大変感謝しております。日は、Plannahの話は割愛させて頂き、ちょっとしたプログラマ話(?)をしたいと思います。 私はプログラミングを職業としているいわゆる"プログラマ"ではありません。ミクシィに新卒入社した2009年からしばらくは営業マンでしたし、その後も今に至るまでサービスディレクターとして勤めてきました。少しさかのぼって、小学校の頃は当時流行っていたGW-BASICでmud gameなどを作ってみたり、大

    プログラマではありませんが、プログラマの話をさせてください - mixi engineer blog
    Watson
    Watson 2013/11/03
  • 続・技術的負債の把握と改善を促すために - mixi engineer blog

    こんにちは, 先日Kansai.pmで発表させて頂いたgoccyこと五嶋@たんぽぽグループです. 今回は, 前回紹介した技術的負債の把握と改善を促すためにの続編として, 僕が作ったPerl5コードのコピペ検出器について紹介させて頂きます. はじめに 今やPerl, Ruby等さまざまな言語で, 便利なライブラリ群やフレームワークを利用できる時代になりました. これらを使うことでソフトウェアの開発コストは格段に下がり, より素早く開発することができるようになっています. しかし, 当初予定されていた機能を実装して, 「よしできたから終わり!」というわけにもいきません. 何か物を生み出せば, 必ずそれを保守・運用するコストが発生します. 開発することが便利になった今, 開発物を保守・運用することを支援するツールも求められています. ですが, 保守や運用, とりわけ保守に関して支援するツールはそ

    続・技術的負債の把握と改善を促すために - mixi engineer blog
    Watson
    Watson 2013/03/13
    コピペ検出ツール
  • Androidの機種依存問題を吸収するプロジェクトAndroid-Device-Compatibilityを公開したお話 - mixi engineer blog

    こんにちは。Androidユニットで開発とスクラムマスターをしています、横幕です。すっかり寒くなって、朝起きるのが辛い季節になりました。 先日、Android(TM)の様々な機種に依存する問題を吸収するためのライブラリプロジェクトをmixi, IncのGitHubリポジトリで公開しました。 今回は、このライブラリプロジェクトを公開するに至った経緯をお話しようと思います。 様々な種類の端末に対応するために乗り越えてきた困難 現在、Androidを搭載した端末には、多種多様なものがあります。 そして、OSのバージョンごとの違いだけでなく、同じAndroidを搭載していても、端末ごとに微妙に挙動が異なることがあります。 mixi公式クライアントアプリでも、端末ごとに微妙に挙動が異なることで発生する問題にいくつか直面してきました。 特定の端末で、文字が9,000文字までしか入力できない EditT

    Androidの機種依存問題を吸収するプロジェクトAndroid-Device-Compatibilityを公開したお話 - mixi engineer blog
  • mixiのサーバOS移行のお話 - 前回補足&インストール編 - mixi engineer blog

    こんにちは。新しもの好きが集まる運用部アプリ運用グループの清水です。 前回の記事では、多くの反響をいただきました。ありがとうございます。 Twitterや、はてブのほとんどのコメントを読ませていただきました。 みなさんのOSの宗派が垣間見えた気がします。 さまざまなコメントをいただいていた中で、よくある代表的なコメントについて、改めてこの場を借りてお答えしたいと思います。 2012年12月28日追記: 以下のQAにつきまして、いわゆる"ネタ"として書きましたが、誤解を招き、不適切な表現で不快な思いをされた方々へ深くお詫び申し上げます。 また、QAの一部に関わるところですが、OS標準のパッケージを否定するつもりは全くございません。 Linuxを安心して使うことができるのは、Linuxディストリビューションに携わっているデベロッパーの方々の素晴らしい活動や成果によるもの、というのが揺るぎない事

    mixiのサーバOS移行のお話 - 前回補足&インストール編 - mixi engineer blog
  • mixiへの認証を行ってくれる「OmniAuth-mixi」を公開しました - mixi engineer blog

    こんにちは。よういちろうです。Ruby on RailsやSinatraで作るWebアプリケーションに各種認証機能を手軽に追加できる機構として、「OmniAuthシリーズ」があります。これのmixi版を作ってみました。 OmniAuth-mixi - Github OmniAuthは、Strategyという形式で任意の認証プロバイダの実装を追加できるようになっています。OmniAuth-mixiを使うことで、OAuth2にてmixi Graph APIの認証認可を行い、People APIで認可ユーザのプロフィール情報を取得する、という処理を行ってくれます。 使い方は簡単です。Ruby on Railsの場合、まずGemfileに以下を追記します。 gem 'omniauth-mixi' 次に、config/initializers/omniauth.rbファイルを以下の内容で作成します。

  • Delight.ioでテストアプリの画面録画!(Webも) - mixi engineer blog

    どうも、佐野です。先日こちらの記事でDelight.ioというフレームワークを知りました: デベロッパは自分のiOSアプリに1行書き加えるだけで、ユーザのアプリ使用セッションをビデオで記録し、彼らがアプリを操作するときのタッチスクリーンの使い方、などをチェックできる。 おー、こりゃすげぇ!ということで早速試してみたのでレポートします。 インストールはとても簡単。Quick Start Guideに従って、 Delight.ioでアカウント登録 (GitHubTwitterアカウントが必要) 続けてアプリを登録して、AppTokenを取得 Delight.frameworkをgithubからcloneし、対象のXcodeプロジェクトに追加 その他6つのframeworkを追加し、 "Other Linker Flags" に -ObjC を指定 プロジェクト内のコードに [Delight

    Delight.ioでテストアプリの画面録画!(Webも) - mixi engineer blog
  • UIView拡張カテゴリによるUIコーディングの簡略化 - mixi engineer blog

    はじめまして、佐野です。僕は2006年10月にメンバー4人でネイキッドテクノロジー社を創業し、5年間ガラケーからスマホに渡るまでモバイル関連の技術・サービス開発に携わり、去年の10月にミクシィ社にジョインし、現在はmixiのiPhoneアプリの開発に携わっております。このブログではiOSプログラミングの初級者~中級者向けに、さらなる上達の助けになるようなことを書いていきたいと思います。 Apple 製の iOS/Mac アプリの統合開発環境であるXCodeは、ver4 から GUI ベースの UI 開発ツールである Interface Builder が組み込まれ、非常に快適にUI開発ができるようになりました。mixi の iPhone/iPad アプリも基的には各画面が IB ファイルで構成されています。静的な画面であればこれだけで済むのですが、アニメーションを多用したインタラクティブ

    UIView拡張カテゴリによるUIコーディングの簡略化 - mixi engineer blog
  • Blocksを使ったHTTPリクエスト - mixi engineer blog

    聖闘士星矢Ωが、思ったより面白くて小宇宙が軽く爆発しそうなk_kinukawaです。 今回は、iOSアプリでHTTP通信を行うときの話です。 2012年4月27日 「メインスレッド上で処理している」について一部修正 従来のNSURLConnectionは、レスポンスをdelegateでハンドリングしていました。 そのため、リクエストを投げる箇所とレスポンスを受ける箇所がコード上で離れてしまい、可読性がよくありませんでした。 また、レスポンスを受け取ったあとの処理についても、delegate内で条件分けをして処理をしているうちに分岐/ネスト地獄になりがちでした。 一方、iOS5からNSURLConnectionにsendAsynchronousRequest:queue:completionHandler:というメソッドが誕生しました。 引数を見る限り、GCDを使って非同期リクエストをする系

    Blocksを使ったHTTPリクエスト - mixi engineer blog
  • UIAlertView の delegate 束縛を解放しよう - mixi engineer blog

    どうも、佐野です。今回は UIAlertView の拡張カテゴリを作って、delegate ではなく Block でコールバック処理を記述するための拡張カテゴリの作り方を紹介します。 iOS4 から Objective-C では Blocks という独自のクロージャ機能が搭載されました。これによってアニメーションの記述やコールバック処理などグッと直観的・効率的に記述できるようになったのですが、残念ながら UIKit によって提供されているクラスの多くはまだ Blocks に最適化された作りになっていません。UIAlertView もそのひとつです。 UIAlertView は、その delegate を実装することでユーザアクションに対する処理を記述する訳ですが、どうも使い勝手が悪い。例えば、同じで画面内で2通りの UIAlertView を表示するような UIViewController

    UIAlertView の delegate 束縛を解放しよう - mixi engineer blog
  • GHUnitで単体テストをしてみよう - mixi engineer blog

    初めまして。プログラマのショウといいます。 現在、mixiの公式iPhoneアプリを担当しています。 今回は、iPhoneアプリ開発におけるGHUnitを用いた単体テストについて紹介したいと思います。 ★ テストとは 題に入る前に少しだけ、テストという概念について整理してみましょう。 ソフトウェアを開発する上での「テスト」という言葉は、「コンピュータのプログラムを実行し、正しく動作するかを確認する作業のこと」を指します。 そしてこの「正しく動作するかを確認する方法」として主に以下の2通りがあります。 ・ ホワイトボックステスト ・ ブラックボックステスト ホワイトボックステストとは、「命令網羅」「分岐網羅」「条件網羅」などの方式を用いて、プログラム内部の動作がプログラマの意図通りとなっているかを確認するものとなります。 これに対してブラックボックステストとは、プログラム内部に関係なく、外

    GHUnitで単体テストをしてみよう - mixi engineer blog
  • 絵文字だョ! 符号化文字集合(前編) - mixi engineer blog

    先日取り上げて頂いたテック総研のインタビューでは残念ながら時間の都合で、ろくろを回す事が出来なかった、iPhoneアプリ開発担当の七尾です。いやー残念。 先日お伝えしたAppleカラー絵文字文字コード表にUnicodeコードポイント、UTF-8、SoftBankUnicodeも追加したので、お知らせします。 iOS Emoji - GitHub Pages ついでに各種変換処理なども書いたり、Unicodeの仕様を調べたりしたので、文字コードのおさらいとして、いくつかUnicode絵文字を扱う上での注意点についても、メモしておこうと思います。と思ったら結構な分量になってしまったので、前半と後半に分けてお送りします。 UnicodeSet そもそも絵文字ってどこからどこまで?という問いに答えてくれるのが、UnicodeSetです。 よく使われるものだと\p{Han}(漢字の範囲を示す)だとか

    絵文字だョ! 符号化文字集合(前編) - mixi engineer blog
  • iOSのMobile Safari上でのfocus()が妙な件を調べてみた - mixi engineer blog

    こんにちは。ミクシィUX統括部にて、mixi Touchの開発を担当しております戸高です。 JavaScriptでの開発を行う事が多いのですが、iOSのブラウザ(Mobile Safari)のfocusの挙動について少しクセがあり、 調べてみましたので、お知らせいたします。 通常、<textarea>や<input type=”text”>等のフォーム要素に対して、フォーカスを与えたい場合、focus()メソッドを使用します。 iOSのブラウザ(以下、Mobile Safari)にて、以下のコードを実行してみます。 (分かりやすい様にjQueryを使用させて頂きました) なお、検証端末にはiPhone4S iOS5.0(9A334)を使用しています。 HTML <!DOCTYPE html> <html> <head> <meta http-equiv=”Content-Type” con

    iOSのMobile Safari上でのfocus()が妙な件を調べてみた - mixi engineer blog
  • Appleカラー絵文字文字コード表(UTF-16) - mixi engineer blog

    期末のお忙しいところ失礼致します。iPhoneアプリ開発担当の七尾です。 iOS5がリリースされてしばらく経ちましたが、iOS5の新機能のひとつである、Appleカラー絵文字についてUTF-16な文字コード表を作りましたので、お知らせ致します。 iOS Emoji - GitHub Pages テーブルの横幅が大きくなってしまったので、GitHub Pagesに乗せてしまいました。 また、画像数が多いので、GitHub Pagesで公開しているものは、カテゴリごとのhtmlに分割しています。統合版htmlはmasterブランチに入っていますので、必要な方はそちらをご利用ください。 iOS5からどこでも入力できるようになった絵文字は見た目はSoftbankのUnicode絵文字ですが、実体はAppleカラー絵文字(Unicode6互換)に変わっています。 ちなみに従来のSoftbank Un

    Appleカラー絵文字文字コード表(UTF-16) - mixi engineer blog
  • mixi for iPad Ver 2.0 リリース記念 iPad 風フォトビューアの作り方 - mixi engineer blog

    初めまして。11 新卒の田村と申します。 好きなべ物は卵でございます。 現在は iOS 公式クライアントアプリ開発を行っており、主に mixi for iPad の開発を行っております。 そんなおり、12/14 に mixi for iPad Ver. 2.0 がリリースされましたー!88888 今回のアップデートの目玉機能は コメント、メッセージのプッシュ通知機能 mixi フォト用フォトビューア機能 でございます。私はこのフォトビューアの開発を行っておりましたので簡単に宣伝させていただきます。 今回の mixi フォト用フォトビューアは、mixi にアップロードされている写真を iPad の大きな画面で閲覧することができ、更にそこからその写真に対してイイネ、コメントを簡単に行うことができます。iPad ならではのシームレスな操作感を実現しておりますので iPad をお持ちの方は是非お

    mixi for iPad Ver 2.0 リリース記念 iPad 風フォトビューアの作り方 - mixi engineer blog
  • Jenkins はじめました + ほか3つ - mixi engineer blog

    こんにちは。加藤和良です。 まずあの話を書いて、それを前提にあの話を書いて、みたいなキューが筆者の中にはあったのですが、正直キューの先端につまってる話はだんだん個人的な関心および記憶がうすれてきました! 昔のはなしですからね。 というわけで、最近のまとめをさらっと書いて、新しいネタをすぐ書ける状態にリセットしたいと思います。 Jenkins mixi ではバージョン管理システムとして Subversion を使っています。安定した、いつでもリリースできるバージョンを trunk に、開発中の機能は branches 以下に作業ブランチをつくり、レビューや QA などの後に trunk にマージする、という運用です。 Buildbot はこのうち trunk だけを追っていたのですが、徐々に「このブランチBuildbot で追うようにして、結果をこの IRC チャンネルに書きこんでほしい

    Jenkins はじめました + ほか3つ - mixi engineer blog
  • Flash?いいえ、HTML5です: ファイルのドラッグ&ドロップによるフォトアップロード機能について - mixi engineer blog

    はじめまして。コミュニケーションサービス開発部の澤と申します。コーヒーカレーをこよなく愛する新卒2年目の新米エンジニアで、弊社Webのフロントエンドを主に担当しています。最近はmixiスマートフォン版(mixi Touch)の開発にも精力的に取り組んでいます。 さて、日はPC版のmixiで1つの機能をリリースいたしました。ファイルをWebブラウザにドラッグ&ドロップするだけで写真をmixiフォトにアップロードできるもので、HTML5 File API※1を採用しています。記事ではこの機能について色々とお話をしたいと思います。 なにこれ? 以下では、ドラッグ&ドロップによるアップロード機能を「機能」と呼びます。 百聞は一見にしかずです。機能のプロモーションムービーがありますので、まずはこちらをご覧ください。 動画では下記を説明しています。 従来のアップロード方法からドラッグ&ドロッ

    Flash?いいえ、HTML5です: ファイルのドラッグ&ドロップによるフォトアップロード機能について - mixi engineer blog
  • IE8のアクセラレータを作ってみた - mixi engineer blog

    久しぶりにエンジニアブログ登場のmilanoです。 こんにちは。 さて、先週のことですが、mixiをさらにオープン化するためのさまざまな施策がリリースされましたね。 その中でも、個人的に気になるSimplePostに注目してみました。 突然ですが、エンジニアブログ読者のみなさまはFirefoxとかChromeとかが大好きだと思います。Internet Explorerを使っている人は少ないのかもしれません。 でも、私はInternet Explorerが大好きなのです。 そんなIEなんですが、IE8から追加された機能に「アクセラレータ」というものがあります。 IE8で文字を選択したりすると←こういうやつが出てきますが、これのことです。 こいつをクリックするだけで、選択した文字をGoogle検索したり翻訳したりすることができるものです。 ※Microsoftによる紹介ドラマはこちら 今回、S

    Watson
    Watson 2010/09/16
  • mixi大規模障害について 解明編 - mixi engineer blog

    こんにちは、システム技術部たんぽぽGの森です。 先日のmixi大規模障害の原因となったmemcachedの不具合の詳細な解明ができました。 再来週まで発表を見合わせようと思ったのですが、早くお伝えしたほうがいいと思いましたので公開発表致します。 memcachedとlibevent memcachedはlibeventというライブラリを使用してクライアントからの要求(接続、コマンド送信)を処理しています。 libeventを使用するにはevent_baseという構造体を用います。 main threadはmain_baseを使用します。 static struct event_base *main_base; ... int main (int argc, char **argv) { ... main_base = event_init(); ... /* enter the ev

    mixi大規模障害について 解明編 - mixi engineer blog