Backlog-GuildWorksの集いでプロジェクト管理ツールのことを考えてみませんか?

みなさんの現場ではBacklogRedmineJIRAといったプロジェクト管理ツールを使っているでしょうか?

そんなプロジェクト管理ツールの1つであるBacklogを開発、提供しているヌーラボさんと「Backlog-GuildWorksの集い #1」を共催します。

続きを読む

2016年あけましておめでとうございます。

新年あけましておめでとうございます。

本年もどうぞ宜しく御願い致します。

昨年も瞬く間の一年となりました。この一年、お客様の新規事業や新規サービスの企画開発に邁進すると共にいくつかの取り組みも行いました。

一つは、仮説検証とMVP(minimum viable product)に焦点をあわせたコンテンストMVPアワードの開催。ソフトウェアの開発コンテストから一歩出て、検証すべき仮説の設定とその検証のためのMVPの構想、具現化を表彰するという内容のものでした。仮説検証とプロダクト開発の一体化を標榜する者達として、何を大事にしていきたいかという自分たちの意思も表すイベントでもありました。

次に、開発者ギルドカンファレンス。1年半どういった人たちで、どんな考えの下、何をしてきたのか初めて成果発表を行いました。多数の方に参加頂きました。ソフトウェアを必要とする人、つくる人、その役割の境界を越えるだけではなく、サービス作りという未開の地へ共に踏み越えていくんだという「越共」を掲げました。この機会に、まさに越共するお客様や仲間に出会うことができました。

三つ目に、発火ワークスHackCamp様と共に立ち上げたサービスです。アイデアソン、ハッカソンの仕組みをHackCamp様が担い、その後の仮説検証+プロダクト開発をギルドワークスが担うことで、アイデアの種をつくるところから、育てるところまで一気にできるようにする。これもまた越共の形の一つです。HackCamp様との越共、発火ワークスを通じて出会う方々との越共。

2016年も、いくつか企図を準備しています。面白そう、興味があると感じられるものがあればぜひ関わりを頂きたいと思いますし、私たちの方からも積極的に巻き込みにいきます。

さて、こうした活動を通じて、私たちが果たしたいこととは何か、どうありたいのかをまとめて、2016年の挨拶を締めくくりたいと思います。

ギルドワークスは、そのミッションとして、正しいものを正しくつくるを掲げています。常日頃様々な言葉を探し、使っていますが、私たちがその存在意義をどこに置くか突き詰めた際に残る言葉は「正しいものを正しくつくる」です。

何か絶対的な正しさがあるという前提に立てるわけではありませんし、それは危うさと隣合わせです。何かしら持っている課題を解決したい人たちが何を必要とするのかは状況、文脈に依ります。

ゆえに「間違ったものを作らない」を重ねる中で、関係者とともに向かうべき方向を探し続ける必要があります。私たちはそのための技能を提供していきます。そして、「正しいものと正しくつくる」を支える基本的な行動指針に越境を置いています。

最後に。ギルドワークスのビジョンに「世界の風景を変えていく」を描いています。正しいものを正しくつくるの先にあるのは、それぞれのプロダクトによってもたらされる成果。それは誰かの生活の変化だったり、習慣の変化、新たな行動の誘発であったりします。

結果として、日常の風景は変わるはずです。世界というと大きく聞こえますが、大小の話ではありません。世界の端っこからでも良い、誰かの見える風景が変わること、そして私たちも同じように変わる様を見たいという思いです。

2016年も、なにとぞ宜しく御願い致します。

ギルドワークスを代表して 市谷 聡啓

Photo via Visual Hunt

ギルドワークスの3つの事業の未来を描く合宿

普段リモートワークをやっているギルドワークスでは、2、3ヶ月に一度を合宿を行っています。
これまでの合宿の様子はギルドワークスの合宿風景ワイガヤミーティング-自分達のことを語り合う場-などを御覧ください。

合宿場

2015年最後の合宿を12月も押し迫った先日の日曜、月曜に行いました。
場所は何度もお世話になっている味な宿 静観荘です。
ここは周りが閑静で、和室でゆっくり話せ、何よりご飯が美味しいので、よく利用させてもらっています。
20151221_072237

20151220_131715

20151220_131800

どんな話をしたか?

ギルドワークスでは大きく3つの事業があります。
1つは「正しいものを探索する価値探索」。
もう1つは「正しくつくる開発」。
最後は「正しいものを正しくつくる現場を増やす現場コーチ」です。

この合宿では、ギルドワークスのそれぞれの事業のあるべき理想像、そこに至るまでに様々な課題を洗い出し、その課題をどうやって倒していこうと思っているのか?という点で色々議論をしました。
このような議論になった際に「過去がどうだったか?」にこだわるあまり未来に目が向かない場合もあります。しかし、ギルドワークスの合宿では、過去は「未来を良くするための学び」という感覚であり、その学びを未来の作戦に向けてどう活かしていくか?という姿勢がとても強く出ます。

夜は、美味しいご飯、お酒と共に、この1年で仲間になった4人を中心に「ギルドワークスで実際に一緒にやってみて」という切り口での感想などを話しあったりしました。
思えば4人で立ち上げたギルドワークスも2倍以上の9人になっていました。

20151220_183226

20151220_183303

20151221_072929

翌日は「価値探索カンファレンス」

翌日は朝ごはんを食べ、個人の目標を共有した後、東京都内に取って返し「価値探索カンファレンス」を開催しました。
こちらには平日昼間にかかわらず20人強の方参加いただき、また終わった後も色々と質問をいただきました。この価値探索カンファレンスでの話の詳細はそれぞれ発表したメンバーが順次ブログにアップする予定です。

このような感じで普段はリモートワークをしながらも、時に合宿をして膝を突き合わせ「正しいものを正しくつくる」ことを実現しようとしているギルドワークスに興味を持たれた方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください。

Photo via VisualHunt.com

RailsでGoogle Cloud Visionを使って画像とテキスト認識をしてみる

水谷です。

前回の記事でTensorFlowをアプリから呼び出して画像に何が写っているか認識するアプリを紹介しました。

その後、Google Could Vision APIの発表があり、より画像認識を使いやすいかたちで提供されることになりました。

発表ブログ

Could Vision APIが何なのかやそのすごさはこちらの動画を参照してください。

先行プレビューの登録ができたので、ここではRailsアプリに組み込んで使ってみたいと思います。

画像認識

前回の記事と同じように、写真にあるものを認識してみましょう。

まず、APIには以下の形式で送信します。

{
  "requests": [
    {
      "image": {
        "content": "jisYIujijJIUJI...."
      },
      "features": [
        {
          "type": "LABEL_DETECTION",
          "maxResults": 10
        }
      ]
    }
  ]
}

contentにはBase64でエンコードした画像ファイルをいれます。typeには写真の中に何があるかを認識されるためのLABEL_DETECTIONを指定します。

レスポンスは下記のようなJSONになります。

{
  "responses": [
    {
      "labelAnnotations": [
        {
          "mid": "/m/07dm6",
          "description": "tiger",
          "score": 0.9995195
        },
        {
          "mid": "/m/01280g",
          "description": "wildlife",
          "score": 0.96001059
        },
        {
          "mid": "/m/09686",
          "description": "vertebrate",
          "score": 0.85704827
        },
        {
          "mid": "/m/04rky",
          "description": "mammal",
          "score": 0.85094059
        },
        {
          "mid": "/m/089v3",
          "description": "zoo",
          "score": 0.788213
        },
        {
          "mid": "/m/0cdnk",
          "description": "panthera",
          "score": 0.73796427
        },
        {
          "mid": "/m/0307l",
          "description": "felidae",
          "score": 0.57086021
        },
        {
          "mid": "/m/01lrl",
          "description": "carnivora",
          "score": 0.56989247
        },
        {
          "mid": "/m/0891tx",
          "description": "toyger",
          "score": 0.52950406
        }
      ]
    }
  ]
}

labelAnnotationsに認識した物体をその物体である可能性を示すscoreとともに配列で返ってきます。

今回は簡単にscoreが高いものを表示するようにします。実際のコードはこちらを参照ください。

GitHub

それでは結果をみてみましょう。

虎

ちゃんとtiger(虎)と認識しましたね。

もう一つやってみましょう。

クマ

これも、brown bear(クマ)と認識してくれます。

テキスト認識

Google Cloud Visionのもう一つ文字を認識する機能があります。それを試してみましょう。

まず、リクエストからみてみましょう。

{
  "requests": [
    {
      "image": {
        "content": "Yjiijijii54ji...."
      },
      "features": [
        {
          "type": "TEXT_DETECTION",
          "maxResults":10
        }
      ]
    }
  ]
}

先ほどの画像認識と同じような内容で、typeにTEXT_DETECTIONを指定します。

レスポンスは次のようになります。

{
  "responses": [
    {
      "textAnnotations": [
        {
          "locale": "ja",
          "description": "アルバイト募集\\n一緒にお店を盛り上げてくれる\\n仲間を募集しています。\\n業 務内容:ホール·厨房\\n年 齢:18歳以上\\n時給:アルバイト希望900円以上\\n社員希望相談\\n●シフト制\\n昇給あり\\n食事付き\\n·制服貸与\\n/※まずは、お電話またはスタッフまでお問い合わせください。\\nTEL : 04674485n担 当体木\\n",
          "boundingPoly": {
            "vertices": [
              {
                x: 275,
                y: 742
              },
              {
                x: 1910,
                y: 742
              },
              {
                x: 1910,
                y: 2908
              },
              {
                x: 275,
                y: 2908
              }
            ]
          }
        }
      ]
    }
  ]
}

descriptionに認識したテキストがはいります。

それでは、実際に写真をあげた結果はこのようになります。

0

ほぼ、認識できてますね。

手書きの場合も試してみましょう。

1

おしいですね。やはりところどころ認識できてないです。ただ、数字はちゃんと認識できてます。

まとめ

今回ご紹介した機能以外にも、顔、ロゴや建物などのランドマークなども認識することができます。

いままでも画像認識やOCRなどの技術はあったものの精度の面で不安があり、実際にサービスに使うためにはいくつもの壁を越える必要がありました。このGoogle Cloud VisionではGoogleのサービスの中で蓄積されたデータを基にしているので高い精度を期待できるのではないでしょうか。

そういえば、Google Photoがでた当初、「結婚式」と入力して結婚式で撮った写真が一覧にでたあの衝撃を思い出します。その技術がこんなにも手軽に使えるのはとてもわくわくしますね。

この記事を読んでギルドワークスに興味を持たれた方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください。

CircleCI から Elastic Beanstalk にデプロイする

こんにちは、ギルドワークスの上野です。

ギルドワークスでは、開発したアプリケーションを Elastic Beanstalk を利用してデプロイ、運用しています。

EB CLI を入れることで、コマンドラインからデプロイすることもできますが、
自動化したいってなりますよね。
そこで自動化のやり方を調べたので、ブログにも書いておきます。

ちなみに自分のローカル環境に構築する際は、以下のコマンドで簡単にインストールできます。(python や pip がインストールされている前提)

pip install awsebcli

ですが、僕の環境ではどうもアップデートが上手くできなくて、いろいろいじってたらぶっ壊れて動かなくなったりしましたw
brew で入れたら今のところ安定しています。

brew install awsebcli

1. circle.yml の設定


machine:
  python:
    version: 2.7.6

dependencies:
  pre:
    - pip install awsebcli

deployment:
  staging:
    branch: master
    commands:
      - eb deploy [env環境名]
  production:
    branch: production
    commands:
      - eb deploy [env環境名]

staging、production や branch の指定は任意です。
CircleCI の設定はこれだけです。

参考までに

CircleCI は結構いろんな指定ができるので以下の内容も確認してみてください。
https://circleci.com/docs/configuration

2.config.global.yml の設定

.elasticbeanstalk の下に config.global.yml を作成します。


global:
  application_name: [アプリケーション名]
  default_region: ap-northeast-1

application_name は Beanstalk を作成する際のアプリケーション名です。

3. CircleCI の設定

最後に CircleCI の設定に AWSのアクセスキー等を設定します。

Project Settings の AWS Permissions の中です。

スクリーンショット 2015-12-15 18.57.41

あとは、指定したブランチにマージされるとデプロイされます。
めっちゃ便利ですね。

ギルドワークスではデプロイの徹底的な見直しを通じて、「正しいものを正しくつくる」を実現しようとしています。コーチや開発など、お手伝いできることがあればぜひ、お問い合わせください

 

禅とソフトウェア設計技術

心の落ち着きは、技術的作業にとって決して表面的なものではない。これこそが重要なものである。心の落ち着きを生み出すものは、優れた仕事であり、それを破壊するものは悪い仕事である。仕様書、計量器機、品質管理、最終点検などはすべて、作業責任者に心の落ち着きを与えるための手段である。ここでは心の落ち着き以外に重要なものは何ひとつない。なぜかといえば、心の落ち着きこそが例の <<クオリティ>> を知覚するための前提条件だからである。

(※ 禅とオートバイ修理技術より(単行本 下巻164ページ) )

ギルドワークスさんとパートナーとして一緒にお仕事させていただいています、木目沢(@pilgrim_reds)と申します。

ソフトウェアにとって、心の落ち着きをもたらしてくれるもの、つまりは優れた仕事、 <<クオリティ>>を知覚できるものは何でしょうか?

Excelの設計書?
トランザクションスクリプトなソースコード?

これらを注意深く、完璧に仕上げたとして心に落ち着きを与えられるでしょうか?

変わり続ける仕様・業務の知識・ビジネス、100%なくすことができないバグが存在する前提がある以上、ソースとドキュメントとの乖離があるのではないかという不安と、ソースコードを変更するたびに他にも影響があるのではないかという不安は消えないのではないのでしょうか?

であれば、ソースコードに変更を加えることが容易になる設計手法こそが心に落ち着きを与えうる設計であると言えると思うのです。

私たちは、ドメイン駆動設計にその活路を見出し取り組んでいます。

それにしても、「心の落ち着き」と「<<クオリティ>>」を結びつけるということに意外であると思う一方、ソフトウェアに携わってきた経験上、妙な納得感がありました。
設計手法以外にも深夜・休日まで仕事をしてしまう、少ないコミュニケーション、要件定義・設計・開発など工程でチームが分かれる・・・などなど心を乱す要因はいろいろありそうですね。

最後に、心の落ち着きを生み出すために美味しい一杯のコーヒーを飲みましょう。。。

この記事を読んでギルドワークスに興味を持たれた方はお気軽に【ギルドワークスに依頼する】をご覧の上、お問合せください