SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
最近の業務やAndroid関連のインプットと振り返り
potatotips	#73	@	オンライン
2021/03/26
Fumiya	Sakai
自己紹介
・Fumiya	Sakai
・Freelance	App	Engineer
アカウント:
・Twitter:	https://twitter.com/fumiyasac

・Facebook:	https://www.facebook.com/fumiya.sakai.37

・Github:	https://github.com/fumiyasac	

・Qiita:	https://qiita.com/fumiyasac@github
発表者:
・Born	on	September	21,	1984
これまでの歩み:
Web	Designer
2008	~	2010
Web	Engineer
2012	~	2016
App	Engineer
2017	~	Now
iOS	/	Android	/	sometimes	Flutter
iOSのUI実装本を執筆しています!
少しの工夫で実現できるTIPS集 ライブラリ表現の活用集
書籍に掲載したサンプルのバージョンアップや続編等に現在着手中です。
過去に技術書典8で電子版だけ頒布した書籍紹介
Vol.1及びVol.2に頒布したものの中で書籍に載せきれなかったものを紹介
第1章:	メディアアプリ型のUI	
第2章:	構造が複雑な写真表示UI
記事一覧を無限スクロールする様な形のアプリ
UIを一覧/詳細表示を簡素化した実装を紹介。
現在はBoothにて販売中です! https://booth.pm/ja/items/1835468
¥1,000	-	
iOSアプリ開発「UI実装であると嬉しいレシピブック	まかない編」
サンプルコード:	https://github.com/fumiyasac/meals_ios_ui_recipe_showcase
第3章:	Combine	+	UICollectionViewCompositionalLayout
タイル状のフォトギャラリーや一覧表示型のア
プリUIでライブラリを活用した実装を紹介。
実務でも利用&考察したもの
特に第1章と第2章の内容に関し
ては、実際に相談されたり、実
装アイデアとして活用する機会
があったものになります。
	全てUIKitを利用
新たに技術書典9で電子版だけ頒布した書籍紹介
表現や動きが特徴的でユーザーにもほんの少し遊び心を与える様なUI実装を紹介
現在はBoothにて販売中です! https://booth.pm/ja/items/2360379
¥1,000	-	
iOSアプリ開発「UI実装であると嬉しいレシピブック	おもしろ編」
サンプルコード:	https://github.com/fumiyasac/meals_2nd_ios_ui_recipe_showcase
実務導入前の検証段階
若干一癖がありそう、ぱっと見
だと実装の方針が立ちにくい感
じに見受けられそうなUI実装や
構造に関して考察しました。
	UIKit	&	SwiftUIを利用
第1章:	面白い表現のフォトギャラリーUI	
第2章:	画面ロック機能を利用したUI
UICollectionViewを活用したユニークなレイア
ウト表現と画面遷移カスタマイズ実装を紹介。
第3章:	SwiftUI	+	OSS	Libraryの活用
SceneDelegateの機能や端末認証を利用した画
面ロック機能を盛り込んだ実装を紹介。
今回の発表でお話すること
業務の中で気になった部分や調査したことや取り組んでいる内容をPickUp
実務の中でiOS/Android両方の視点を持ちながら考えるようにした事が結構活かせた事もありました。
1.	iOS/Androidで実は勝手が違っていた(とはいえ少し似ているかも…):
ここでは実務の中で起きたハマりポイントの実装事例や基本事項整理のノートまとめの過程の中で気がついた部分をとても簡単
ではありますが何点か事例をご紹介できればと思います。
2.	iOS/AndroidでUI実装を比べてみた部分(Android特有の表現):
Androidアプリ内で良く見かけるUIコンポーネントでToast	/	BottomSheet	/	Floating	Action	Buttonを例に挙げて、もしiOSで
同様な表現を実装しようと考えた場合に、題意を満たす表現をUIライブラリを利用した実装する事を想定して考えてみます。
3.	JetpackComposeのβ版に少し触れた際の所感:
2021年2月後半にJetpack	Composeがβ版にアップデートされた際に周回遅れながら「Android	Dev	Challenge	Week1」に取り組ん
でみた際に僕自身が感じたことを現在取り組んでいることと照らし合わせてご紹介できればと思います。
(1)	iOS/Androidで実は勝手が違っていた(とはいえ少し似ているかも…)
最近実装した事例を紹介(URLテキスト関連)
テキストの中にURLがあった場合に押下して該当ページへ進む&コピー等も可能
スマートフォン対応Webサイト等でよくありがちなテキスト表現
autoLinkの設定だけでは不十分な理由とその例

https://android.gcreate.jp/482/
URLが文字列の中にある場合は正規表現で抽出&Spannableで押下可能な形にする
上記の方法では、区切り文字問題やChromeカスタムタブ非対応等の特徴が問題になった。
その他アイデア)	MarkDownに対応しているのであればそれを活用していく感じでも良さそうです。
android:autoLink=“all"	or	autoLinkMaskの設定では不十分であった。
https://xxx.jp?id=y
○
△
※	基本的には平文のテキストの中にURLがある様なケースを想定
URLと文字配置の位置関係によっては正しくならないケースが発生する
今回のケースではこちらの方針を採用
※	コピー等を可能にする設定

android:textIsSelectable="true"
最近実装した事例を紹介(URLテキスト関連)
まずはURL文字列を抽出するためのExtensionを作成する
fun	TextView.setUrlClickable(onClickLinkListener:	OnClickLinkListener)	{

				val	spannableString	=	SpannableString(this.text)

				var	start	=	0

				var	end	=	0

				val	pattern	=

								Pattern.compile("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]")

				val	matcher	=	pattern.matcher(this.text)

				while	(matcher.find())	{

								start	=	matcher.start()

								end	=	matcher.end()

								spannableString.setSpan(

												LinkClickableSpan(

																url	=	matcher.group(0)	?:	"",

																onClickLinkListener	=	object	:	OnClickLinkListener	{

																				override	fun	onClick(url:	String)	{	onClickLinkListener.onClick(url)	}

																}

												),	

												start,	end,

												Spanned.SPAN_INCLUSIVE_INCLUSIVE

								)

				}

				this.text	=	spannableString

				this.movementMethod	=	LinkMovementMethod.getInstance()

}
抽出したURL部分を押下可能にする
URLを抽出するための正規表現
押下時の処理を外部から渡す
class	LinkClickableSpan(

				private	val	url:	String,	private	val	onClickLinkListener:	OnClickLinkListener

)	:	ClickableSpan()	{

				override	fun	onClick(widget:	View)	{ onClickLinkListener.onClick(url)	}

}
最近実装した事例を紹介(URLテキスト関連)
次にActivity/Fragment/ViewHolderで反映させる処理&クリックイベント紐付け
binding.bindingModel	=	bindingModel

binding.executePendingBindings()

binding.descriptionTextView.setUrlClickable(

				onClickLinkListener	=	object	:	OnClickLinkListener	{

								override	fun	onClick(url:	String)	{	//	リンク先のページを開く等の処理	}

				}

)
①	ライブラリGroupieを利用したViewHolder
fun	bind(

				bindingModel:	XXXBindingModel,

				onClickLinkListener:	OnClickLinkListener?

)	{

				binding.bindingModel	=	bindingModel

				binding.executePendingBindings()

				binding.descriptionTextView.setUrlClickable(

								onClickLinkListener	=	object	:	OnClickLinkListener	{

												override	fun	onClick(url:	String)	{

																onClickLinkListener?.onClick(url)

												}

								}

				)

}
override	fun	bind(

				viewBinding:	ViewXXXBinding,

				position:	Int

)	{

				viewBinding.apply	{

								bindingModel	=	xxxBindingModel

								viewBinding.executePendingBindings()

								descriptionTextView.setUrlClickable(

												onClickLinkListener	=	object	:	OnClickLinkListener	{

																override	fun	onClick(url:	String)	{

																				onClickLinkListener.onClick(url)

																}

												}

								)

				}

}
URLリンク用のSpannableを適用直前に
executePendingBindings()を実行する
この記載を忘れていたり順番を間違え
ていると動作しなかった
②	Android純正のViewHolder
※	Activity	/	Fragmentで利用する場合
最近自分で調べているAndroid課金関連の事をまとめる
例.	まずはIn-App	Billingに関する下調べをしてみる
まずは基本的な事項を中心にして書き出す
①	書籍やWeb上の情報をもとに基本を整理する
②	流れを理解するために図解などに起こしてみる
③	矢印で用語やコードの断片に関する説明を加える
自分自身が結構忘れがちだったことやノートを書
く習慣があったのでこのスタイル
最近自分で調べているAndroid課金関連の事をまとめる
例.	iOS側のIn-App	Purchaseを比べてみてどうかを調べる
アプリ内課金の機能比較・定期購入編:

https://hack.nikkei.com/blog/advent20201202/
iOS課金は少し経験はあるけれども…
iOSとAndroidの課金における名称や用語の比較をす
る際にとても役に立ち本当に勉強になりました。
シーケンス図やプラットフォームとの関係性は異な
るがどこか似ている点はないだろうか…という観点
課金処理周辺の実装に関する基本を理解する
Google	PlayのSubscriptionドキュメント:

https://developer.android.com/google/play/
billing/subscriptions?hl=ja
(2)	iOS/AndroidでUI実装を比べてみた部分(Android特有の表現)
iOSとAndroidでのUI表現方針における細かい違い(1)
例1.	FAB(Floating	Action	Button)の実装
公式ガイド&リファレンス
iOS(UIKit想定時)で類似した表現をするためのライブラリ例
+ +
Floating	Action	Button
Settings
Taking	Picture
Add	Articles
Guide:

https://developer.android.com/guide/topics/ui/floating-
action-button?hl=ja
Reference:

https://developer.android.com/reference/com/google/android/
material/floatingactionbutton/FloatingActionButton?hl=ja
Library)	Floaty:

https://github.com/kciter/Floaty
大まかな部分は再現できそうではあるが、付随するアニメー
ション表現等にもこだわると意外に大変な予感も。
補足:
iOSとAndroidでのUI表現方針における細かい違い(2)
例2.	Bottom	Sheetの実装
Bottom	Sheet
実装時の参考資料
BottomSheetBehaviorを使う:

https://qiita.com/napplecomputer/items/5b3d1225533a59488ac3
[Android]	BottomSheetの実装:

https://qiita.com/kurramkurram/items/32b5b208c2ddb6ff4f51
Library)	PanModal:

https://github.com/slackhq/PanModal

Library)	FloatingPanel:

https://github.com/scenee/FloatingPanel
iOS(UIKit想定時)で類似した表現をするためのライブラリ例
こちらも大まかな部分は再現できるが、指の動きに伴った状
態変化等を考慮するとかなり難易度が上がるケースも。
補足:
iOSではSemiModal
やHalfModalの名
称で呼ばれる。
iOSとAndroidでのUI表現方針における細かい違い(3)
例3.	Toastの実装
Toast
公式ガイド&リファレンス
iOS(UIKit想定時)で類似した表現をするためのライブラリ例
Guide:

https://developer.android.com/guide/topics/ui/notifiers/
toasts?hl=ja
Reference:

https://developer.android.com/reference/android/widget/
Toast?hl=ja
Library)	Toast-Swift:

https://github.com/scalessec/Toast-Swift
iOSアプリで類似の表現をとるものはあまり多くはないが稀
に見かける程度。
補足:
参考:	Material	Designを理解する取っ掛かりとして
Componentの名称や構造を押さえてUI実装事例を知る様にする
Material	Designに関する基本事項を知っておくと実現したいUI実装に近づき易くなると思う
Material	Designを扱うために情報を追うTips

https://qiita.com/ehuthon-kd/items/7fb9b8c88ef6f040a7bf
Material	Designを最速で使いこなす

https://note.com/kenichiikeuchi/n/nc697dd8ad639
スマホアプリのUIデザインについて知っておきたいこと

https://qiita.com/takayuki/items/f37ff011aab4d0fc3235
エンジニア主導でAndroidらしさを表現する	〜Green	Android版リリースの裏側〜

https://cocoda.design/muttsu623/p/p14ee95eb082d
Material	Design	Official

https://material.io/components?platform=android
UIデザインや構成するComponentに迷った場合にはここへ立ち返る
iOSとの比較からComponentを適用する
(3)	JetpackComposeのβ版に少し触れた際の所感
JetpackComposeでの実装に実際触れてみる
Android	Dev	Challengeに取り組んだ方々のサンプル実装を参考にして再現
Android	Dev	Challenge	Week1	:

https://android-developers-jp.googleblog.com/2021/02/android-dev-
challenge-lift-off-with-jetpack-compose.html
僕自身もまだ完璧にキャッチアップを仕切れていないが、実際にコードに触
れてみると、SwiftUIやFlutterでの実装に近い感覚があった。

※まだβ版なので今後も様々な変更等がありそう…
自分が実装を試した時のGithubリポジトリ	:	

https://github.com/fumiyasac/JetpackComposePractice1
実際に自分が試した実装とお題:
まだWeek1だけなので今後は続きも挑戦します
新しく登場した宣言的にUIを構築する仕組みに触れてみる:
JetpackComposeでの実装に実際触れてみる
画面一覧表示に必要なComponentを構築する部分における簡単な概要
List内容表示部分に関する実装:
CardListItem()	要素
CatHeaderItem()	要素
Header表示部分に関する実装:
Columnを利用して2列にテキストを並べる。

paddingやfont等はModifierで調整。
FlutterのWidgetでも「Row	/	Column」の様に類似した利用のされ方をするWidgetが存在する。
ベース部分はRowを利用して作成し左側には
画像、右にはColumnをベースにしてテキスト
を並べていく(1列目はRowを更に利用)。

paddingやfont等はModifierで調整。
JetpackComposeでの実装に実際触れてみる
RecyclerView相当の処理でリスト一覧表示を構築する部分における簡単な概要
@Composable

private	fun	CatList(

				catLists:	List<CatEntity>,

				navController:	NavController

)	{

				LazyColumn(

								modifier	=	Modifier.fillMaxHeight()

				)	{

								items(

												count	=	catLists.size	+	1,

												itemContent	=	{	itemIndex	->

																//	MEMO:	index値に応じて異なるComponentを表示する

												}

								)

				}

}
表示に必要なデータリスト
タップ時の画面遷移用
既存のRecyclerView相当の処理をする。

cf.	LazyRowは横方向に配置する
SwiftUIやFlutterとも少し似てるな…

例.	SwiftUI	(LazyVGrid	/	LazyHGrid)
Headerが必要なことを考慮して+1する
実装に関するポイント:
itemIndex	=	0:	CatHeaderItem()
itemIndex	>	0:	CatListItem()
val	catEntity	=	catLists[itemIndex	-	1]

CatListItem(

				catEntity	=	catEntity,

				onClickItem	=	{

								val	detailRoute	=	…

								navController.navigate(

												route	=	detailRoute

								)

				}

)
JetpackComposeでの実装に実際触れてみる
セル要素タップ時の遷移先のサムネイル背景部分の表現に関する実装
Box()を利用した用途の重ね合わせに関する表現:
@Composable

fun	CatImageAndName(

				catEntity:	CatEntity,

				onClickContact:	()	->	Unit

)	{

				Box(

								contentAlignment	=	Alignment.BottomStart,

				)	{

								CatImageBox(

												imageAsset	=	catEntity.imageAsset,

												contentDescription	=	catEntity.name,

								)

								CatNameBox(

												name	=	catEntity.name,

												onClickContact	=	onClickContact,

								)

				}

}
①	Box要素を利用して画像と背景を重ねる
②	ベースをRow要素で作成しテキストとボタンを配置
おおもとになる部分はBox要素で作成
iOS/Androidを業務で両方取り組んでよかったこと
機能開発や設計面の歩調を合わせる観点に加えて円滑に進める点でも良かった
両OSの開発を並行するスタイルを通じて、業務の幅と同時に技術的な関心について徐々に広がりつつある実感。
1.	Designer/Engineer/PdMとのCollaboration&Communication:
チームメンバーと一緒に開発を進めていく中でペア作業を実施したりする場面や、実装の段階でOS間でのUI構造の違いや共通点
にも気がつく事ができエンジニア側からも歩み寄りをする機会も増えたのではないかと感じています。
2.	Material	DesignやHuman	Interface	Guidelineへの理解と意識:
類似した表現自体は頑張ればできる(技術的には可能)ではあるが、片方のOSではあまりお目にかからないものであるケースも
あり得るので、その様な場合には再度ガイドラインや参考アプリ事例を調べていくようになった様に感じています。
3.	両OS間の実装における相違点や類似点を踏まえながら設計や実装を組み立てていく:
ビジネスロジック部分等は設計思想や処理のコンテキストをある程度歩調を合わせられる可能性があり得る部分。

例.	Domain	Driven	Development	/	GraphQL	/	RxJava	(Reactive	Programming)	/	Combine	&	Coroutine
まとめ(感想)
変化の激しさを感じながらも新しい&知らない事を知る楽しさ
1.	両OS間で同様な表現をしているけど全く異なる&似ている部分を手がかりにしてみる:
例のテキスト表示の中にリンクURLを付与する例については意外と利用しそうな表現ではあったが大きく勝手が違いました。

他にもプラットフォーム特有処理や感覚が似ていそうな部分が理解の手がかりにできる部分もあった様に思いました。
2.	iOS/Android間でUI実装に合わせる場合は特有の表現には気をつけてみる:
Androidでは良く見かける表現やAndroid特有の特徴的なComponentを利用している部分は、必ずしも合わせる事が良いとは限らな
い場合もよくあるので、両OSのガイドラインを見比べたり参考アプリの調査をしっかりとすると良いかと思いました。
他にも何か今回の様なトピックがある程度まとまったタイミングで共有できればと思います。
3.	JetpackComposeに関しては引き続き色々と調査していきたい:
最近始めたFlutterやSwiftUIにも通じる部分があったので、その部分が理解の手助けになった場合もありました。

またDroidKaigi2021やAndroidDevChallengeを実践している方のコードに触れてみると実装イメージができる事もありました。
Thank	you	for	listening	!

Mais conteúdo relacionado

Mais procurados

少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発Fumiya Sakai
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集Fumiya Sakai
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップFumiya Sakai
 
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & CombineFumiya Sakai
 
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方Fumiya Sakai
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説Fumiya Sakai
 
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介Fumiya Sakai
 
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装Fumiya Sakai
 
iOSのUI構築小技集(小さなとこから始められる編)
iOSのUI構築小技集(小さなとこから始められる編)iOSのUI構築小技集(小さなとこから始められる編)
iOSのUI構築小技集(小さなとこから始められる編)Fumiya Sakai
 
Approach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOSApproach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOSFumiya Sakai
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめFumiya Sakai
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントFumiya Sakai
 
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fumiya Sakai
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録Fumiya Sakai
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)Fumiya Sakai
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-EdoMegumi Otani(Czenhe)
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてFumiya Sakai
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察Fumiya Sakai
 
Swift playgroundsでアプリを作る
Swift playgroundsでアプリを作るSwift playgroundsでアプリを作る
Swift playgroundsでアプリを作るFromF
 

Mais procurados (20)

少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発少しずつキャッチアップしていくAndroidアプリ開発
少しずつキャッチアップしていくAndroidアプリ開発
 
アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集アプリ開発におけるテキスト装飾のアイデア集
アプリ開発におけるテキスト装飾のアイデア集
 
RxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップRxSwiftとMVVMパターンと仲良くなる次のステップ
RxSwiftとMVVMパターンと仲良くなる次のステップ
 
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
試して感覚を掴んでみるUICollectionViewCompositionalLayout & Combine
 
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
iOSアプリUIとの触れ合いと歩む僕なりのSwiftの楽しみ方
 
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
動画プレイヤーアプリの開発を通じて学んだ機能を実現するための要点解説
 
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
ライブラリやView構造を有効活用して iOSアプリのUIをオシャレにするワザ紹介
 
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
部品に切り分けて考えるView構造とライブラリを上手に活用したUI実装
 
iOSのUI構築小技集(小さなとこから始められる編)
iOSのUI構築小技集(小さなとこから始められる編)iOSのUI構築小技集(小さなとこから始められる編)
iOSのUI構築小技集(小さなとこから始められる編)
 
Approach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOSApproach of Prototyping for making Application User Interface about iOS
Approach of Prototyping for making Application User Interface about iOS
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめできるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ
 
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒントiOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
iOS側のUIの特徴と見比べるAndroid側でのUI実装のヒント
 
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
Fundamentals of Swift & Redux (ReduxとSwiftの組み合わせ)
 
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
 
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
 
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-EdoiOSアプリ開発のためのSwiftビギナーズ勉強会 第6回    @Co-Edo
iOSアプリ開発のためのSwiftビギナーズ勉強会 第6回 @Co-Edo
 
まずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装についてまずはできるところから始める UnitTestとテストができる実装について
まずはできるところから始める UnitTestとテストができる実装について
 
UE4とBlenderでランニングコストを抑えるモダンなワークフロー
UE4とBlenderでランニングコストを抑えるモダンなワークフローUE4とBlenderでランニングコストを抑えるモダンなワークフロー
UE4とBlenderでランニングコストを抑えるモダンなワークフロー
 
メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察メディアアプリでよく見る無限スクロールするタブの動きへの考察
メディアアプリでよく見る無限スクロールするタブの動きへの考察
 
Swift playgroundsでアプリを作る
Swift playgroundsでアプリを作るSwift playgroundsでアプリを作る
Swift playgroundsでアプリを作る
 

Semelhante a 最近の業務やAndroid関連のインプットと振り返り

Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Fumiya Sakai
 
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくFumiya Sakai
 
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話Fumiya Sakai
 
Appmethodで何か作ってみる
Appmethodで何か作ってみるAppmethodで何か作ってみる
Appmethodで何か作ってみるYou&I
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付きMayumi Narisawa
 
あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)Fumiya Sakai
 
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)Fumiya Sakai
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介Fumiya Sakai
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpTakeshi Komiya
 
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!一希 大田
 
Githubについて
GithubについてGithubについて
Githubについてtadfmac
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングKeisuke Imai
 
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話KainumaRyo
 
F#で動かすraspberry pi+lego mindstorms
F#で動かすraspberry pi+lego mindstormsF#で動かすraspberry pi+lego mindstorms
F#で動かすraspberry pi+lego mindstormsMasuda Tomoaki
 

Semelhante a 最近の業務やAndroid関連のインプットと振り返り (16)

Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
Hint of“Passcode Lock”Screen and Logic (with LocalAuthentication).
 
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞくReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
ReactNative + Redux + NativeBaseでつくるサンプル実装をのぞく
 
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
Go言語で色々試行錯誤して フレームワークもどきを作ってみた話
 
Appmethodで何か作ってみる
Appmethodで何か作ってみるAppmethodで何か作ってみる
Appmethodで何か作ってみる
 
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付きデザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード  +  現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
 
あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)あのアプリの動きをUIKitのみでDIYしてみる(part2)
あのアプリの動きをUIKitのみでDIYしてみる(part2)
 
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
UIを作る際にライブラリにする? それともDIYする?の切り分け(僕の見解)
 
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
UIを作る際にライブラリにする?それともDIYする?の切り分け&実装のアイデア例と事例紹介
 
LIFFとLINE SDKの昨今
LIFFとLINE SDKの昨今 LIFFとLINE SDKの昨今
LIFFとLINE SDKの昨今
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
Flex入門
Flex入門Flex入門
Flex入門
 
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
 
Githubについて
GithubについてGithubについて
Githubについて
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディング
 
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
GitHub Actionsを使ってAPI外部公開時の作業を自動化した話
 
F#で動かすraspberry pi+lego mindstorms
F#で動かすraspberry pi+lego mindstormsF#で動かすraspberry pi+lego mindstorms
F#で動かすraspberry pi+lego mindstorms
 

Mais de Fumiya Sakai

RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介Fumiya Sakai
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐためにFumiya Sakai
 
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftMeasures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftFumiya Sakai
 
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになったFumiya Sakai
 
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)Fumiya Sakai
 
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するUIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するFumiya Sakai
 
Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.Fumiya Sakai
 
書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップFumiya Sakai
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版Fumiya Sakai
 

Mais de Fumiya Sakai (9)

RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
RxDataSourceをNSDiffableDataSourceへ置き換える際のTips集紹介
 
少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために少しずつ手厚くして不具合や仕様漏れを防ぐために
少しずつ手厚くして不具合や仕様漏れを防ぐために
 
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwiftMeasures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
Measures for Growth with Firebase Remote Config & Unit Testing Using RxSwift
 
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
既存プロジェクトで使っていたDIをお引っ越し&DIYすることになった
 
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
UI実装に関するセッションを 簡単ながら振り返ってみる(仮)
 
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察するUIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
UIKitやSwiftUIで表現や動きが特徴的なUI実装事例を考察する
 
Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.Hint of a little ingenuity about UI.
Hint of a little ingenuity about UI.
 
書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ書籍執筆からの今後に向けてのロードマップ
書籍執筆からの今後に向けてのロードマップ
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 

Último

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Último (10)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

最近の業務やAndroid関連のインプットと振り返り