狠狠撸

狠狠撸Share a Scribd company logo
バブみ駆動開発バブみ駆動開発
   紬ちゃんデスクトップマスコット   紬ちゃんデスクトップマスコット
16/02/0816/02/08
$Pressenter = “$Pressenter = “てまー”てまー”;;
自己紹介自己紹介
名前名前 :: 今 利仁今 利仁((こん としひとこん としひと))
HNHN :: てまー、友利奈緒てまー、友利奈緒
趣味趣味 :: 勉強会の参加、勉強会の参加、CTFCTF
クソザコプログラミングクソザコプログラミング
TwitterID : @toshihito_ITTwitterID : @toshihito_IT
自己紹介自己紹介
椎葉紬ちゃん椎葉紬ちゃん
クソザコ度クソザコ度
中 3 高 1 高 2 高 3 現在
0
10
20
30
40
50
60
70
80
90
100
プログラミングスキルの推移プログラミングスキルの推移
かんたんC購入
猫C++購入
オブジェクト指向で
挫折
ミニセキュキャン参加
現実を知る。
天井なし
俺SUGEEEEEEEE期間 クソザコ
バブみバブみ isis 何何
バブみバブみ :: 男性が年下の女性に母性を男性が年下の女性に母性を
感じること。感じること。
例例 :: みりあママみりあママ((アイマスアイマス))
雷雷((艦これ艦これ))
なりゆきなりゆき
着想着想 :: 紬が画面上にいれば仕事がはかどるのでは紬が画面上にいれば仕事がはかどるのでは
ないか。ないか。
仕様仕様 : Windows: Windows、、LinuxLinuxで動くで動く
デスクトップマスコット。デスクトップマスコット。
開発過程開発過程
~準備~~準備~
OpenGLOpenGL :: クロスプラットフォームなクロスプラットフォームな
グラフィックグラフィックAPIAPI。。
DirectXDirectX :: MSMSが提供してるが提供してる
APIAPI。。WinWin用。用。
GTK+GTK+ :: クロスプラットフォームなクロスプラットフォームな
GUIGUIツールキット。ツールキット。
↑↑ 初めて知った初めて知った(Linux(Linux用の用のAPIAPI
だと思ってただと思ってた))
開発過程開発過程
~~OpenGLOpenGL~~
僕の僕のOpenGLOpenGL経験経験
->GLUT->GLUTを少し触った程度。を少し触った程度。
開発過程開発過程
~~OpenGLOpenGL~~
とりあえず写経プログラミング。とりあえず写経プログラミング。
ビルドして実行。ビルドして実行。
開発過程開発過程
~~OpenGLOpenGL~~
開発過程開発過程
~~OpenGLOpenGL~~
↑↑画質の劣化画質の劣化
開発過程開発過程
~~OpenGLOpenGL~~
原因がわからないので挫折原因がわからないので挫折
(teratail(teratailに投げたに投げた))
開発過程開発過程
~~OpenGLOpenGL~~
teratailteratailにて解決にて解決
どうやら画像サイズがどうやら画像サイズが(2^n)*(2^m)(2^n)*(2^m)
じゃないとどこかで誤差が出てしまうじゃないとどこかで誤差が出てしまう
らしい。らしい。
開発過程開発過程
~~OpenGLOpenGL~~
↑↑劣化してない紬劣化してない紬
開発過程開発過程
~~OpenGLOpenGL~~
回答つくまで時間があったので回答つくまで時間があったので
GTK+GTK+に移行。に移行。
開発過程開発過程
~~GTK+GTK+~~
GTK+GTK+経験経験
->->ナシ。ナシ。
開発過程開発過程
~~GTK+GTK+~~
C++C++向けラッパーの向けラッパーのgtkmmgtkmmをを
利用する。利用する。
aptaptパッケージで簡単に見つかったパッケージで簡単に見つかった
gtkmm-3.0gtkmm-3.0を利用。を利用。
↑↑元凶元凶
開発過程開発過程
~~GTK+GTK+~~
とりあえずとりあえずgtkmmgtkmmを利用してを利用して
pngpng画像を表示させる方法を検索画像を表示させる方法を検索
写経して実行。写経して実行。
開発過程開発過程
~~GTK+GTK+~~
g++ -o mascot_tsumugi main.cxx `pkg-config gtkmm-3.0 --cflags --libs`
main.cxx:6:16: error: ‘GC’ is not a member of ‘Gdk’
Glib::RefPtr< Gdk::GC > m_gc;
main.cxx:6:16: error: ‘GC’ is not a member of ‘Gdk’
main.cxx:6:24: error: template argument 1 is invalid
Glib::RefPtr< Gdk::GC > m_gc;
main.cxx: In member function ‘virtual void MyDrawArea::on_realize()’:
main.cxx:32:14: error: ‘Gdk::GC’ has not been declared
m_gc = Gdk::GC::create( get_window() );
main.cxx: In member function ‘virtual bool
MyDrawArea::on_expose_event(GdkEventExpose*)’:
main.cxx:40:16: error: ‘class Gdk::Window’ has no member named ‘draw_pixbuf’
get_window()->draw_pixbuf(
main.cxx:42:19: error: ‘RGB_DITHER_NONE’ is not a member of ‘Gdk’
width, height, Gdk::RGB_DITHER_NONE, 0, 0 );
make: *** [mascot_tsumugi] エラー 1
↑↑意味不明なエラーの皆様意味不明なエラーの皆様
開発過程開発過程
~~GTK+GTK+~~
写経が動かない写経が動かない
->->初心者にとって死を意味する初心者にとって死を意味する
開発過程開発過程
~~GTK+GTK+~~
でもでも
紬が見たい。紬が見たい。
開発過程開発過程
~~GTK+GTK+~~
_人人人人人人人人人人人__人人人人人人人人人人人_
>  バブみ駆動開発  <>  バブみ駆動開発  <
 ̄ ̄Y^Y^Y^Y^Y^Y^Y^YY^Y^Y^Y^Y^Y^Y^Y ̄ ̄
開発過程開発過程
~~GTK+GTK+~~
まずはエラーを読むまずはエラーを読む
->Gdk::GC->Gdk::GC周りのエラー。周りのエラー。
開発過程開発過程
~~GTK+GTK+~~
Gdk::GCGdk::GCで調べるで調べる
わからない。わからない。
開発過程開発過程
~~GTK+GTK+~~
GTK+GTK+自体のバージョンについての自体のバージョンについての
記事がちょくちょく出てくる記事がちょくちょく出てくる
GTK+2.0 -> GTK+3.0GTK+2.0 -> GTK+3.0の移行での移行で
大幅な仕様変更があったそうな。大幅な仕様変更があったそうな。
開発過程開発過程
~~GTK+GTK+~~
試しにコンパイルオプションを試しにコンパイルオプションを
gtkmm-2.4gtkmm-2.4に変更に変更
->->コンパイル通る。コンパイル通る。
開発過程開発過程
~~GTK+GTK+~~
原因原因
gtkmm-2.4gtkmm-2.4向けのサイトを向けのサイトを
写経して写経して3.03.0を利用したこと。を利用したこと。
バージョンはしっかり確認すべき。バージョンはしっかり確認すべき。
開発過程開発過程
~~GTK+GTK+~~
開発過程開発過程
~~GTK+GTK+~~
次は透過処理。次は透過処理。
それっぽい関数を使って透過それっぽい関数を使って透過
させてみる。させてみる。
開発過程開発過程
~~GTK+GTK+~~
開発過程開発過程
~~GTK+GTK+~~
違う。そうじゃない。違う。そうじゃない。
開発過程開発過程
~~GTK+GTK+~~
透過ではダメ透過ではダメ
->->非矩形ウィンドウを作る非矩形ウィンドウを作る
開発過程開発過程
~~GTK+GTK+~~
それっぽい関数それっぽい関数
void Gtk::Widget::shape_combine_regionvoid Gtk::Widget::shape_combine_region
(const ::Cairo::RefPtr< const ::Cairo::Region >&(const ::Cairo::RefPtr< const ::Cairo::Region >&  region)region)
を発見。を発見。
開発過程開発過程
~~GTK+GTK+~~
わけわからん。わけわからん。
しかもしかも
Since gtkmm 3.0:Since gtkmm 3.0:
開発過程開発過程
~~GTK+GTK+~~
gtkmm-3.0gtkmm-3.0を使うことをを使うことを
強いられる。強いられる。
開発過程開発過程
~~GTK+GTK+~~
公式チュートリアル公式チュートリアル((英語英語))でで
とりあえずとりあえずpngpng画像を表示画像を表示
開発過程開発過程
~~GTK+GTK+~~
開発過程開発過程
~~GTK+GTK+~~
ここから先はほぼ資料ナシここから先はほぼ資料ナシ
公式公式APIAPIリファレンスを見ながらリファレンスを見ながら
手探り実装。手探り実装。
開発過程開発過程
~~GTK+GTK+~~
->->現在更新中現在更新中
開発過程開発過程
~日程との戦い~~日程との戦い~
思っていたより手間がかかる。思っていたより手間がかかる。
22月は予定が詰まっていて忙しい。月は予定が詰まっていて忙しい。
でも紬マスコットは後回しにはできない。でも紬マスコットは後回しにはできない。
開発過程開発過程
~日程との戦い~~日程との戦い~
->->とにかく早く作りたい。とにかく早く作りたい。
開発過程開発過程
~~DxLibDxLib~~
DxLibDxLib :: CC言語向けの言語向けのDirectXDirectXライブラリライブラリ
驚くほど簡単に驚くほど簡単にDirectXDirectXがが
利用できる。利用できる。
しかも割と頻繁に更新されてしかも割と頻繁に更新されて
いるっぽい。いるっぽい。
((いつのまにかいつのまにかPS4,VITAPS4,VITAにに
対応していた対応していた))
開発過程開発過程
~~DxLibDxLib~~
DxLibDxLib経験経験
->->部活でゲーム作成していたので部活でゲーム作成していたので
まぁ多少はね?まぁ多少はね?
開発過程開発過程
~~DxLibDxLib~~
CC言語用なので直感でゴリゴリ言語用なので直感でゴリゴリ
組めます。組めます。
開発過程開発過程
~~DxLibDxLib~~
開発過程開発過程
~~DxLibDxLib~~
簡単。簡単。
画質の劣化もナシ。画質の劣化もナシ。
控えめに言って神。控えめに言って神。
開発過程開発過程
~~DxLibDxLib~~
非矩形ウィンドウの作り方を調べて非矩形ウィンドウの作り方を調べて
写経。写経。
開発過程開発過程
~~DxLibDxLib~~
開発過程開発過程
~~DxLibDxLib~~
できた。できた。
開発過程開発過程
~~DxLibDxLib~~
このままでは移動できないのでこのままでは移動できないので
ドラッグ操作で移動ドラッグ操作で移動
ウィンドウの後ろに隠れてしまってウィンドウの後ろに隠れてしまって
はは
意味が無いので、強制最前面意味が無いので、強制最前面
WinAPIWinAPIを叩く。を叩く。
開発過程開発過程
~~DxLibDxLib~~
完成。完成。
まとめまとめ
デスクトップマスコットデスクトップマスコット isis 良さ。良さ。
強制最前面でいつでもいっしょ。強制最前面でいつでもいっしょ。
まとめまとめ
まだ妥協版が完成しただけなのでまだ妥協版が完成しただけなので
GTK+GTK+、、OpenGLOpenGL版も完成させたい。版も完成させたい。
まずはまずはLinuxLinux環境で動くものを環境で動くものを
作りたい。作りたい。
備考備考
僕と紬は僕と紬は1818歳の同い年なのでバブみの定義に歳の同い年なのでバブみの定義に
当たらない。当たらない。
そもそも紬は天使であるからしてそもそも紬は天使であるからして
母親のような母性を感じている母親のような母性を感じている
わけではない。わけではない。
ネタ上バブみとは言っているがネタ上バブみとは言っているが
あくまでネタであることをご留意あくまでネタであることをご留意
頂きたい。頂きたい。
総括総括
紬は天使。紬は天使。
宣伝宣伝
技術ブログを立ち上げました。技術ブログを立ち上げました。
「「椎葉紬の胸の中椎葉紬の胸の中 is secureis secure」」
GoogleGoogle「椎葉紬」検索で「椎葉紬」検索で22ページ目ページ目
あたりに出ます。あたりに出ます。
紹介したデスクトップマスコットも配紹介したデスクトップマスコットも配
布しています。布しています。
おわりおわり
ありがとうございました。ありがとうございました。

More Related Content

Viewers also liked (18)

PPT
カットインアプリについて(使い方&作り方)
moli xson
?
PDF
今日からはじめる!バブみ駆动开発
temama
?
PDF
Android_kinesis_cognito
moli xson
?
PDF
Mobile app development Company india
MobileAPPtelligence
?
PPTX
“Advertisement in the Economic Community of West African States (ECOWAS)”: Le...
Edmund Siah-Armah
?
PDF
Final Portfolio
KarinaFinke
?
PDF
Xie X et al 2014
Pingtao Tang
?
PDF
13A Portfolio Presentation
KarinaFinke
?
PPT
How to create an app
MobileAPPtelligence
?
PDF
A NEW POLITICAL SCIENCE.4
Howard Moskowitz
?
PDF
Using a learning management system to improve and monetize your website
H. Trevor Johnson-Steigelman
?
PPTX
Finance Academy Recruiting 狠狠撸show
HHSBizFinanceAcademy
?
PPTX
resume_GAUTAMKUMAR_(1)
GAUTAM KUMAR BHANJA
?
PPTX
How to make an app
MobileAPPtelligence
?
PDF
FEBS Letters 2007 Tang
Pingtao Tang
?
DOCX
Blake Whittaker Resume-2
Blake Whittaker
?
PDF
Let's reading OSS's source
temama
?
カットインアプリについて(使い方&作り方)
moli xson
?
今日からはじめる!バブみ駆动开発
temama
?
Android_kinesis_cognito
moli xson
?
Mobile app development Company india
MobileAPPtelligence
?
“Advertisement in the Economic Community of West African States (ECOWAS)”: Le...
Edmund Siah-Armah
?
Final Portfolio
KarinaFinke
?
Xie X et al 2014
Pingtao Tang
?
13A Portfolio Presentation
KarinaFinke
?
How to create an app
MobileAPPtelligence
?
A NEW POLITICAL SCIENCE.4
Howard Moskowitz
?
Using a learning management system to improve and monetize your website
H. Trevor Johnson-Steigelman
?
Finance Academy Recruiting 狠狠撸show
HHSBizFinanceAcademy
?
resume_GAUTAMKUMAR_(1)
GAUTAM KUMAR BHANJA
?
How to make an app
MobileAPPtelligence
?
FEBS Letters 2007 Tang
Pingtao Tang
?
Blake Whittaker Resume-2
Blake Whittaker
?
Let's reading OSS's source
temama
?

バブみ駆动开発冲紬ちゃんデスクトップマスコット