ドミノソフト公式ブログ

合同会社ドミノソフトの公式ブログです。

6月1日からのGitHub AI Creditsに備える

はじめに

CEOのuenoyamaです。

6月1日より、GitHub Copilotの課金方式がPremium Request Units(PRU)からAI Credits方式に変わりますね。
ドミノソフトでは、Copilot Businessを契約中なのですが、どのようなコストインパクトが起こるか、戦々恐々でした。
最近「AI Credits方式だったらいくらだったか」という、AI Credits Usageの4月分がダウンロード可能になったので、見たら目の玉が飛び出たので慌てて対策を検討した話です。

この記事は、ものすごいピンポイントですが、以下に該当する方には刺さる内容かと思います。

  • AI Credits Usageをダウンロードしたら目の玉が飛び出た。
  • Visual Studio EnterpriseのAzure Creditsなど、何らかのAzure Creditsを持っている。
  • ふだんはVisual Studio CodeのCopilot ChatやGitHub Copilot CLIを使っている。

ドミノソフトの月間コストインパクト

※1$=160円で試算

ドミノソフトの開発要員は20名です。なので20名分のCopilot Businessを契約しています。
Opus 4.7とかGPT-5.5はお高いので、GPT-5.4をメインに使っています。
毎月、PRU無料枠を超えるメンバーが何人か出てきますが、超過分は全体で$90程度なので、$19 * 20 + $90 = $470(7.5万円)ほどのコストがかかっていました。

これがAI Credits Usage方式で試算した結果を見たら、$2,472(39.5万円)と出ている!!
月間で$2,000(32万円)の増加、年間だと$24,000(384万円)のコストインパクト!!

GitHub Copilot のモデルと価格設定 - GitHubドキュメント

これを見ると、何でもかんでもGPT-5.4を使っていたのを、GPT-5.3-Codexするなどで多少は安くはできるようですが、GPT-5.4の高性能感を知ってしまっている今、モデルを下げるような選択は取りたくありません。
今はAIコーディングの過渡期なので、ここで良いモデルを使わないという選択は、ドミノソフトが生き残れるかどうか、というレベルでリスクだと思います。
むしろ、GPT-5.5を使えるような環境にしたい。

どっかにお宝は眠ってないかなー、といろいろ会社で契約しているものを見直していたところ、ふと気付きました。

Visual Studio EnterpriseのAzure Creditsの活用

ドミノソフトでは、全従業員にVisual Studio Enterpriseのライセンスを提供しています。
このライセンスには、毎月$150のAzure Creditsが付加されているのですが、おそらく、みんな使ってない。
ってことは、このCreditsでAIモデルを動かしたら、Bring Your Own Key(BYOK)の仕組みで、その分を無料で使えるんじゃないか!?

Microsoft Foundryを用いたBYOK構成の設定

1. Microsoft Foundry (旧 Azure AI Studio) にGPT-5.4をデプロイする

  • 【新しいFoundry】のトグルをOnにする。

  • プロジェクトの選択画面で【新しいプロジェクトの作成】を選択すると、上記のプロジェクト作成画面が出てくるので入力する。
  • サブスクリプションには、Azure Creditsのあるものを選択する。他は適当に入れる。
  • Microsoft Foundryリソースはドメイン名にも使われるため、世界でユニークでなければなりません(重複している場合はエラーが出ます)。
  • ここでデプロイしようとすると、クォータ不足というエラーが出る可能性があります。
    • ドミノソフトでは、出る人と出ない人がいました(昔からAzure使っていた人は出なくて、今回を機に使うようになった人には出てる感じ?)
    • このページの下部に、クォータ要求の補足を書いていますので、そちらも参照ください。

  • デプロイが始まるのでしばらく待つ。

  • デプロイが完了したら、ようこそ画面が出るので✕で閉じる(進めていくとエージェント作成を進められるが、今回はモデルのデプロイなので)
  • 閉じた後、上部の【新しいFoundry】をOFFに戻す。

  • 左のメニューから【モデル カタログ】を選択し、GPT-5.4を選択する。

  • 【このモデルを使用する】を選択する。

  • デプロイ名は、デフォルト(gpt-5.4)のままだとVSCodeで標準のモデルとバッティングして表示されないことがあるので、byok-gpt-5.4とかmy-gpt-5.4などに変えておきましょう。
  • デプロイの種類は【グローバル標準】のままでOKです。興味のある方は Understanding deployment types in Microsoft Foundry Models - Microsoft Foundry | Microsoft Learnを参照してください。
  • デプロイの詳細で【カスタマイズ】押し、【1分あたりのトークン数レート制限】を最大にまで上げておきましょう。
    • これをやって、400K以上にしておかないと、Agentモードの処理でリミット制限に引っかかってしまいます。
  • 確認したら【デプロイ】を押します。

  • 左部メニューから【概要】をクリックした後、エンドポイントとキーのパネルから【Azure OpenAI】を選択し、Azure OpenAI エンドポイントのURLをメモしておきます。

  • 左部メニューからマイアセットの【モデル + エンドポイント】を選択して、エンドポイントのキーをコピーしてメモしておきます。
  • この画面にも【ターゲットのURI】がありますが、以降で使うURIは【概要】の方のURI(後ろに/openai/v1が付いていない方)です。

2. Visual Studio Codeに設定する

  • Visual Studio Codeを起動し、Ctrl+Shift+PからChat: Manage Language Modelsを開く。

  • 言語モデルウィンドウの【+モデルを追加...】ボタンを押して、Azureを選択する。

  • グループ名には分かりやすい名前を付けてEnterを押す。

  • apiKeyには【モデル + エンドポイント】でコピーしたエンドポイントのキーを入力し、Enterを押す。
  • 入力後、chatLanguageModels.jsonが開くので、以下を入力して保存する。
  {
    "name": "My Models",
    "vendor": "azure",
    "apiKey": "${input:chat.lm.secret.-75a7d24e}",
    "models": [
      {
        "id": "byok-gpt-5.4", // ここは「デプロイ名」と合わせること
        "name": "My GPT-5.4",
        "url": "<Azure OpenAI エンドポイントを貼る>",
        "toolCalling": true,
        "vision": true,
        "thinking": true, // これを足すとThinking Effortを選択できるはずだが、まだ動かない
        "maxInputTokens": 272000, // 272Kトークンを超えると2倍料金
        "maxOutputTokens": 128000 // 最大128Kトークン出力
      }
    ]
  }
  • 保存後、Ctrl+Shift+PからDeveloper: Reload Windowを実行する。

  • Copilot Chatを開き、モデル選択の欄に表示されていれば成功です。

3. Github Copilot CLIに設定する

※以下はWindows環境での設定です。

システム環境変数の設定画面に移動し、以下を設定する。

  • COPILOT_PROVIDER_BASE_URL: [Azure OpenAI エンドポイント]
  • COPILOT_PROVIDER_TYPE: azure
  • COPILOT_PROVIDER_API_KEY: [VSCodeのapiKeyに入れたもの]
  • COPILOT_MODEL: byok-gpt-5.4(「デプロイ名」と合わせること)
  • COPILOT_PROVIDER_WIRE_API: responses
  • COPILOT_PROVIDER_MAX_PROMPT_TOKENS: 272000
  • COPILOT_PROVIDER_MAX_OUTPUT_TOKENS: 128000

copilotコマンドを実行し、モデルがbyok-gpt-5.4となっていれば成功です。

補足(クォータ要求が必要な場合)

  • 【すべてのクォータを表示する】をOnにして、Global Standard -> gpt-5.4 -> Japan Eastの横にある【クオータの要求】を押す。
  • Microsoft Foundry Service: Request for Quota Increaseのページが開くので、入力して送信する。以下は入力のヒント。
    • Subscription Id: Microsoft Foundryのプロジェクトの概要ページの右側にある【プロジェクトの詳細】に記載あり
    • Justification: I would like to use GPT-5.4, but I am unable to do so because my allocated quota is zero.(gpt-5.4使いたいのにクォータがゼロなんよ~、とか書いておく)
    • Model Type: Azure OpenAI
    • Model Deployment Quota or Fine Tuning Quota: Model Deployment (PTU/RPM/TPM)
    • (Azure OpenAI) Quota Request Type: Global Standard
    • (Azure OpenAI) Global Standard Quota: 1000 (gpt-5.4のTPMは1:1000なので、Tier1の上限に合わしておく)
  • クォータの増量申請はすぐに反映されるわけではんく、数時間から1日程度はかかることもあるので気長に待つ。

さいごに

ひとまずはAzure Creditsで急激なコスト増への対策を行ったわけですが、今後もAI Modelの値上げなどによるコストインパクトは起こるものとして考えた方が良いでしょう。
今までがキャンペーン価格で安かっただけでしょうし。
先を見据えると、GPT-5.4ではなくKimi K2.6などのオープンなコーディング特化モデルを試す(値段がGPT-5.4の半額以下)など、いろいろとコストバランスの取れたAIモデル調査をしておく必要がありそうです。

We're Hiring

こんな感じで、ドミノソフトでは日々お宝を探しながら、できるだけ最新のAI環境を開発者に使ってもらえるように頑張っています!
そんなトレジャーハンターCEOと一緒に働いてみたいなー、と興味を持ってくれた方は、HPのCONTACTからお気軽にご連絡ください! ドミノソフトでは一緒に働く仲間を募集中です!

Transformerとはなにか

はじめに

こんにちは! ドミノソフトのkimi_dominoです。

以前ニューラルネットワークとはなにか?という記事を書き、最も基本である順伝播型ニューラルネットワーク(多層パーセプトロン、MLPとも言う)について説明しました。

blog.dominosoft.co.jp

今回は近年のLLMの主流であるTransformerアーキテクチャについてざっくりと説明しようと思います。

Transformerアーキテクチャ

Transformerは近年のLLMで最も基本的なアーキテクチャで、2017年にGoogleが発表しました。 arxiv.org

Transformerアーキテクチャ(Wikipediaより引用)

大きく分けてエンコーダデコーダから構成されていて、テキストをInputとしてエンコーダで解釈し、デコーダで新たなテキストを生成する、という役割を担っています。

近年では、エンコーダとデコーダをそれぞれ単体で使うことが多く、得意なタスクが異なります。

  • エンコーダのみ(2018年:BERT):Inputをラベルに分類する
    • 例:商品のカスタマレビューをポジティブ・ネガティブにラベリングする
  • デコーダのみ(2018年:GPT):Inputに対して次の単語を予測する
    • 例:「日本一高い山は何か?」という問いに対して「富士山」と回答する

分割する理由はエンコーダ・デコーダ両方を使うと計算量が多くなるため、訓練に要する時間、InputからOutputまでの時間が長くなるからです。 しかし、より近年ではLLMのパラメータ数自体が増えてきて、デコーダのみであらゆるタスクに対して高い性能が出せるようになってきています(例:ChatGPT、Gemini、Claude)。 以降ではアーキテクチャで重要なポイントの触りだけ押さえます。

注意機構

Transformerの理解で重要な部分はAttentionです。Attentionとは「注意」のことで、計算される値です。

QueryKeyを共に{I, Ate, Sushi}とすると、注意の計算は図のようになります。

注意機構の計算の流れ。入力を I Ate Sushi としている。

注意の値\alpha 0 \lt \alpha \lt 1であり、QueryとKeyの関係が強いほど1に近い値が得られ、対応するValueが出力に対して支配的になります。例えば、「I」という単語は「Sushi」よりも「Ate」と強い関係があるべきで、「I」は「Ate」により注意を払うことが自然と言えます。

トークナイズと入力の埋め込み

トークナイズ

入力「I Ate Sushi」をそのままエンコーダ・デコーダへ入力することは出来ません。通常、エンコーダ・デコーダへの入力する前に、トークナイザを通すことでコンテキストを適切な形へ分割する必要があります。その役割を担うのがトークナイザで、LLMのアーキテクチャの一部です。エンコーダモデルであるBERTでは、「I Ate Sushi」は{[CLS], I, Ate, Sushi}という形の配列にトークナイズし、[CLS]は入力の始まりを意味しています。モデルによっては誤字の修正や、全角を半角に変換するなどの前処理が行われます。

入力の埋め込み

入力の埋め込みとは、{I, Ate, Sushi}の各単語を\textbf{I}=(1.0, 0.1, 0.1)^\top\textbf{Ate}=(0.4, 1.0, 0.4)^\top\textbf{Sushi}=(0.1, 0.1, 1.0)^\topのように、D次元ベクトル(例では3次元)で表します。

{I, Ate, Sushi}の埋め込みベクトル。Geminiで生成。

位置情報の埋め込み

入力{I, Ate, Sushi}に対して、単語の位置関係を記憶する方法が必要です。なぜなら、Transformerは配列を逐次処理するのではなく、並列に処理するため、位置情報を単語に埋め込む必要があります。

発表当初は正弦波関数を使った方法が紹介されていますが、ChatGPT4などのLLMではRoPE(Rotary Position Embedding)という方法が用いられています。これは、各入力ベクトルを\thetaの整数倍ずらした値を位置情報を埋め込んだ入力ベクトルとして再定義する方法です。注意機構に並列に入力しても、\thetaの回転角から相対的な位置情報を反映することができます。

今回はここまで

今回はTransformerの触りとして、注意機構、トークナイズと入力の埋め込み、位置情報の埋め込みの説明でした。 まだまだ重要な部分があるのですが、長くなるので次回以降にまとめることにします!

ではまた~^-^

We're Hiring

ドミノソフトでは一緒に働く仲間を募集中です! HPのCONTACTからお気軽にご連絡ください! www.dominosoft.co.jp

Polyfillが効いてない問題の対処方法

はじめに

いよいよ2025年も終わりですね! CEOのuenoyamaです。
この記事は、開発中のQuasar Frameworkアプリケーション(Vue3ベース)で起きた、Polyfillが効いてないから起動しないよ問題を解決した話です。
会社の若い人向けに、どういう手順で解決に到達したか、参考になればと思って書きました。

何が起きたのか

当社で開発中のQuasar Frameworkアプリケーション(SPA)では、古いChromeでも動作する必要があるため、@vitejs/plugin-legacyにて、polyfills: trueの設定を入れて対応しています。
これで古いブラウザでも問題なく動作していたのですが、ある日、古いブラウザでの動作確認をしたところ、Array.at解決できず、起動に失敗していることが発覚しました。
(開発メンバーは、ふだんは最新ブラウザで確認していたので気付くのが遅れた)

その後、開発メンバーの1人が「なんでArray.atが解決できない?」を生成AIと相談して、modernPolyfills: trueを入れてpolyfills: ['es.array.at', 'es.typed-array.at']に直したら問題なく動作しました! というPull Requestを発行しました。
その時、私の中のコナンが疼きました。
「あれれー? それって設定が不足していたということだよねー? だとしたら、以前は動作していたことと合わないんじゃない?」

ステップ1 問題発生コミットを探す

とりえあず1ヶ月ぐらい前には動作していたような記憶があったので、まずはgitの1ヶ月ぐらい前のcommitをcheckoutしてresearchブランチとし、起動してみます。
そしたら何の問題もなく動作したので、あとは当該commitから最新commitまで(全部で50 commitぐらい)を、適当に3-5個ずつぐらいcherry-pickして起動を試します。
これを繰り返すと、見事に現象が発生する特定のコミットがわかりました。

ステップ2 問題発生箇所を探す

この該当コミット、修正量が少なければ良いのですが……変更したファイルは35、変更ステップは+582 -327。
グヘえ。チマチマとTry & Errorをしては時間がかかりすぎます。
なので、己のバグ嗅覚をたよりに、ざーっとコードを流して見ていきます。
ん? におう? なんだかクサイ変更があるぞ?
見つけたのは、とある設定の初期値を、グローバルオブジェクトとして持つようにしたコードでした。

const initialValue = {
  ....
}
const useXXXX = () => {
  const value = ref(structuredClone(initialValue));
}

という感じのコードです。
におう気がしたので、さらに各フィールドの修正を確認したところ、Array.atを使っている箇所を発見し、これを添え字アクセスに変更したところ、現象が起きなくなりました。

ステップ3 仮説を立てる

事件は……終わったのか……?
いや、これではmodernPolyfills: truepolyfills: ['es.array.at', 'es.typed-array.at']を入れたら現象が起きなくなった、という疑問が解消していない。
今回、Array.atを使っている部分を置換することで現象は起きなくなったが、また違う形で問題が再燃するかもしれない。

とりあえず、modernPolyfills: truepolyfills: ['es.array.at', 'es.typed-array.at']を入れたらどうなるのかを、quasar buildが出力する結果を並べて比較してみました。
polyfill関連なので、polyfillという言葉を含む出力と、問題が発生していたindex-xxxx.jsを見てみます。

(入れる前の抜粋)

Asset Size Gzipped
assets/index-xxxx.js 396.29 KB 133.09 KB
assets/polyfill-legacy-xxxx.js 209.41 KB 75.63 KB
assets/polyfill-xxxx.js 222.49 KB 81.74KB
assets/polyfills-legacy-xxxx.js 96.34KB 35.47KB

(入れた後の抜粋)

Asset Size Gzipped
assets/index-xxxx.js 396.29 KB 133.09 KB
assets/polyfill-legacy-xxxx.js 209.41 KB 75.63 KB
assets/polyfill-xxxx.js 222.49 KB 81.74KB
assets/polyfills-xxxx.js 138.41 KB 51.96KB
assets/polyfills-legacy-xxxx.js 96.34KB 35.47KB

なんか増えとるな……
polyfill-xxxx.jsよりもサイズが小さいな……
きっとこれがmodernPolyfills: trueで生成されたファイルなんだろう……
と思った瞬間、仮説が思い付きました。
index-xxxx.jsの前にpolyfill-xxxx.jsは読み込まれてないけどpolyfills-xxxx.jsなら読み込まれるのでは!

ステップ4 仮説検証

Chrome Developer Toolのネットワークタブで、ThrottlingをSlow 3Gにして、リロードした時の読み込み順を確認します。

(入れる前の処理順)

(入れた後の処理順)

ビンゴ!
index-xxxx.jsのDOMContentLoadedの前に、polyfills-xxxx.jsのDOMContentLoadedが終わっている!
というか、index-xxxx.jsと同時にpolyfills-xxxx.jsの取得が始まっている!

追加でindex.htmlの比較をしてみたところ、入れた後のファイルには、<head>に以下が増えてました。
<script type="module" crossorigin src="/assets/polyfills-xxxx.js"></script>

なるほどね……

ステップ5 結論付ける

Vueアプリケーションでは、最初にアプリケーションのメインコードであるindex-xxxx.jsのロードを開始します。
が、modernPolyfills: trueが指定されていると、index-xxxx.jsと同じタイミングでロードを開始するようです。

つまり、modernPolyfills: trueを指定したので、index-xxxx.jsと同じタイミングでロードが始まり、ファイルサイズが小さいこともあって先にDOMContentLoadedが終わる。
index-xxxx.jsのDOMContentLoaded後にスクリプト処理が始まった時には、すでにArray.atは使える状態になっているので問題にならなかった、ということなのでしょう。

ということは、modernPolyfills: trueの対策でも問題ないように思いますが、先にDOMContentLoadedが終わっているのは、ファイルが小さいことなどが要因であり、プログラムとして保証された動作ではありません。
なので、本当の対策は以下だと結論付けて、本事件は解決となりました。

  • 短期的には、グローバルオブジェクトの初期化は、Polyfillが必要なメソッドを使用しないようにする。
  • 長期的には、そもそもグローバルオブジェクトを使用しない設計にする。

「真実はいつもひとつ!」

さいごに

あとから気付いたのですが、トランスパイルしたファイルが難読化されていてもJSONのフィールド名は変化しないので、そっから調査を開始したらもっと早く問題となっているArray.atの場所が特定できて、事件解決は早かったかなーと思いました。修行修行。

We're Hiring

こんな感じで、私は今でもバグハンターとしてデバッグの最前線に立ってたりします! そんな泥臭いCEOと一緒に働いてみたいなー、と興味を持ってくれた方は、HPのCONTACTからお気軽にご連絡ください! ドミノソフトでは一緒に働く仲間を募集中です!

www.dominosoft.co.jp

大人レゴ

はじめに

こんにちは。ドミノソフトのnct-dsです。

もうすぐクリスマス!お正月!ですね! みなさまはどんなイベント日程をご計画でしょうか? 予定ギッシリの方、スッカスカの方、十人十色かと思います。

本日は予定スッカスカの方に向けて大人も楽しめるレゴ(過去に私が作ったもの)を簡単にご紹介いたします。 ちなみに私も予定スッカスカの人です。

手応えのあるドゥカティ!

www.lego.com

テクニックシリーズの「ドゥカティ パニガーレ V4 R」です。 646ピースで結構手応えがあります。 私はこちらが初レゴだったので7時間くらいかかってしまいました。

タイヤを回すと中のギアが連動して動きます。楽しげです。 満足感は得られますが後輪のスタンドの安定性がイマイチで倒れやすいのが難点ですね。

おしゃれなフラワーブーケ!

www.lego.com

ボタニカルシリーズの「フラワーブーケ」です。 特に花が好きなわけでもないのですが、なんとなく作ってみました。 756ピースありますが、ドゥカティよりずっと簡単です。

できあがったら是非とも花瓶に生けてください。 (花瓶に生けたものが弊社の受付に飾ってあります)

このおもちゃっぽさがイイんですよね。ドット絵に惹かれるような感じです。

和モダンな梅!

www.lego.com

ボタニカルシリーズの「梅」です。 Amazonのセールで安くなっていたので購入して作りました。

すぐできちゃいますが、こちらもインテリアとして楽しめるのでGOODです。 フラワーブーケと違って花瓶が要らないのも手軽でイイです。

枝振りにLEGOのセンスを感じますね。

風流な竹!

www.lego.com

ボタニカルシリーズの「ラッキーバンブー」です。

こちらも梅と同じ感じで、すぐできちゃいます。なんだか妙にかわいいやつです。

さいごに

いかがでしょうか?パズルや組み立て系の遊びが好きな人には特にお勧めですよ! 興味を持っていただけたら幸いです。

我が家のクローゼットには未組み立ての「菊」や「バラのブーケ」が眠っているので、この冬休みに作ろうかなと思っています。 (本当は大量の罪プラを消化したいのですが、まだ再開する気力が・・・)

おまけで作成の際の参考情報なんかを少しだけ。

  • 紙コップなんかにパーツを軽く仕分けておくとスムーズに作ることができます。(特にドゥカティは仕分けをお勧めします)
  • ボタニカルシリーズは、つや消しスプレーを吹くとマットな質感になって面白いです。
  • 私が作ったものは、パーツ不足はありませんでした。

以上です。それではみなさま良い冬休みを!

We're Hiring

ドミノソフトでは一緒に働く仲間を募集中です! ご興味のある方はHPのCONTACTからお気軽にご連絡ください! www.dominosoft.co.jp

趣味の話。アジア最大規模のコーヒーの展示会に行ってみた。

コーヒーの展示会
こんにちは、pom_1015です。

今回は大好きなコーヒー関係のお話。(仕事とは関係のない趣味のお話です)

2025年9月24日(水)~9月27日(土)の4日間、東京ビッグサイトでコーヒー好き大興奮のイベントが開催され、今年初めて足を運んでみました。 この展示会(SCAJ2025)では、世界中から多種多様なコーヒー豆、コーヒー関連の食品やグッズ、焙煎や抽出などの最新鋭マシン、器具の展示が行われ1日中楽しむことが出来ます。 業界関係者の方が多く集うイベントですが、一般の方の参加も大丈夫でして、コーヒーの知識を深めること、よりコーヒーを好きになることが出来ると思います。

楽しみ方は人それぞれ!会場では普段見かけることのない国や地域のコーヒー豆を使ったコーヒーの試飲が出来たり、生産者や輸入者の方のお話も聞くことが出来たりします。また、見どころの一つが日本一・世界一を決める様々な選手権が開催されること。抽出技術を競うものや8セット×3杯のカップから、一つだけ違う味のコーヒーを当てる競技など様々あり、今まで知らなかったコーヒーの世界にまた一歩足を踏み入れることが出来ます。

今回初参戦の私は、大好きなマシンと抽出器具やグッズ、ラテアートをメインに見てまわりました。 あれもこれも買いたい欲求をどうにかセーブして、2つだけグッズを買ってきました!

一つ目は、ティーポット。長く使っていると、うっかり割ってしまうティーポットですが、こちらは割れにくい素材でできていて安心感があります。あと、ティーをいれると少し困る出がらし(カス)をポットの 注ぎ口でキャッチできるのが非常に便利で購入しました。意外と、注ぎ口にフィルターがついているのは見たことがなかったので、面白いものを買えてよかったです。

ティーポット

二つ目は、ミルクピッチャー。カフェラテやカプチーノなどを作るときにミルクをマシンで温める際に使うもの。このピッチャーはプロのバリスタから多く愛されていたり、ラテアートの大会でも多く使用されている非常に人気の高いメーカーのピッチャーで、ずっと欲しかった2個目のピッチャーとして選びました。どうして、2個目を購入したかというと、ピッチャーの容量やスパウト(クチバシ)の形によって、ラテアートのやりやすい絵柄などが変わったりすること。あとは、カラーバリエーションやデザインも豊富なので欲しくなってしまいます。

ミルクピッチャー

今回購入したピッチャーは、シャープスパウトといい、その名の通り先端が細く尖った形状をしています。この形状によって細かいラインを描くアートがやりやすく、アートのレパートリーを広げやすくなります。最近、練習しているスワンやフェニックスにも良さそうなので、これからのカフェ時間が楽しくなりそうです。

ラテアート

本当は、見たもの全てここに載せてカッコよかったマシンなどお話したいですが、色々あるので気になった方はSCAJ2025公式サイトに昨年のSCAJ2024のダイジェストムービーが掲載されているので、そちらをご覧ください。

こんな感じで、今回もお仕事とは全然関係のない趣味のお話でしたが、 ドミノソフトでは一緒に働く仲間を募集中です! ご興味のある方はHPのCONTACTからお気軽にご連絡ください!

www.dominosoft.co.jp

サッカーはシステム開発と似ている

どうも、CEOのuenoyamaです。

私は趣味でサッカーをやっているのですが、最近、システム開発とサッカーは同じだなー、と感じるんですよね。 みなさんもそう思いませんか?

同じような状況でも同じ状況は存在しない

サッカーをプレーしていて一番感じることがコレです。 私はティエリ・アンリが好きでよく左WGのポジションをプレーするのですが、たとえばハーフウェーを超えたあたりのタッチライン近くでパスをもらった時に、ちょうど相手のサイドバックが対峙していて、中央に味方の中盤が走っていて、みたいな状況(ドリブルで縦を狙うか、中にパスを通してパス&ゴーを狙うか、いったんサイドバックにバックパスするか、超絶ロングシュートを狙うか)は何度経験したか数え上げたらキリがありません。

同じ状況といえば同じような状況なんですが、当然ながら、以下のような各種要因によって、適切な判断を下す必要があります。

  • 環境
    • 天気
    • 気温
    • 湿度
    • グラウンドが土か芝生か
  • 自分自身の能力/状況
    • 残り体力(ガッツ)
    • 走力
    • フィジカル強度
    • 膝の不安具合
    • 足首の不安具合
    • 腰の不安具合
    • 直近の食生活による体重増具合
    • 最近落ちてきたレーシック手術の効果
    • 試合前に飲み過ぎたポカリスエットの消化状況
  • 対峙するサイドバックの能力/状況(同上)
  • 中に走る味方との関係性
    • パスを出さないでドリブルして失敗したら怒るようなヤツか?
    • パスを出した後にゴーしたらリターンパスをくれるようなヤツか?
    • っていうかコイツはイイヤツだったっけ?

パラメーター多すぎぃ!

考えなければならないことは多数あるものの、大事なのはこれらを考慮して、「ドリブルかパスか」の決断をしなければならない、ということです。 で、パラメーターは多いものの、「走力さえ圧倒的であればドリブルで全部解決」みたいなこともありえます。

……これって、システム開発に似ていませんか? システム開発中も、様々なバグの発生、ステークホルダーからの無理難題、テスターからの改善要求など、いろんな状況が発生しますが、どれも似たようなことはよくある。 が、似ているけれど、完全に同じ状況というものは存在しない。 ただ、必ず決断を行う必要がある。 開発チームには何でも解決できるスタープログラマーがいるので、その人に任せれば何でも解決☆ なんてケースもある。これって走力で解決するのと似てる。

サッカーをやっていて、時々、「この人、判断を間違えないな-」っていうプレーヤーに出会うんですよね。

いわいる、サッカーIQの高い人。

別に走力がすごいわけでも、フィジカルがすごいわけでもない。運動量が多いわけでもない。 ただ、毎回、ドリブルしない思ったらドリブルして、パスしないと思ったらパスをする。 ディフェンスしていて、いつも逆を取られるような人。

そういう人って、きっといろんなパラメーターへの意識が常に巡らされているんだと思うんですよね。 だから瞬時に適切な判断ができる。 パラメーターへの意識が薄い人は、「前回ドリブルで成功したから今回もドリブル!」みたいな、同じような状況が同じ状況に見えるので、同じ決断でOK! で失敗するんですよね。

システム開発でも、できる人は瞬間瞬間のパラメーターへの解像度が高いんだろうな、と思います。

ってことで、私もすごいCEOを目指すべく、サッカーを頑張りたいと思います!

We're Hiring

ドミノソフトでは一緒に働いてくれる、サッカーとシステム開発が好きな仲間を募集中です! ご興味のある方はHPのCONTACTからお気軽にご連絡ください!

マイナビ転職フェアに参加しました!

はじめに

こんにちは! ドミノソフトのkimi_dominoです。 去年に引き続きドミノソフトは今年もマイナビ転職フェアに参加しました🥳

今回はフェア事後ブログです!準備編は以下の記事をご覧ください。 blog.dominosoft.co.jp

⚒️会場設営👷

10時に会場に到着し、ブースの設営をします。 私たちのブースは入口から遠い奥にあって、隣はオリエンタルランドさん。 果たして人が来てくれるだろうかと一抹の不安を感じながらポスターを貼ります。

できました!(ipadの写真が不穏😂)

長かった準備期間を経て来場者を迎える準備も万端!いよいよフェアが始まります。

✨🎀✂️🎊開場🎊✂️🎀✨

いよいよ来場開始!今年もたくさん勧誘するぞ~!

…………………

…………………

…………………全然人が、いない🙀🙀🙀

去年の半分…もしかしたらそれ以上に来場者が少ない…?

資料ブースで企業側は勧誘を行えるのですが、求職者1名に対して企業側10名くらいの割合です。 矢継ぎ早に話しかけられて参加者の方は大変だったかもしれません。が企業側も必死なので目が血走っています。 他参加企業のみなさんも同じことを感じたようで、資料ブース、ピラニア、という単語が各所から聞こえました。 そんな中最初に座ってくれた方々、本当にありがとうございました。

人いないな~いないな~と思いつつも、時間が経つにつれて来場者は段々増えてきました(それでも少ないが🥵)。 しかし、ドミノソフトのブースは通路真ん中よりに位置していたため周りのブースに来場者を取られる!! 私たち呼び込み部隊が活躍せざるを得ません🫡✨

資料ブースでドミノソフトのパンフレットを配りまくり、アピールしまくります。

…………………

…………………

本気を出した結果、ブースに座っていただける方も増えてきました😋!!

そして閉場...最終的に24名の方とブースでお話をすることができました! ブースに来ていただいた方々、パンフレットを受け取ってくださった方々、改めて本当にありがとうございました。

その後

閉場後、一日の頑張りを労うため上階にあるイタリアンレストランへ

疲れ果てるCEO、一日お疲れ様でした

最後に

準備編でも書きましたが改めて……

ドミノソフトは柔軟で、各々を尊重しあう空気が根付いている素敵な会社です。

マイナビ転職フェアで、それが一人でも多くの方に伝わったことを祈ります✨🙏✨

そして参加者の皆さんの、現状を変えようとする前向きな気持ちが少しでも報われますように👋😊🩷

We're Hiring

ドミノソフトでは一緒に働く仲間を募集中です! ご興味のある方はHPのCONTACTからお気軽にご連絡ください!

www.dominosoft.co.jp