Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LINE Creators Studioで写真を簡単 & きれいに切り抜いてもらいたい話 / ...
Search
LINE Developers
February 13, 2019
Technology
0
600
LINE Creators Studioで写真を簡単 & きれいに切り抜いてもらいたい話 / Grabcut in LINE Creators Studio
2019/2/13に開催されたLINE Developer Meetup #50 in Fukuokaでの登壇資料です
LINE Developers
February 13, 2019
Tweet
Share
More Decks by LINE Developers
See All by LINE Developers
LINEスタンプのSREing事例集:大きなスパイクアクセスを捌くためのSREing
line_developers
3
2.3k
Java 21 Overview
line_developers
6
1.2k
Code Review Challenge: An example of a solution
line_developers
1
1.4k
KARTEのAPIサーバ化
line_developers
1
550
著作権とは何か?〜初歩的概念から権利利用法、侵害要件まで
line_developers
5
2.2k
生成AIと著作権 〜生成AIによって生じる著作権関連の課題と対処
line_developers
3
2.2k
マイクロサービスにおけるBFFアーキテクチャでのモジュラモノリスの導入
line_developers
9
3.6k
A/B Testing at LINE NEWS
line_developers
3
1k
LINEのサポートバージョンの考え方
line_developers
2
1.3k
Other Decks in Technology
See All in Technology
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
240
バイブスに「型」を!Kent Beckに学ぶ、AI時代のテスト駆動開発
amixedcolor
2
540
S3アクセス制御の設計ポイント
tommy0124
3
190
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
440
2025年夏 コーディングエージェントを統べる者
nwiizo
0
140
テストを軸にした生き残り術
kworkdev
PRO
0
200
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
170
自作JSエンジンに推しプロポーザルを実装したい!
sajikix
1
170
LLMを搭載したプロダクトの品質保証の模索と学び
qa
0
1k
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
390
dbt開発 with Claude Codeのためのガードレール設計
10xinc
2
1.2k
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Why Our Code Smells
bkeepers
PRO
339
57k
Writing Fast Ruby
sferik
628
62k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
13k
BBQ
matthewcrist
89
9.8k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
Done Done
chrislema
185
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Embracing the Ebb and Flow
colly
87
4.8k
Transcript
-*/&$SFBUPST4UVEJPͰ ࣸਅΛ؆୯ˍ͖Ε͍ʹ Γൈ͍ͯΒ͍͍ͨ LINE Developer meetup #50 in Fukuoka -*/&'VLVPLB։ൃࣨഅݟ
Feb 13, 2019
അݟ -*/&'VLVPLBגࣜձࣾ ։ൃ̏ࣨॴଐ UMAMI MAKOTO @umakoz -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ `z
-*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ LINE Creators Studio? ɾεϚʔτϑΥϯ͔Β-*/&ελϯϓ͕؆୯ʹ࡞ΕΔ ɾࡱͬͨࣸਅΛՃͯ͠ελϯϓʹͰ͖Δ ɾελϯϓͷ৹ࠪਃൢച͕Ͱ͖Δ ɹIUUQTDSFBUPSMJOFNFKBTUVEJP ಛ
LINE Creators StudioͰͷSticker࡞ྫ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ IUUQTDSFBUPSMJOFNFKBTUVEJP
LINE Creators Studio Android ɾPure Kotlinʢwithout Libraryʣ ɾMVVM ɾDagger2, RxJava2,
RxKotlin, RxLifecycle, Retrofit2, OkHttp3, Glide, Realm, Anko, Espresso, Mockito-Kotlin ߏ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
History 7FS ݄ ϦϦʔεɺͳͧͬͯΓൈ͖ػೳ 7FS ݄ ඇެ։ઃఆ 7FS ݄ ଟݴޠରԠʢӳޠɺλΠޠɺதࠃޠɺΠϯυωγΞޠʣ
7FS ݄ ܗͰΓൈ͖ػೳ 7FS ݄ ফ͠ΰϜػೳ 7FS ݄ σίϑϨʔϜػೳ 7FS ݄ 6*มߋ 7FS ݄ ࣗಈΓൈ͖ػೳʢ"OESPJEʣ 7FS ݄ ΩϟϯϖʔϯࢀՃػೳ 7FS ݄ ࣗಈΓൈ͖ػೳʢJ04ʣ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
History -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ 7FS ݄ ϦϦʔεɺͳͧͬͯΓൈ͖ػೳ 7FS ݄ ඇެ։ઃఆ 7FS ݄
ଟݴޠରԠʢӳޠɺλΠޠɺதࠃޠɺΠϯυωγΞޠʣ 7FS ݄ܗͰΓൈ͖ػೳ 7FS ݄ফ͠ΰϜػೳ 7FS ݄σίϑϨʔϜػೳ 7FS ݄ 6*มߋ 7FS ݄ ࣗಈΓൈ͖ػೳʢ"OESPJEʣ 7FS ݄ ΩϟϯϖʔϯࢀՃػೳ 7FS ݄ ࣗಈΓൈ͖ػೳʢJ04ʣ
Γൈ͖ؔ࿈ଟ͗͢ʜ ɾͳͧͬͯΓൈ͖ ɾܗͰΓൈ͖ ɾফ͠ΰϜ ɾσίϑϨʔϜ ɾࣗಈΓൈ͖ ؆୯ͳૢ࡞Ͱ͖Ε͍ʹΓൈ͖͍ͨʂ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ͳͧͬͯΓൈ͖ ɾΠϝʔδͷԑΛͳͧͬͯΓൈ͘ ɾύε্ͷͷΛҠಈͤ͞Δ͜ͱͰඍௐ͢Δ 7FSʙ ɾײత ॴ ɾࡉ͔͍मਖ਼͕͠ʹ͍͘ ɾҰຊͷύεͰ͔͠Γൈ͚ͳ͍ ॴ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ܗͰΓൈ͖ ɾԁ࢛֯ɺϋʔτɺͷܗΛબͿ ɾΠϝʔδΛҠಈ֦େॖখɺճసͤ͞Δ͜ͱͰඍௐ͢Δ 7FSʙ ɾ؆୯ ॴ ɾ༻ҙ͞ΕͨܗͰ͔͠Γൈ͚ͳ͍ ॴ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ফ͠ΰϜ ɾফ͠ΰϜΛ͔͚ͨ෦͕ফ͑Δ ɾम෮ফ͠ΰϜΛ͔͚ͯ෦తʹΠϝʔδΛ͠ɺඍௐ͢Δ 7FSʙ ɾΤοδͷࡉ͔ͳௐ͕Ͱ͖Δ ɾෳͷύεͰΓൈ͖Ͱ͖Δ ॴ ɾ͖Ε͍ʹΓൈ͘ʹख़࿅ͷٕͱ͕࣌ؒඞཁ ॴ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
σίϑϨʔϜ ɾΠϝʔδΛσίϨʔγϣϯ͢ΔϑϨʔϜΛબͿ ɾΠϝʔδΛҠಈ֦େॖখɺճసͤ͞Δ͜ͱͰඍௐ͢Δ 7FSʙ ɾ؆୯ʹݟӫ͑ͷ͢Δελϯϓ͕࡞ΕΔ ॴ ɾಉ͡Α͏ͳελϯϓ͕ྔ࢈͞ΕΔ ॴ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ ࠓɺྲྀߦΓͷػցֶशͱ͔ͬͯ ελϯϓʹඞཁͳ෦ΛΓൈ͚ͳ͍ʁ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ SFNPWFCH IUUQTXXXSFNPWFCH ػցֶश
ࣗಈΓൈ͖ ɾ'BDF%FUFDUPS ɾ.-,JUGPS'JSFCBTF ɾ:0-0 0CKFDU%FUFDUJPO -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ :0-0 IUUQTQKSFEEJFDPNEBSLOFUZPMP
ࣗಈΓൈ͖ ɾ.BTL3$// *NBHF4FHNFOUBUJPO -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ IUUQTBSYJWPSHQEGQEG
ࣗಈΓൈ͖ 5FOTPS'MPX`TMJHIUXFJHIUTPMVUJPOGPS NPCJMFBOEFNCFEEFEEFWJDFT IUUQTXXXUFOTPSGMPXPSHMJUF -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ 5FOTPS'MPX-JUF
ࣗಈΓൈ͖ ɾࣸਅͷҰ෦͚ͩΛ͏ ɾਓͷશମͰͳ͘ɺҰ෦͚ͩʢإͱ͔ʣΛ͏ ɹˠྖҬΛݕग़͢Δ͚ͩͰෆे Ͳ͕͜ελϯϓʹద͍ͯ͠Δ͔Λݕग़Ͱ͖Δ͔ʁ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ ελϯϓ࡞࣌ͷϢʔβʔχʔζ IUUQTDSFBUPSMJOFNFKBTUVEJP
ࣗಈΓൈ͖ ΠϝʔδͷपғΛͬ͘͟ΓͳͧΔ ࣗಈͰΓൈ͍ͯΒ͏ ࣗಈͰΓൈ͍ͯཉ͍͠෦ʹফ͠ΰϜΛ͔͚Δ ࣗಈͰΓൈ͍ͯཉ͘͠ͳ͍෦ʹम෮ফ͠ΰϜΛ͔͚Δ ʙͷૢ࡞Λ܁Γฦͯ͠ඍௐ͢Δ 7FSʙ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ ɾ؆୯Ͱ͖Ε͍ʹΓൈ͚Δ ॴ ɾૢ࡞͕ෳࡶͰ׳Ε͕ඞཁ ॴ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ ɾΠϝʔδͷલܠྖҬΛநग़͢Δ ɾ0QFO$7 IUUQTPQFODWPSH (SBC$VU"MHPSJUIN -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
-*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ GrabCut Algorithm Ϣʔβʔ͕બͨ͠ൣғ͔ΒۣܗΛੜͯ͠ೖྗ͠ɺ ֎ଆഎܠʹଆલܠʹͳΔɻ (..ʢࠞ߹ΨεϞσϧʣͰલܠͱഎܠͷըૉΛֶश͢Δɻ ϐΫηϧͷ৭ใΑΓલܠʗഎܠͰ͋Δ֬Λ༧ଌ͢ΔϞσϧΛ࡞Δɻ
-*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ GrabCut Algorithm http://www.cs.ru.ac.za/research/g02m1682/ Ϣʔβʔ͕બͨ͠ൣғ͔ΒۣܗΛੜͯ͠ೖྗ͠ɺ ֎ଆഎܠʹଆલܠʹͳΔɻ (..ʢࠞ߹ΨεϞσϧʣͰલܠͱഎܠͷըૉΛֶश͢Δɻ ϐΫηϧͷ৭ใΑΓલܠʗഎܠͰ͋Δ֬Λ༧ଌ͢ΔϞσϧΛ࡞Δɻ ϞσϧΛ༻͍ͯϐΫηϧΛͭͳ͗άϥϑΛߏங͢Δɻ
-*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ GrabCut Algorithm http://www.cs.ru.ac.za/research/g02m1682/ Ϣʔβʔ͕બͨ͠ൣғ͔ΒۣܗΛੜͯ͠ೖྗ͠ɺ ֎ଆഎܠʹଆલܠʹͳΔɻ (..ʢࠞ߹ΨεϞσϧʣͰલܠͱഎܠͷըૉΛֶश͢Δɻ ϐΫηϧͷ৭ใΑΓલܠʗഎܠͰ͋Δ֬Λ༧ଌ͢ΔϞσϧΛ࡞Δɻ ϞσϧΛ༻͍ͯϐΫηϧΛͭͳ͗άϥϑΛߏங͢Δɻ ϐΫηϧΛͭͳ͙ΤοδͷॏΈΛܭࢉ͢Δɻ
ΤοδͷॏΈͷ૯͕࠷খʹͳΔΑ͏ʹஅ͢Δɻ
GrabCut Algorithm -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ http://www.cs.ru.ac.za/research/g02m1682/ Ϣʔβʔ͕બͨ͠ൣғ͔ΒۣܗΛੜͯ͠ೖྗ͠ɺ ֎ଆഎܠʹଆલܠʹͳΔɻ (..ʢࠞ߹ΨεϞσϧʣͰલܠͱഎܠͷըૉΛֶश͢Δɻ ϐΫηϧͷ৭ใΑΓલܠʗഎܠͰ͋Δ֬Λ༧ଌ͢ΔϞσϧΛ࡞Δɻ ϞσϧΛ༻͍ͯϐΫηϧΛͭͳ͗άϥϑΛߏங͢Δɻ ϐΫηϧΛͭͳ͙ΤοδͷॏΈΛܭࢉ͢Δɻ
ΤοδͷॏΈͷ૯͕࠷খʹͳΔΑ͏ʹஅ͢Δɻ Ϣʔβʔʹิਖ਼ͷͨΊͷઢΛೖྗͯ͠Β͍ɺ࠶ͼܭࢉ͢Δɻ
ࣗಈΓൈ͖ͷ (SBC$VUલʹબྖҬΛج४ͱ͠ ը૾ΛτϦϛϯά͢Δɻ ˞എܠΛશࣦͯ͏ͱਫ਼͕མͪΔͷͰ ɹϚʔδϯΛ͢ɻ ॲཧͷ্ τϦϛϯά -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ͷ ϚʔΧʔͷαΠζΛʹͯ͠(SBC$VUΛ ࣮ߦ͢Δɻ ॲཧͷ্ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ͷ 3FOEFS4DSJQUΛ͏ "OESPJEͰ࠾༻͞Ε͍ͯΔ ϐΫηϧ୯ҐͷॲཧΛ ߴʹߦ͏ͨΊͷ4DSJQU ॲཧͷ্ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ QSBHNBWFSTJPO
QSBHNBSTKBWB@QBDLBHF@OBNF DPNMJOFDPSQVTFSTUJDLFSST ST@BMMPDBUJPOJOQVU*NBHF VJOU@U SFDU WPJE@@BUUSJCVUF@@ LFSOFM SPPU VDIBSJO VJOU@UY VJOU@U GMPBUBST6OQBDL$PMPS JO B JG B \ JG YSFDU<> \ SFDU<>Y ^
ࣗಈΓൈ͖ͷ ݩը૾ͷେ͖͞Λҡ࣋ͨ͠··Γൈ͘ ˞࠷ऴతʹ࡞Δͷ ɹελϯϓ º ͳͷͰɺ ɹେ͖͗͢Δ࣌ϦαΠζ ը࣭ͷ্ ݩը૾ σΟεϓϨΠ
Ҡಈɺ֦େॖখɺճస Matrix Matrix -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ͷ Τοδʹ΅͔͠Λ͔͚Δɻ ͨͩ͠ɺ΅͔ͨ͠ϚʔΧʔΛ(SBC$VUʹ͏ͱ ਫ਼͕མͪΔͷͰɺσΟεϓϨΠ্͚ͩ΅͔͢ɻ ඒ͠͞ͷ্ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ͷ ϦΞϧλΠϜʹ΅͔͢ͱॲཧ͕͘ͳΔͷͰɺ ϚʔΧʔͷ֬ఆ࣌ʹ΅͔͢ɻ ඒ͠͞ͷ্ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
ࣗಈΓൈ͖ ࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨʂ -*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ
-*/&$SFBUPST4UVEJPͰࣸਅΛ؆୯ˍ͖Ε͍ʹΓൈ͍ͯΒ͍͍ͨ IUUQTMJOFGVLVPLBDPKQKBDBSFFSFOHJOFFS
5IBOLZPV