【技術情報】LinuxでWindowsアプリを使う新しい選択肢?WinBoatを試してみた

今回、社員KさんがLinuxでWindowsアプリを使う新しい選択肢?WinBoatを試してみた

Linux上でWindowsアプリを動かす方法といえば、
WineWinApps が定番でしたが、最近 WinBoat という新しいツールが登場しました。

一部では「ゲームチェンジャー」とも言われていますが、
正直なところ、最初に見た印象は「WinAppsを今風にしたもの?」という感じ。
気になったので、サブPCに入れて軽く触ってみました。


WinBoatって何?

WinBoatは、

  • Windowsを VM(KVM)上で起動
  • アプリは RemoteApp(FreeRDP)経由 でLinux側に表示
  • セットアップは GUI中心

という構成のツールです。

仕組み自体はWinAppsと近いですが、
アプリストアっぽいUI が用意されていて、とにかく導入が楽なのが特徴。

「LinuxでWindowsアプリを使ってる感」を
できるだけ感じさせない方向を狙っているのが伝わってきます。


今回の検証環境

ホスト(Ubuntu 24.04.3)

  • CPU:Ryzen 7 5800U
  • メモリ:16GB
  • SSD:512GB

ゲスト(Windows 11 Pro)

  • CPU:4コア
  • メモリ:8GB

使ってみた感想

思ったより重い。でも悪くない

  • メモリが少ないと全体的にもっさりします
  • ゲームやVisual Studioは正直きつい
  • Office系なら普通に使える

ただ、VMwareのように
「Windows画面がドンと出てくる」感じではないので、
Linuxの作業を邪魔しないのはかなり好印象でした。


Windowsライセンスは要注意

  • Windows 11 Pro以上が必須
  • HomeだとRemoteAppが使えません

ここは完全に割り切りポイントですね。


UIはまだ発展途上

気になった点もいくつかあります。

  • アプリ起動時にWindowsデスクトップが一瞬見える
  • 複数アプリを起動してもパネルが1つにまとまる

RDP+RemoteAppの都合なので仕方ない部分ですが、
「アプリごとにウィンドウ管理したい人」には合わないかも。


ベータ版らしい粗さもあり

  • 起動しないexeがある
  • 現時点では、GPUアクセラレーション未対応
  • Cinnamonが落ちることがある
  • 日本語入力で変換候補が出ないことがある

完成度はまだこれから、という印象です。


向いている人 / 向いていない人

向いている人

  • Linuxがメインで、たまにWindowsアプリを使いたい
  • VMのWindowsデスクトップが邪魔
  • UIの多少のクセは気にしない

向いていない人

  • Visual Studioなど重いアプリを常用
  • Windows Proライセンスの購入を躊躇う場合
  • アプリごとにウィンドウ管理したい

まとめ

WinBoatは「革命的!」という感じではありませんが、
LinuxとWindowsを自然に共存させる方向性 はかなり良いと思いました。

個人的には、
Protonのように「完全互換を目指さず、実用性を重視する」考え方が成功の鍵だと思っていて、
WinBoatもまた、

WindowsをLinuxに持ってくる
というより
Windowsを“意識させない”

方向に進んでいるツールだと感じました。

Waylandが主流になりつつある今、

  • Wineは特化用途へ
  • RDP+RemoteApp型は共存路線へ

という流れは、案外自然なのかもしれません。

LinuxでWindowsアプリを使う世界、
気づけば結構進化していました。

Posted in エンジニアブログ, お知らせ |

【社内研修】「システム開発の基本」&「AIに何を任せるべきか」


今回の研修は、「システム開発の基本」と「AIに何を任せるべきか」の2本立てで実施しました。

講師のこれまでの経験を踏まえ、
「大切にしてほしい考え方」や「一般論として覚えておいてほしい視点」をピックアップした内容となっています。

昨今のAI技術の進化により、”手を動かす”という作業の多くは、徐々にAIに代替されつつあり、今後はAIを利用して価値を生み出す側に回ることが求められていきます。

また、たとえAIに直接関わらない案件や現場であったとしても、システム開発全般に関する知識や、より上流側の思考・視点に触れて吸収していくことで、エンジニアとしての価値を高め、他者との差別化を図っていくことが重要です。

今回の研修が、その第一歩となれば・・・と言う思いを持って開催されました。

実施日:2025年7月25日
対象:若手社員及び希望者
形式:講義/ワークショップ


①システム開発における基礎知識(手法・役割)について

今回は全5回のシリーズのうち、第2回目の開催です。

目的

・IT業界で働く上で欠かせないシステム開発の基礎知識を身につける
・より高品質な業務遂行につなげること、技術者としてのレベルアップ
・エンジニアとしての価値を高め、他者との差別化を図っていく

主な内容

  • ・要件定義から運用・保守までの各工程と成果物を解説
  • ・ウォーターフォール、アジャイル、プロトタイプ開発、DevOps の特徴と適用シーン
  • ・SE・PG・PM・PL・テスター等の役割とチーム内連携ポイント

学びポイント

  • ・自分の担当範囲がプロジェクト全体へ与える影響を把握できる
  • ・適切なコミュニケーション方法やドキュメント設計の基礎が身につく
  • ・手法選択の判断軸(コスト・スケジュール・変更頻度)を学ぶ
研修の様子

②「AIに何を任せるべきか」ワーク/設計・議事録補助など

最新のAI活用事例を交えながら、
業務の効率化や付加価値向上につながるスキルアップを目的に開催されました。

主な内容

  • ・AIの基礎と仕組み(ベクトル変換・行列計算・GPUの役割)
  • ・プロンプト設計について(背景説明・タスク指示・出力形式・制約条件など)
  • ・AI活用パターン(解析・要件整理・設計補助・コード生成・テスト設計・ドキュメント整形)
  • ・実践ワーク:プロンプト改善演習、画面作成デモ、提案プレゼンとして一人ずつ3分LT(ライトニングトーク)を実施

学びポイント

  • ・AIに期待できるアウトプットと限界を現場視点で理解する
  • ・運用ルール(品質チェック/責任所在)を意識した設計ができる
  • ・実験→評価→改善のサイクルを回すためのアイデアが得られる

当日の流れ

AIの概念について(前回のおさらい)(10分)
AI時代のSEについて(20分)
AIを使って画面作成(30分)
提案プレゼン(各参加者3分間LT)
まとめ&質疑応答(5分)
研修の様子

参加者の声 吹き出しアイコン

人型アイコン

基礎的なところはもちろん、視点が変わってSEの責任や職務を知れて良かったです。

エンジニア(入社1年目)

知っている内容が多かったが、知識の漏れもあったので改めて学べて良かった。次回以降は詳しく知らない範囲になりそうなので楽しみ。

エンジニア(入社3年目)

自身の経験からこうすることを気を付けるべき、意識するべきなど説明があったので、とてもタメになりました。発表やプレゼンの仕方なども勉強になりました。

エンジニア(入社6年目)

いかがでしたか?ギガシステムではこれからも定期的に研修や勉強会を開催する予定です。
社員一人ひとりが業務の効率化や価値創造に挑戦できる環境を整えていきます。
今回の研修が、今後の挑戦や成長の糧になることを期待しています。

 


Posted in エンジニアブログ, 学生さんへ |

【開発事例】汎用的な順番待ちシステム(LINE+WEB)

今回、商品開発室でLINEを利用した順番待ちシステムを作りました。

【概要】
1対1で予約を行うような業種に向けた順番待ちシステムです。
※クリニックで利用をイメージした場合
患者がクリニックにLINEから当日予約を取り、順番待ち状況がわかる。
また、クリニックの受付側で、予約状況がわかる。

【主な特徴】
・LINEアプリで順番待ち登録/状況確認/順番待ち中止
・LINEアプリに順番到来をメッセージで通知
・順番待ち状況画面で状況を一覧表示/順番をアサイン
・LINEが利用できない方に、
受付(クリニック)に設置されたタブレット(ダッシュボード画面)にて状況確認
及びLINEアプリなしで登録

【LINEアプリ利用画面】※ユーザー
「順番待ち登録画面」

「順番待ち状況画面」

【受付にあるタブレット(ダッシュボード)画面】※ユーザー

【PCなど利用したブラウザ画面】※運営側管理画面

【システム構成】

構築概要】
 ・Amazon RDSを利用せず構築
・サーバーレスで構築
・Amazon Cognito APIでカスタムログイン画面を実装

Posted in エンジニアブログ, 開発事例 |

【開発事例】カンテレドーガ 動画配信アプリ開発

◾️カンテレドーガ

  • 関西のテレビ局「関西テレビ」が運営する動画配信サービスです。
  • 2019年、Android・iOSアプリの保守としてプロジェクトに参加。
  • 2023年に大幅なリニューアルを実施し、さらなるユーザー体験の向上を図りました。
  • 2024年にはアプリの開発基盤をFlutterに移行することで、Android・iOSの両方に対応したアプリを一つの仕組みで開発・運用できる体制を構築。
  • これにより、開発・保守にかかるコスト削減と、どのプラットフォームでも変わらない快適なユーザー体験の実現を可能としました。

アプリはこちら

 

Posted in エンジニアブログ, 開発事例 |

【開発事例】〜AppleVisionPro〜アプリケーション開発(3)

Apple Vision Proの写真

前回記事で紹介した、空間にメモを配置するアプリの制作で工夫した点の続きを紹介します。
今回は「標準ウインドウや操作音」についてです。

メモウインドウの開閉

フルイマーシブ空間のアプリでも VisionOS 標準のウインドウを表示することができます。これによりメモ画面を SwiftUI で効率よく構築できます。

以下は付箋ピンがタップされた場合に、 `openWindow` でウインドウを開くコードの抜粋です。ここでは開くメモウインドウを1つに限定したかったため、先に `dismissWindow` を呼んでいます。しかし当時は `dismissWindow` 直後に `openWindow` すると前のWindowが開いていた位置に新しい Window を表示する挙動をしていたため、 ここでは 250 ms の遅延を入れています。

struct StickyNoteRealityView: View {
@Environment(AppState.self) private var appState
  @Environment(\.openWindow) private var openWindow
  @Environment(\.dismissWindow) private var dismissWindow
  @Environment(\.dismissImmersiveSpace) private var dismissImmersiveSpace

  :
  :
  var body: some View {
    RealityView { content in
    :
    :
    .gesture(
      SpatialTapGesture(count: 1)
        .targetedToAnyEntity()
        .onEnded { value in

    .gesture(
      SpatialTapGesture(count: 1)
        .targetedToAnyEntity()
        .onEnded { value in
          // 付箋ピンの場合の処理
          if (value.entity.name == ObjectIdentifier.stickyPin) {
            AudioServicesPlaySystemSound(SystemSound.SCREEN_SHARING_STARTED)
            let pinEntity = value.entity as! ModelEntity
            Task {
              dismissWindow(id: UIIdentifier.noteWindow)
              try! await Task.sleep(for: .milliseconds(250))
              let linkId = pinEntity.getLinkId() as! String?
              if linkId != nil {
                openWindow(id: UIIdentifier.noteWindow, value: linkId!)
                showTargetPlane = false
              }
            }
          }
          :

操作音について

視線とハンドジェスチャによる操作は、特に開発中は、ハンドジェスチャによるタップイベントが認識されないためプログラムが動作しないのか、タップイベントは入力されていてその先のプログラムに不具合があるのか切り分けが難しく困ることがあります。
そのような時はタップのようなユーザー操作に対して操作音を付けると判別が容易になります。

デバッグ目的で、完成度に拘らないのであれば下記のように`AudioServicesPlaySystemSound` を使ってシステム音を鳴らすことができます。

    :
    .gesture(
      SpatialTapGesture(count: 1)
        .targetedToAnyEntity()
        .onEnded { value in
          AudioServicesPlaySystemSound(SystemSound.SCREEN_SHARING_STARTED)
        :

参考情報など

3回に渡りお送りしてきましたが、次回は別の記事を投稿予定です。

Posted in AppleVisionPro, エンジニアブログ, 開発事例 |

【開発事例】〜AppleVisionPro〜アプリケーション開発(2)

Apple Vision Proの写真

前回記事で紹介した、空間にメモを配置するアプリの制作で工夫した点を紹介します。
今回は「メモを置く場所(=平面)を検出する」についてです。

メモを置く場所(=平面)を検出する

RealityKit で平面を検出するために AnchorEntity を使用します。実際のコードは下記のようなもので、縦横方向のどちらの平面も検出し、壁、床、天井など物体の種類は関係なく検出する設定です。

let anchor = AnchorEntity(.plane([.any], classification: [.any], minimumBounds: [0.1, 0.1]), trackingMode: .once)

メモを置く場所(=平面)を検出する

メモを置く場所(=平面)を検出する

これで Vision Pro の視界の中央付近の平面が検出できるのですが、これだけだと細かい位置の調整ができません。そこで検出した平面上に視線検出用のオブジェクトを敷き詰めて、そのオブジェクトのタップイベントを検出して、細かい位置を取得します。

平面上に視線検出用オブジェクトを敷きつめる

視線検出用のオブジェクトを配置すると、先ほどの平面はこのようになります。若干明るく光るオブジェクトは視線の当たっている場所を示しています。

平面上に視線検出用オブジェクトを敷きつめる

平面上に視線検出用オブジェクトを敷きつめる

視線検出用オブジェクトのタップイベントで位置を特定

RealityView に gesture を設定し、SpatialTapGesture でタップジェスチャを取得します。

下記の擬似コードのようにしてオブジェクトにタップイベントを追加します。タップの回数は count で設定できます。ダブルタップ、トリプルタップに個別の処理を設定することも可能です。

var body: some View {

RealityView { content in


.gesture(

SpatialTapGesture(count: 1).

.targetedToAnyEntity().
.onEnded { value in.

さて、以上で平面上のより細かい位置を取得して指定できるようになりました。どこに視線が当たっているか判別しやすいように hover エフェクトを追加しています。

※ 当時は hover エフェクトをカスタマイズできず視認性が良いとは言えませんでしたが、VisionOS 2.0 でエフェクトのカスタマイズがサポートされたようです。

次回、VisionOSの標準ウインドウや操作音など工夫した点を紹介します。

Posted in AppleVisionPro, エンジニアブログ, 開発事例 | Tagged , ,

【開発事例】〜AppleVisionPro〜〜アプリケーション開発

Apple Vision Proの写真

はじめに

株式会社ギガ・システムでは新しいプラットホームへの対応も積極的に行なっています。本記事では Vision Pro、VisionOSがもたらす空間コンピューティングにおける技術の調査・蓄積のためVision Pro向けアプリケーションを開発した事例についてご紹介します。

本事例では RealityKit を使って Vision Pro を装着して見た視界の任意の位置にメモを置くアプリケーションを作成しています。

※ 開発は 2023年11月〜2024年2月 の期間のため本記事の情報は当時のものになります。

開発技術

本記事では Vision Pro アプリケーションで視線による位置の指定を用いて、パススルーして見える視界の任意の場所に仮想のオブジェクト(=メモ)を配置する手法を紹介します。

以下の動画は開発したアプリで壁面やディスプレーにメモを配置する様子をキャプチャしたものです。赤い球体はメモを留める付箋ピンを表すオブジェクトです。付箋ピンをタップするとメモが表示される様子をご確認いただけます。

なお、本記事では紹介していませんが、このアプリでは WorldTrackingProvider, WorldAnchor を使ったメモの永続化の検証も行なっていますので別の記事でご紹介したいと思います。

所感

Vision OSでのアプリケーション開発は従来の iPhone, iPad 向けの開発体験とのギャップが少なく、これまでAppleプラットホームでの開発で蓄積した資産を活かせるようになっていてさすがAppleであると感じます。

またイマーシブ空間向けのアプリケーション開発では Unity による開発もオプションとして用意されていますが、Apple社の提供する RealityKit だけを利用した場合でも工夫次第で視線による空間上の位置指定など一見難しそうな機能が予想よりも簡単に実現できることがわかりました。

開発環境

開発環境(当時)は次のものです。

– MacBook Pro Apple M3 24GB
– XCode Version 15.4 (15F31d)

やったこと

Vision Pro, Vision OS では視線とハンドジェスチャによる操作が基本となりますが、通常の Vision OS アプリ開発の枠組みでは、まず空間上に視線を検出する3Dオブジェクトを置いて、その3Dオブジェクトに視線が当たった状態でタップなどのハンドジェスチャで発火するイベントに対応する処理を作り込んでいく流れになります。

しかし、本事例のように「視線の先にメモ(3Dオブジェクト)を置きたい」という場合、視線を検出するための3Dオブジェクトがないためすこし工夫が必要です。

Vision Pro 実機を入手した現在であれば「Scene Reconstruction API とレイキャスト」での実装を試みると思いますが、本事例に取り組んだ2023年11月頃はシミュレータのみでの開発であったためシミュレータでも動作確認ができる「RealityKit の AnchorEntity による平面検出」をベースに実装しています。

メモの置ける位置指定の粒度やユーザビリティを考慮して大まかな処理の流れを下記のようにしました。

1. メモを置く場所(=平面)を検出する
2. 1の平面上に視線検出用オブジェクトを敷きつめる
3. 視線検出用オブジェクトのタップイベントで位置を特定
4. 検出した位置に付箋ピン(およびメモ)を配置する

次回、工夫した点などを紹介します。

Posted in AppleVisionPro, エンジニアブログ, 開発事例 |

【技術情報】〜AppleVisionPro〜日本語の音声入力について

Apple Vision Proの写真

日本語の音声入力が可能に

Apple Vision Proには、アクセシビリティの音声コントロールとは別に、音声によるテキスト入力機能があります。この機能では、日本語での音声入力が可能です。

例えば、メモアプリで編集中にマイクアイコンを見つめるかタップして日本語で話すと、高精度で認識されます。

ただし、ここで一つ注意点があります。

設定の音声入力言語の選択で、日本語だけをONにしておく必要があります。英語もONにしていると、英語が優先されてしまい、日本語の音声入力ができなくなります。

設定方法

以下の手順で設定を変更出来ます:

1. 設定 → 一般 → キーボード → 音声入力言語

Apple Vision Pro アプリメニュー、設定アプリ

Apple Vision Pro アプリメニューで設定アプリを開く

設定アプリで、一般を開き、キーボードを開く

設定アプリで、一般を開き、キーボードを開く

キーボード設定一覧の音声入力言語を開く

キーボード設定一覧の音声入力言語を開く

2. 英語をOFFにし、日本語のみをONにする

音声入力言語で、英語(日本)がONの場合、OFFにする

音声入力言語で、英語(日本)がONの場合、OFFにする

日本語のみがON

日本語のみがON

Apple Vision Pro アプリメニュー、メモアプリで日本語の音声入力をテストする

メモアプリで日本語の音声入力をテストする

メモアプリで入力モード時のキーボードのマイクアイコンをタップして話すと、日本語の音声入力がテストできる

メモアプリで入力モード時のキーボードのマイクアイコンをタップして話すと、日本語の音声入力がテストできる

これで、日本語の音声入力がスムーズに行えるようになります。

是非、皆さん試してみてください。

Posted in AppleVisionPro, エンジニアブログ |

【技術情報】〜AppleVisionPro〜日本語の音声コントロールについて

Apple Vision Proの写真

今日はApple Vision Proについて、最新の情報を共有したいと思います。

特に、日本でのリリースに伴う新機能やアクセシビリティの改善についてお話しします。

VisionOS 1.2の登場と音声コントロールの現状

Apple Vision ProにはVisionOS 1.2が搭載されています。

このバージョンでは、アクセシビリティの向上に力を入れています。

特に注目すべきは、音声コントロールの言語設定に日本語が追加されたことです。

しかし、ここで少し残念なお知らせがあります。

現在、日本語を選択してもUS Englishに切り替わってしまう問題が発生しています。

つまり、日本語の音声コントロールはまだ使用できない状態です。

VisionOS 2.0 ベータ版のサプライズ

次に、VisionOS 2.0のベータ版がリリースされました。

私は早速、音声コントロールの言語設定で日本語を選択して試してみました。

結果は…なんと、日本語の音声コントロールが使えるようになっていました!

これは非常に喜ばしいバージョンアップです。

ベータ版とはいえ、今後の正式リリースに向けて期待が高まります。

設定方法

1. 設定 → アクセシビリティ → 音声コントロール → 音声コントロールをONにする

Apple Vision Pro アプリメニュー、設定アプリ

Apple Vision Pro アプリメニューで設定アプリを開く

設定一覧、アクセシビリティ一覧、音声コントロールを開く

設定一覧でアクセシビリティを開き、音声コントロールを開く

音声コントロールをONにし、言語を開く

音声コントロールをONにし、言語を開く

2. 言語 → 日本語(日本)を選択する → 「音声コントロールの準備ができました 日本語(日本)」が右上のマイクアイコンで表示されたら使えるようになる

言語で、日本語(日本)を選択し、右上マイクアイコンで、音声コントロールの準備ができました 日本語(日本)が表示された使えるようになる

言語で、日本語(日本)を選択し、右上マイクアイコンで、音声コントロールの準備ができました 日本語(日本)が表示された使えるようになる

まとめ

Apple Vision Proの最新バージョンでは、日本語のサポートが強化されています。

特に、VisionOS 2.0のベータ版での日本語音声コントロールは期待大です。

まだまだ改善の余地はありますが、日本のユーザーにとっては嬉しいニュースです。

また、この機能を活かせた記事など公開したいと思います。

今後もさらに使いやすくなることを期待しつつ、

引き続きアップデート情報をお届けしますので、お楽しみに!

Posted in AppleVisionPro, エンジニアブログ |

【技術情報】〜AppleVisionPro〜Persona(ペルソナ)の完成度

今回は、Apple Vision Pro にベータ版として搭載されているPersona(ペルソナ)について投稿します。

Persona(ペルソナ)とは?

VisonProを装着していると、Web会議やFaceTimeなどのビデオ通話機能にて自分の顔を映すことが出来ない問題があります。

そこで搭載されたのがPersonaモード(ベータ版)です。

・仮想アバターの作成

→フロントカメラを使って撮影します。

音声に従って、上をむいたり下をむいたりと指示に従うだけでOK。

その後、装着し少し待つと完成です。

 

Persona(ペルソナ)の完成度!!

これが凄い。

凄いの一言です。

どっからどう見ても私です。

強いていうなら実物よりも良く写っています(笑)

本物そっくりで、口の動きや目線、手の動きなどもそっくりに再現してくれます。

実際のスクリーンショットがこちら。

すごい完成度ですね!

これでベータ版なので、今後が楽しみです。

Zoomも対応しているようなので、社内会議でVisionProで参加して気付かれるか

また試してみようと思います。

Posted in AppleVisionPro, エンジニアブログ |