<html amp transformed="self;v=1">
<html amp transformed="google;v=1">
$ npm install @ampproject/toolbox-cli $ amp help
$ npx @ampproject/toolbox-cli help
$ amp lint https://amp.dev PASS 1x1 images are specified by <amp-pixel> WARN All <amp-img> have reasonable width and height > [https://blog.amp.dev/wp-content/uploads/2019/06/cf_hero.png]: actual ratio [1999/1140 = 1.75] does not match specified [16/9 = 1.77] > [https://blog.amp.dev/wp-content/uploads/2018/10/img_20180926_163001-01.jpeg]: actual ratio [3680/2314 = 1.59] does not match specified [16/9 = 1.77] PASS Videos are under 4MB PASS <amp-video><source/></amp-video> syntax is used for video PASS Endpoints are accessible from cache PASS Endpoints are accessible from origin FAIL <meta charset> is the first <meta> tag > <meta charset> not the first <meta> tag PASS Runtime is preloaded
$ npx @ampproject/toolbox-cli lint https://amp.dev
$ amp lint -f sxg https://amp.dev PASS /amppkg/ is forwarded correctly PASS application/signed-exchange content negotiation is correct PASS dump-signedexchange -verify does not report errors PASS vary header is correct
$ amp optimize https://amp.dev $ amp optimize file.html
$ amp curls https://amp.dev https://amp-dev.cdn.ampproject.org/c/s/amp.dev https://amp-dev.amp.cloudflare.com/c/s/amp.dev https://amp-dev.bing-amp.com/c/s/amp.dev
$ amp curls --cache=google https://amp.dev https://amp-dev.cdn.ampproject.org/c/s/amp.dev
const Caches = require('@ampproject/toolbox-cache-list'); Caches.list().then(console.log);
$ amp update-cache https://www.example.com/ --privateKey /path/to/private-key.pem
const express = require('express'); const ampCors = require('@ampproject/toolbox-cors'); const app = express(); // That's it! app.use(ampCors())
import validatorRules from '@ampproject/toolbox-validator-rules'; validatorRules.fetch().then(rules => { // Get all website specific tag rules ... const tags = rules.getTagsForFormat('AMP'); // ...find the definition of the amp-img tag... const ampImg = tags.find(e => e.tagName === 'AMP-IMG'); const ampImgAttrs = ampImg.attrs // ...filter global, layout and amp-bind attributes... .filter(e => !e.name.startsWith('[') && !e.global && !e.layout) // ...extract the name... .map(e => e.name) // ...sort alphabetically... .sort(); // ...and display result in the console. console.log(ampImgAttrs); });
Q: 自己紹介をお願いします。
福岡で Web 系のエンジニアをしている前田恵里といいます。ものづくりが好きで、自分で小さなアプリを作ったり、ハッカソンに出たりして過ごしています。他のオーガナイザーに比べて技術力などはまだまだ劣ってるところが多いですが、少しでも良い方向に向かう人が増えればと思いコミュニティ活動をしています。
Q: GDG の活動に参加しようと思ったきっかけは何ですか?
始めは Android の技術に興味があり、その関係で GDG のイベントに参加したり、お手伝いをさせてもらうことがあったのがきっかけです。その後、現在の GDG Kyushu のオーガナイザーの松岡さんに GDG のサブコミュニティである WTM (Women Techmakers) のコミュニティの立ち上げに興味はないか?とお声がけいただいて、WTM Kyushu の立ち上げと GDG Kyushu の活動に本格的に参加させてもらうことになりました。
Q: GDG の活動に参加してみて、いかがですか?何か変わったことはありますか?面白いエピソードがあれば教えてください。
変わったこととしては、幅広い人との繋がりが持てたことだと思っています。 GDG は特定の技術のみでなく幅広いジャンルの人たちが集まれるようなコミュニティで、また、グローバルなコミュニティでもあるので、日本以外の方々とも繋がれるチャンスも多いコミュニティです。そのため、多くの刺激をもらえるコミュニティだと感じています。
それと、私自身は英語がまったくできないのですが GDG の方々は優しい方が多く、Google I/O への参加などを通して、今まであまり興味を持っていなかった海外に惹かれるようになりました。
Q: コミュニティ活動をしていて、良かった点は何ですか?
これは GDG Kyushu ではなく WTM Kyushu での話なんですが、女性国際デーに合わせたイベントを毎年春に、WTM では世界中でしており、今年は福岡でも行いました。その際に参加者の方何名かに LT をしていただいたのですが、その中で作りたいけど挫折してしまっていたサービスを 2 年前に WTM のイベントがきっかけで再度挑戦した、その後実際に作成することができ、自信と幸せを感じた、という内容の LT を行なってくださった方がいました。
これは紛れものなく本人の努力の賜物だと思いますが、WTM のイベントがきっかけと言ってくださったのは嬉しかったですし、そういった方が増えるといいなと思える体験でした。私としても、その方に感謝しています。
Q: これから、GDG Kyushu として、どういったことをしていきたいですか?
コミュニティを通して、少しでも良い方向に向かえる人が一人でも増えるようなコミュニティにしていきたいと思っています。同時に、福岡には多くのコミュニティがあるので、何かしら他のコミュニティさんと一緒にできれば良いなと考えています。
差出人: SMS メッセージ: あなたの 1 回限りのコードは 1234 です。
implementation "com.google.android.gms:play-services-auth:17.0.0" implementation "com.google.android.gms:play-services-auth-api-phone:17.1.0"
smsRetriever.startSmsUserConsent( senderPhoneNumber /* または null */)
val consentIntent = extras.getParcelable<Intent>( SmsRetriever.EXTRA_CONSENT_INTENT) startActivityForResult( consentIntent, SMS_CONSENT_REQUEST)
val message = data. getStringExtra( SmsRetriever.EXTRA_SMS_MESSAGE)
include ':app' include ':module1' include ':module2' include ':module3' include ':module4' // 4 つの features モジュールにカスタムのパスを設定。 // こうすることで Android Studio に空の「features」モジュールが表示されなくなる。 project(":module1").projectDir=new File(rootDir, "features/module1") project(":module2").projectDir=new File(rootDir, "features/module2") project(":module3").projectDir=new File(rootDir, "features/module3") project(":module4").projectDir=new File(rootDir, "features/module4")
このアップデートは、オンデマンド モジュールのコードラボの最新版に含まれています。