参加者(ATND順・敬称略)
|
発表内容
@checkela : 「GDKとLLVM(PF部向け)」(資料)
- 自己紹介
- 書籍紹介
- 連載の詳細
日系Linuxに連載中- Android Advent Calendarに記事を書きました
- GDKというtoolkit が出るかもしれないというお話
- 本日の結論
- LLVMやっとけ
- GDKとは
- NDKの後継
- gccがLLVMに切り替わる
- LLVM/clang とはなんぞや
- LowLevelVirtualMachine
- 低レイヤー向けの仮想マシンでCPUをVM化したような感じ
- コンパイル、リンク、ランタイム全部面倒みるよ
- LLVMの流れ
- 各言語向けのFront Endが中間コードを生成し、それを各アーキテクチャ向けに変換する
- LLVMのうれしい点
- CPUアーキテクチャ、言語から独立
- BSD似のライセンス
- イリノイ大学のオープンソースライセンス
- JIT,AOT,GCがある
- 普通のCPUよりすごい
- 実装はC++で行われているらしい
- LLVM/clang
- gcc互換のCフロントエンド
- 「くらんぐ」と読むらしい(by @l_b__)
- AndroidでももともとRenderScriptで使われていた
- GDKはNDKの後継
- gdk-buildのコメントにあちこちにNDKというコメントが残っている
- どうみてのndk-buildのコピー
- GDKのメリット
- CPUアーキテクチャの分別が不要
- JNIを使わない?
- ソフトが高速化するらしい
- kandroidでのベンチマーク
- LLVMだと80fps
- GCCだと19fps
- Nexus Sにて
- 本採用になりそうな理由
- NDKr8cよりClang 3.1をサポート(実験的に)
- 対Oracleの裁判対策
- Andorid開発当初は、そこまで深く考えてなかったんだろうなぁ
- LLVMの今後
- 割と広がりを見せそうな気配
- FreeBSDでLLVM
- 組込みLinuxでLLVM
- LLVM on FPGA
- LLVM対応に関してはBSD系が先攻している
- FreeBSD 10-CUTTENTよりデフォルトコンパイラがLLVM/clangへ移行
- GPLv3とFreeBSDの目標が合わないので脱GPLを目指している
- LinuxカーネルもLLVM対応は進行中
- LLVMの中間コードは将来的にハードで動く?
- 基幹技術としてLLVMは押さえておくべきかなと思います。
- Q&A
- Q: Linaroではどうなんでしょう
- A: 塚本さん「既に対応は初めています」
- てつこばさんからのコメント
- LLVMのイメージは、一枚岩ではない。LLVMはどちらかというとコンパイラの最適化の研究がしやすい所から始まっていて、モジュール化されている。
- 先に中間コードから先があった。GCCから中間コードを生成できるようにしようとしたら、gccの人たちから入れんといわれたので、clangが出てきた。
- clangにはgcc拡張は入っていないため、Linuxカーネルは結構難航している。
- 頑張ってやってる人たちはいるので、なんとかなっていくだろう。
- 大石さん
- FPGAにLLVMをのせるという件について、Javaについても過去に多くの研究ができては消えていった。今回も厳しいかもしれない。
- モジュールに分割されているようなものは、仕様がなかなか決まらないので、ハードに実装してしまう事は難しい。
- GPU側に中間コードを高速化させるような実装はありうるだろう。
@furikku_ks09 : 「MeeGo,Merについて」(資料)
- 自己紹介
- MeeGoからの流れで、QtやWaylandも注目しています。
- 本日のテーマ
- MeeGo周辺の系図
- Merについて
- 開発環境
- MeeGo周辺の系図
- Moblin, Maemo,MeeGo,Tizen
- UX,UI視点での系譜
- CoreやUX的なMeeGoの違い
- NetBook系の系譜
- Hildon系の系譜
- IVI系の系譜
- Tizen 1.0まではQt系(MeeGoのコードが残っていた)
- Tizen 2.0からはEFL系(全般的に入れ替えてきた?)
- Tablet系の系譜
- Handset UXの系譜
- Mer Core
- MeeGoからの派生
- MerCoreのアーキテクチャ
- MerCoreのソフトウェア
- システム関連: Systemd, D-Bus, GNU Utilities, Linux Utilities
- Qt: Qt4, Qt5
- グラフィックス: X11, Wayland
- 対応アーキテクチャ
- ハードウェア
- User Experience
- Nemo
- Plasma Active
- Cordia HD
- Nemo(ニモ)
- MeeGo Handset系のUX
- MeeGo 1.3 CEの名称が変更されたもの
- Qt4.8系
- MeeGo Touch Frameworkを使用
- Harmattan API(Nokia N900,N950,N9向けMeeGoのAPI)
- Lipstick というUX
- Sailfish OS
- Jollaから発表されたOS
- http://sailfishos.org/
- Mer Coreを使用
- Nemoとの関係性は、UI Framework互換、アプリケーション互換あり
- N950向けの動作デモが公開されている
- 開発環境
- Open Build Service
- Open Build ServiceはOpenSUSEからでてきた、fedora等の他のRPM系やDebian系のパッケージとそのメンテナンスを行える
- 利用例
- openSUSE
- MeeGo
- OpenSUSEをベースにサーバーを組む
- OBSとしては 2.3.7
- 既に構築済みイメージの提供もある
- クライアントはOpenSUSEに限らない
- OBSの構成
- Ruby on Railsが使われている
- OBSの使用
- マニュアル
- http://openbuildservice.org/help/manuals
- WebブラウザからWeb UIの操作が可能
- コマンドとしてoscコマンドが用意されている
- ブラウザで、コンフィグレーションを行っていく
- アーキテクチャの選択
- OBS Light
- クライアントにGUIアプリが用意されている
- OBSサーバーとの接続
- fakeobsというサーバーも作成可能
- 簡易サーバー?
- 通常のOBSより軽く使える
- Merの開発環境
- OBS
- MeeGo Community OBSを使用
- Mer CoreはMer Projectのもの
- Mer Platform SDK
- chroot使用
- Virtual Box向け
- x86向けイメージ提供で、クロスコンパイルにはScrachbox2を使う
- Q&A
- Q : 自分でビルドしようと思ったらどうしたらよいのでしょうか
- A: OBSを立てる必要があります。Androidとは違って、各ソフトウェアのRPMを作成してからそれをベースにイメージを作成する形になります。独自にパッチを当てたいとなると、OBSを組まなくてはなりません。
@l_b__ : 「MobileOSの歴史と概略」(資料)
- 自己紹介
- 他の発表の準備をしてたのだけど諸事情で変更しました(タッチパネル動かなかった)
- 最近乱立気味のモバイルOSについて系統樹的なものを作ってみました
- ゴールは iOSと、Ubuntu for Phone, Plasma Active, Mer, Sailfish, Tizen IVI, Tizen Mobile,Yoct,Open webOS, Android, FirefoxOS,ChromeOS,Blackberry OS 10, Windows Phone8といったのがどうやって出てきたのかという話
- 歴史(以下は話の順で読みにくいので資料を参考にして下さい)
- 1975年 UNIX v6 誕生。世の中に広く公開された。
- BSD系
- 1978年 v6からBSD 1.0を分岐
- 1984年 BSDからMac OSリリース
- 1986年 BSD 4.3リリース
- 1989年 BSD 4.3ベースのNext STEP 誕生
- 2001年 BSDとNext STEPからMac OS X 誕生
- 2007年 Mac OS XからiOS(当時はiPhoneOS)が分岐
- Linux系
- 1991年 Linux 0.01 誕生
- 2001 Linux 2.4
- 2003 Linux 2.6
- 2011 Linux 3.0
- Debian系
- 1994年 Debianリリース
- 2004年 Ubuntuが分岐
- 2008年 Ubuntu Mobile(Netbook向け) - 中身はMer
- 2013年 Ubuntu for Phonesが発表 - 来月にものが出てくるとの話
- 製品は2014年の予定
- アプリケーションはQt5
- 2005年 Maemo (Nokia Debianベース?)
- 2007年 Moblin(Intel - RPM系)作成
- 2010年 MaemoとMoblinが合流してMeeGo誕生
- 2008年 MaemoからMerが分離
- 2011年 MeeGoベースがMerに合流
- 2012年 MeeGoを引き継ぐ形でTizen IVI
- Tizen AssociationのチェアマンはNTTドコモ
- Linux Foundationの参加のプロジェクト
- 将来統合予定だがIVIは別物
- 2008年 LiMo(NTT Docomo, panasonic, NEC,モトローラ)、 SLP(SamsungのLiMo互換を作ってた人たちが残骸を使って立ち上げ)
- Tizen Mobileへ
- SLPベース
- 今年にも端末発売予定
- 2013年 MerからSailfish OSの作成
- N9開発メンバーが立ち上げたJolla社による後継
- 2013 SDKリリース予定
- 2011年 MerをベースにPlasma Active 作成
- KDEプロジェクトによるタブレット向けOS
- Nexus7 向けのプレビューイメージが公開
- Vivaldiが発表されているが、順調に遅れている模様
- 2002年 Open Zaurus
- 2003年 Open Embedded
- 2006年 Poky あまり情報がない。2008年 Intelが買収
- 2010年 IntelがPokyをベースにYoctプロジェクト作成
- 組込み向けLinuxディストリビューションを作成するクロス開発環境、ビルドシステム、ベースシステムを提供するプロジェクト
- 1995年 BeOS (アップルのニュートンをやってたメンバーが作成)
- BeOSとNextSTEPが争ってた。ジョブズの一声でNext STEPへ
- Be社はPalm社へ
- PalmOS6
- 2009年 WebOS OpenEmbeddedをベースにPalmOSのナレッジをもとに作成
- HPがWebOSを買収
- 2012年 Open webOS
- Palm/HPのWebOSをオープンソース化
- フレームワークはQt
- アプリケーションはQtWebkitとEnyo
- HTML5+JavaScript
- LGがOpenWebOSを使ったTVを開発中らしい
- webOSのUX責任者はGoogleに移籍
- Enyoの開発チームもGoogleに移籍
- 2008年
- Palm OSのメンバーがAndroid社移って Android 1.0
- 2009年 Android 2.0
- 2012年 Android 3.0/4.0
- 1998年 Gecko,KHTMLがリリース
- 2005年 KHTMLをベースにWebKit公開
- 2013年 Androidの下回りをベースにFirefoxOS
- WebベースOS
- 元Boot2Gecko
- アプリ実行環境はGecko上のHTML5+Javascript
- AOSPをベースにした独自構成
- Linuxカーネル
- Gonk(AndroidのHAL, Bionic, System部分)
- 商品はAndroidベースではない
- Gecko
- Gaia(Gecko上で動くシステムUI)
- 2009年 ChromeOS(Netbook用OS)
- 1982年 QNX (車載でよく使われている)
- 2001年 QNX Neutrino(現在のベース)
- 1999年 Blackberry OS
- Javaで構築されている
- MIDP+αのUIを追加している
- おそらく、Javaのバイトエンジンが乗っているのではないか
- 2011年 Blackberry Tablet OS
- 2013年 Blackberry OS 10
- 1995年 Windows CE
- 2000年 PocketPC
- 2003年 Windows Mobile
- 2010年 Windows Phone7
- 2012年 Windows Phone8
@tetsu_koba : 「Linuxのユーザ空間のメモリの話」(資料)
- 自己紹介は省略
- 前回の話「仮想メモリの話」を振り返る
- 前半3GBがユーザースペース
- 後半がKernel スペース
- GPUの構造によっては、サイズを変える場合もある
- ユーザープロセスのメモリ空間の実例
- 今日は、ユーザープロセスのメモリ空間について、色々変えるとどう変わるかを中心に話します。
- cat /proc/self/maps (selfだと自分自身-この場合cat-のものが見える)
- メモリマップが見える
- ちょっと実験
- whileループだけのアプリを実行して
- ps uでアプリのpidを探して
- cat /proc/<pid>/mapsを見る
- 大昔のUnixのプロセスメモリモデル(まごろく先生の講義を思い出してみよう)
- Text
- Data
- BSS
- Heap
- Stack
- 今時のものはもう少し複雑になっているように見えるけど、アドレスのランダム化を禁止して、-static 付きでビルドするとかなりシンプルなマップになる。
- 今はセキュリティーのために、起動毎に微妙にアドレスが加算される
- /proc/sys/kernel/randomize_va_space を0にするとランダム化がなくなるので、昔ながらのアドレスに見える
- mainのなかでmainを呼び出していけば、スタックをがんがん使うはず
- gdbでrunしてあげると、まだプロセスは残っている
- その状態で、mapsをみてあげよう
- 9MB程度でとまる。ulimitが8MBなのですけど。
- ulimit -sで、スタックをunlimitedにした上で実行すると
- とんでもないサイズをスタックに使う
- とりあえず、時間がないので本日はここまでにしますが、気になる方は色々と試してみましょう。
懇親会
下がり行く景気、落ち行く日本、けれどまだまだ。限界よりも下を行け!(え、そうじゃない?)ということで、底辺にあろうとも探究心を忘れないいつもの面々で、アヒルの下とか、牛モツとか、カエルとか、激辛料理等での懇親会となりました。恐るべきは北陸の呪い。帰宅中に雪に降られた方もいらっしゃるかと思いますが、お足下に気をつけてお帰りくださいませ。