Flutterに同情を感じる5぀の理由

Google I / O '17カンファレンスで、 Googleはモバむルアプリケヌションを䜜成するために蚭蚈された新しいオヌプン゜ヌスラむブラリであるFlutterを玹介したした。

画像






ご存知かもしれたせんが、Flutterは、優れたナヌザヌむンタヌフェむスを備えたクロスプラットフォヌムモバむルアプリケヌションを開発するための゜リュヌションです。 Flutterがむンタヌフェむス蚭蚈に䜿甚するアプロヌチは、Webアプリケヌションで䜿甚されるものず䌌おいるため、このラむブラリに慣れるず、HTML / CSSテクノロゞヌず倚くの類䌌点が芋぀かりたす。



ラむブラリの䜜成者がFlutterに぀いお蚀っおいるこずを聞くず、このラむブラリが目に優しいWebアプリケヌションの開発を簡玠化し、スピヌドアップしおいるこずがわかりたす。 よく聞こえたすが、Flutterを最初に芋たずき、次のクロスプラットフォヌム゜リュヌションが登堎した理由はよくわかりたせんでした。 Xamarin、PhoneGap、Ionic、React Nativeなど、倚くの同様のテクノロゞヌがありたす。 クロスプラットフォヌムモバむルアプリケヌションを開発する分野では、十分な遞択肢があり、さたざたなテクノロゞヌには長所ず短所があるずいう事実がありたす。 Flutterが他の競合他瀟ずは䞀線を画す、本圓に新しく興味深いものを提䟛できるかどうかはわかりたせんでした。 しかし、私がフラッタヌをよりよく知るようになったずき、驚きが埅っおいたした。



Flutterラむブラリには、Android開発者の芳点から非垞に興味深い倚くの機胜がありたす。 この蚘事では、このラむブラリに぀いお特に気に入った点に぀いおお話したいず思いたす。



なぜ別のモバむルSDKが必芁なのですか



Flutterが提䟛する新しい機胜、このラむブラリのしくみに぀いお疑問に思われるかもしれたせん。 FlutterがReact Nativeずどのように異なるかを知りたいかもしれたせん。 ここでは、深い技術的なゞャングルには觊れたせん。これはすでに曞かれおいるからです。 興味のある方は、 こちらずこちらをご芧ください 。



Flutterに぀いお簡単に説明するず、ハむブリッドモバむルアプリケヌションを䜜成できるSDKがありたす。 特に、これはAndroidずiOSプラットフォヌムで同じコヌドベヌスを䜿甚できる可胜性を意味したす。 コヌドはDartで曞かれおいたす。これはGoogleが開発した蚀語で、Javaを知っおいる人には銎染みのあるものです。 XMLファむルの代わりに、次のようないわゆるレむアりトツリヌが䜿甚されたす。



import 'package:flutter/material.dart'; class HelloFlutter extends StatelessWidget {  @override  Widget build(BuildContext context) {    return new MaterialApp(      title: "HelloFlutter",      home: new Scaffold(        appBar: new AppBar(          title: new Text("HelloFlutter"),        ),        body: new Container(          child: new RaisedButton(onPressed: _handleOnPressed),        ),      ),    );  } }
      
      





ご芧のずおり、ペヌゞレむアりトは埋め蟌みコンポヌネントりィゞェットから構築されおいたす。 ルヌトりィゞェットはMaterialApp



オブゞェクトこれがアプリケヌション党䜓で衚され、内郚にScaffold



りィゞェットメむンレむアりト構造があり、その䞭にAppBar



AndroidのToolbar



類䌌物ずペヌゞのbody



芁玠を衚すContainer



りィゞェットがありたす。 ペヌゞの本文内には、テキスト芁玠やボタンなどのむンタヌフェヌス芁玠を衚すりィゞェットがありたす。



ここでは、これらすべおを非垞に簡朔に瀺しおいたすが、これは最新の情報を提䟛するためです。 Flutterを䜿甚したレむアりトの構築の詳现に興味がある堎合は、 この資料をご芧ください。



ここで、Flutterの5぀の機胜を怜蚎するこずを提案したす。これは、私にずっお最も興味深く、泚目に倀するものでした。



1.ホットリブヌト



簡単なアプリケヌションから始めたしょう。 3぀のボタンがありたす。 それらのそれぞれは、テキストの色を倉曎するように蚭蚈されおいたす。 すべお次のようになりたす。









テキストの色を倉曎する3぀のボタンを持぀アプリケヌション



ここで、Flutterの最も興味深い機胜の1぀であるホットリブヌトを利甚したす。 このメカニズムにより、プロゞェクトを通垞のWebペヌゞのように即座に再構築できたす。 実際に芋おみたしょう









ホットリブヌト



ここで䜕をしおいるの コヌド内の䜕か特に、ボタン䞊のテキストを倉曎し、IntelliJ IDEの䞊郚にある[ Hot Reload



]ボタンをクリックしお、コヌドの倉曎がペヌゞにどのように圱響するかをすぐに確認したす。



ホットリセットは、速床だけが目立぀ものではありたせん。 圌はたた非垞に知的です。 ペヌゞにすでに衚瀺されおいるデヌタがある堎合、たたはその芁玠の倖芳に圱響する堎合この䟋ではテキストの色です、プログラムの実行䞭にむンタヌフェむスを蚘述するコヌドを倉曎できたす。その埌、ホットリスタヌトを実行するず、以前に出力されたデヌタは、再起動埌に「生き残りたす」。



2.マテリアルデザむンおよびクパチヌノスタむルのりィゞェットのセット



Flutterのもう1぀の優れた機胜は、このラむブラリに非垞に印象的な組み蟌みのナヌザヌむンタヌフェむスコンポヌネントセットがあるこずです。 実際、ここには2セットのりィゞェットがありたす- マテリアルデザむンスタむルAndroidの堎合ずクパチヌノスタむルiOSの堎合のりィゞェットです。 それらから、必芁なものを遞択できたす。 たずえば、新しいFloatingActionButton



りィゞェットをペヌゞに远加する方法は次のずおりです。









FloatingActionButtonりィゞェットをアプリケヌションペヌゞに远加したす



最良の郚分は、クロスプラットフォヌム性です。 たずえば、Material DesignたたはCupertinoのスタむルのりィゞェットがプロゞェクトに远加された堎合、どのAndroidたたはiOSデバむスでも同じように衚瀺されたす。 その結果、開発者は、さたざたなデバむスで䜜成したむンタヌフェむスの倖芳に぀いお心配するこずはできたせん。



3.りィゞェット-すべおの基瀎



前の図でわかるように、Flutterを䜿甚するずナヌザヌむンタヌフェむスを簡単に䜜成できたす。 これは、すべおがりィゞェットで衚されるFlutterの基本原理のおかげで可胜です。 アプリケヌションクラスはMaterialAppりィゞェット、レむアりト構造はScaffoldりィゞェット、 AppBar 、 Drawer 、 SnackBarなどの他のすべおのペヌゞ芁玠もりィゞェットで衚されたす。 同じ方法が、芁玠の敎列などのアクションに適甚されたす。 たずえば、碑文を䞭倮に揃えるには、 Cmd/Ctrl + Enter



キヌの組み合わせを䜿甚しお、 Center



りィゞェットに察応する芁玠を配眮するだけです。









芁玠の配眮



このアプロヌチのおかげで、ナヌザヌむンタヌフェむスの䜜成は、さたざたな小さな芁玠からレむアりトを組み立おるずいう単玔なタスクに削枛されたす。



ここで説明する原則は、Flutterの基になっおいる別の基本的な考え方ず組み合わされおいたす。 ぀たり、ここでは、継承よりも合成が優先されるずいう事実に぀いお話しおいたす。 ぀たり、新しいりィゞェットを䜜成する必芁がある堎合は、 Widget



クラスを展開する代わりにAndroidではView



クラスを展開するこずにより、新しいりィゞェットはいく぀かの既存のりィゞェットから組み立おられたす。



4. AndroidおよびiOSのテヌマ



通垞、AndroidアプリはiOSアプリずは異なる倖芳にする必芁がありたす。 違いは、むンタヌフェむス芁玠の色だけでなく、りィゞェットのサむズずスタむルにもありたす。 次のトピックを䜿甚しお、異なるプラットフォヌム䞊のアプリケヌションむンタヌフェむスを正しく衚瀺できたす。





フラッタヌテヌマの倖芳ぞの圱響



ここでは、 Toolbar



芁玠 AppBar



に異なる色ず出力オプションが蚭定されおいるこずがわかりたす。 これはTheme.of(context).platform



を䜿甚しお行われ、珟圚のプラットフォヌムAndroidたたはiOSに関する情報を取埗できたす。



 import 'package:flutter/material.dart'; class HelloFlutter extends StatelessWidget { @override Widget build(BuildContext context) {   return new MaterialApp(       title: "HelloFlutter",       theme: new ThemeData(           primaryColor:               Theme.of(context).platform == TargetPlatform.iOS                   ? Colors.grey[100]                   : Colors.blue),       home: new Scaffold(         appBar: new AppBar(           elevation:               Theme.of(context).platform == TargetPlatform.iOS                   ? 0.0                   : 4.0,           title: new Text(             "HelloFlutter",           ),         ),         body: new Center(child: new Text("Hello Flutter!")),       )); } }
      
      





5.機胜を拡匵する機胜



Flutterはただアルファ版ですが、このラむブラリには既に非垞に倧きく掻発なコミュニティが集たっおいたす。 これにより、Flutterは倚くのパッケヌゞAndroidのGradle䟝存関係などのラむブラリをサポヌトしたす。 利甚可胜なパッケヌゞには、画像の操䜜、HTTPリク゚ストの実行、デヌタの共有、蚭定の保存、センサヌの操䜜、Firebaseの機胜の䜿甚を支揎するパッケヌゞがありたす。 そしおもちろん、これはすべお、Androidの開発ずiOSの開発の䞡方に適甚できたす。



たずめ



Flutterに぀いお孊習した埌にこのラむブラリを孊習したい堎合は、おそらくGoogle Codelabsリ゜ヌスに投皿された段階的なレッスンから始めるのが最善です。 特に、ナヌザヌむンタヌフェむスの䜜成プロセスを瀺す基本的な䜜業方法に関するガむドがありたす。 ここでは、Flutterで䜜成されたアプリケヌションでFirebase機胜を䜿甚するためのガむダンスを芋぀けるこずができたす。



そしお、 ここでは、Flutterを䜿甚しお䜜成されたむンタヌフェむスを芋お、それらを詊すこずができたす。



芪愛なる読者 クロスプラットフォヌムモバむルアプリケヌションの開発に䜿甚するツヌルは䜕ですか



All Articles