2012-02-08
高専カンファ in 岐阜 #kosenconf でニーソしてきました!
先週末に行われた高専カンファ in 岐阜の基調講演を頼まれたので『プログラミングと共に歩んできた10年を振り返りながら、常に上を向いて技術を磨く大切さ』というタイトルで発表&参加してきました!
- 勉強会Lifeをふりかえりながら勉強会いいよ!という話
- Androidライブコーディング
- iOS/Titanium(ライブコーディングは時間が足りなかったので)軽く見せる
- プログラマという職業について
- 高専カンファで同志見つかるといいね!まるっ!
という流れで話しました。
「常に上を向いて技術を磨く大切さ」というタイトルは勢いで付けたのですが、その後、推敲するうちに「コミュニティに参加するといいよ!」という話の方がいいかなぁと思い直し、だいぶそっちよりの内容になりました。
スライド
Ust
講演時間が50分あるのですが、まったり話してるので暇な時にまったり見て(聞いて)みてください><
講演ふりかえり
ソフトウェア関係のイベントや勉強会にしか行ったことがなかったので高専カンファもいつものノリで準備して行ったら情報系じゃない人の方が多いんですね!
違う学科の人とかつまんなかったらごめんなさい><
もう少し社会人とは的な話が良かったのかなーでも50分お話聞くだけじゃ面白くないよねーとか勝手に思ったりして。
あと、実行委員のみんなとのミーティングで「他の高専カンファってどんな感じなの?」って聞いて教えてもらった、じゅーんさんのUstアーカイブ http://www.ustream.tv/recorded/2508394 を事前に見たので、てっきりみんなライブコーディングするもんだと思ったよ!釣られたよ!
でも、初めての岐阜での開催に地元(厳密には愛知県名古屋市の僕ですが)の同志として少しでも華を添えられればと思い。また、岐阜高専のみんなに少しでも刺激になればと思いやってみました!
ニーソ
前日
@gabu ニーソの希望色を教えてください。今ならどら娘と直接交渉ができます
2012-02-03 21:20:35 via Tween to @gabu
@dego_96 白でお願いします。
2012-02-03 21:30:46 via twicca to @dego_96
@gabu すいません。黒しか用意できなさそうです
2012-02-03 22:40:16 via twicca to @gabu
@dego_96 大丈夫です。黒でも問題ありません。
2012-02-03 23:04:26 via twicca to @dego_96
なんで俺は明日の高専カンファのドラ娘が着用するニーソの色の要望を聞かれてるんだろう?別にニーソとか興味ないんですけどね^^;
当日の朝
がぶさんごめんなさいニーソは黒です さすがに白買いに行く時間はないようだ #kosenconf
@ykc0711 大丈夫だ、問題ない。 #kosenconf
2012-02-04 09:00:55 via YoruFukurou to @ykc0711
え、今日ニーソカンファレンスなの。なにそれ。行きたい。
そろそろ出れば間に合う感じ? > ニーソカンファ岐阜
なにそれ俺も行きたい RT @vvakame: え、今日ニーソカンファレンスなの。なにそれ。行きたい。
いったいいつから岐阜カンファはニーソカンファになったのだろうか? #kosenconf
ニーソカンファいきたくなってきた
ニーソカンファに俺も行きたい #kosenconf
【急募】名駅で白ニーソが買えるお店
@gabu tutuanna*とかありそうですね!
2012-02-04 09:36:10 via Echofon to @gabu
ツツアンナにあるらしい!
がぶちゃんの基調講演のタイトルにニーソが全く絡んでいないだと!
基調講演2『プログラミングと共に歩んできた10年を振り返りながら、常に上を向いて技術を磨く大切さ』
私が持ってる白ニーソを岐阜に向かって投げるか
高専カンファレンスの方は朝から白ニーソとか黒ニーソとか言ってて、さすが紳士の社交場は違うなと思った
つつあんなは近鉄パッセ6Fか、ちと遠いな
高専カンファレンスで基調講演をする人間が白ニーソを調達しに行こうとしているのが、これまでのあらすじ。
近鉄パッセ開店待ち
朝一で人がなさすぎて浮いてる
ちょ、つつあんな、、、下着屋さんじゃねーか、、、
これは気まずい、、、というか開店直後からドロイド君Tシャツにパーカーの男が白ニーソだけピンポイントで買いにきたら店員のお姉さんもひくだろうな、、、これはつらい
つつあんなでメールするふりしながら平静を装いつつニーソ物色してる、、、いろいろあるな、、、
緊張してすごい汗かいてる、、、
ニーソが多すぎて分からないから聞いてみた「白いニーソが欲しいんですが」「ニーハイはこちらになりますねー」( ・_・)
小さいリボン付きにした
白ニーソゲット!
ニーソって367円で買えるんだ。安いな
もういっこ買えばよかったかな
ニーソ誰に渡せばいいのw
白ニーソ渡した #kosenconf
#kosenconf 参加者のみなさんへ。塚田さん(@gabu)のお話はかなりためになると思うのでしっかり聴いておいてほしいです。ただちょっと掘り返すと変態成分が滲み出てきますので、懇親会では気合いを入れて発掘していただければと思います。
がぶちゃんがブーケトスみたいに白ニーソ投げて取れた人が一番早く変態になれるって遊び妄想してた
んで、これ
んで、すごい勢いで白ニーソをディスられたので大人げなく
あえて言おう「黒が好きとか当たり前だろ!」
参加ふりかえり
- 高専カンファ&高専生アツい!
- 「高専生はチート」を身をもって体感。
- 高専生的にはロボコンが最もアツいっぽい。
- ロボコン関係がプログラミングよりアツいっぽいので情報系も何かやろうぜ!
実行委員の皆様へ、初めての高専カンファ開催ということでノウハウ0からのスタート本当に大変だったと思います><お疲れ様でした!
実行委員長へ、すげー輝いてたよ!やってやるんだという気持ちが伝わってきた!本当頼もしかった!なにより笑顔が素敵だった!お疲れ様でした!
写真
集合写真
委員長胴上げ
当社比250%ぐらい映りが良かったので記念に
2011-12-21
画像圧縮ツール ImageOptim がすごい!iPhoneアプリのサイズ問題など
iPhoneアプリはサイズを20MB以下に収めないとユーザがインストールしようとした時にWiFiが必要になるので、開発者側としては何としても20MBに収めるためにうんうん悩むわけです。(いままさに)
ImageOptimでボタン一発
ImageOptim ? all image compression tools in one Mac app でボタン一発でJPEG/PNGファイルのサイズを圧縮してくれます。
あんまりよくわかんない圧縮をするとiPhoneアプリでちゃんと表示されるか心配だったのですが、今のところ不具合はありませんし、Retinaディスプレイで見ても、人間の目では劣化が感じられない(気がする)ので問題なさそうです。(見る人が見ると分かるのかなぁ?)
こんな感じでアルファが多い画像は特に圧縮率が高いみたいです。ちなみに、Againでもう一回圧縮してもほとんど圧縮されませんでした。
結果
開発中のiPhoneアプリで使っている大小さまざまな250個のPNGファイルを圧縮したところ、合計で
6.9MB(7255213バイト) が 5.8MB(6096125バイト) になりました!約16%ダウン!
むちゃむちゃ圧縮できるわけではないですが、最後の仕上げにダイエットしておくと何かと良いかと思います。
追記
デフォルトでは有効になっていないPNGOUTを落としてきて設定で有効にしてから、再度、圧縮前のファイルに圧縮をかけてみたら、さらに圧縮できました!
6.9MB(7255213バイト) が 5.6MB(5858027バイト) になりました!約19%ダウン!
さいごに
ImageOptimは有名な画像圧縮ツール/コマンドがビルトインされているので(環境を整える必要がなくて)非常に便利なんですが、他にもオススメな画像圧縮ツールがあれば教えて下さいm(_ _)m
あと、画像圧縮以外にiPhoneアプリを軽量化するTipsなどあればばばばm(_ _)m
クレクレ君ですみません :P
2011-12-17
MIT版App Inventorをローカルで動かしてみた。動いたよ!
App Inventor | |
![]()
このエントリーは 日本App Inventorユーザー会 Advent Calendar 2011 のエントリーです。
いよいよ、12月末で現在のGoogle版App Inventorはサービス停止します。既にアプリを作成している皆様は、App Inventorのプロジェクト一覧のページで「Download All Projects」をクリックして、大事なプロジェクトを全てダウンロードしておきましょう。
そして、MIT版App Inventorは2012年第1四半期にサービスを開始するとのことです。1月1日から利用できないのは残念ですが、少し待つと再び使えるようになりますので、ご安心ください。また、正式に発表されたらご連絡したいと思います。
ついにApp Inventor自体をダウンロードできるようになったよ!
MITに移管され、オープンソース化する予定のApp Inventorですが、実は、まだソースコードはダウンロードできませんが、バイナリはダウンロードできます。これで誰でもApp Inventor自体をダウンロードして動かすことができます。
今回は、ローカルで動かすところまでできたので手順を共有したいと思います。
App Inventorを動かすには
MITがApp Inventorを動かす方法を公開しています。
Running App Inventor services with the MIT JAR files (英語)
MITのドキュメントは英語なので、日本App Inventorユーザー会の方々が和訳してくださいました。
http://www.app-inventor.jp/shiryoushuu/transrate (日本語)
基本的に手順どおりでOKです。
手順メモ
ここから開発者向けなので丁寧さが下がりますがご了承ください。おそらく開発者の方ではないと難しいと思いますので。
Google App Engine SDK for Java
App InventorはApp Engineで動作するのでGoogle App Engine SDK for Javaが必要です。
http://code.google.com/intl/ja/appengine/downloads.html#Google_App_Engine_SDK_for_Java からダウンロード、解凍して、適当なフォルダに置いて、bin/にパスを通します。
App Inventorのバイナリをダウンロード
http://appinventoredu.mit.edu/download-jar-files から最新のファイルをダウンロードします。これは随時アップデートされるので、ページにも書いてありますが http://groups.google.com/group/mit-appinventor-jars にJoinしてアップデート情報をウォッチしておきましょう。
解凍すると以下の2つのファイルができます。
- appinventor-Nov-24.tgz : App Engine用
- for-BuildServer.tgz : ビルドサーバ用
ビルドサーバ用
for-BuildServer.tgzを解凍すると、
- BuildServer.tar
- launch-buildserver
が、できます。BuildServer.tarも解凍します。すると、lib/フォルダができます。
これで、
- launch-buildserver
- lib/
の状態になればOKです。
あとは、launch-buildserverを実行するだけです。
./launch-buildserver
ログがbuildserver-log.outというファイルに出力されるので見てみます。
tail -f buildserver-log.out 情報: Root resource classes found: class com.google.appinventor.buildserver.BuildServer 2011/12/17 22:23:12 com.sun.jersey.api.core.ScanningResourceConfig init 情報: No provider classes found. 2011/12/17 22:23:12 com.sun.jersey.server.impl.application.WebApplicationImpl _initiate 情報: Initiating Jersey application, version 'Jersey: 1.3 06/17/2010 05:04 PM' 2011/12/17 22:23:13 com.sun.grizzly.Controller logVersion 情報: Starting Grizzly Framework 1.9.18-i - Sat Dec 17 22:23:13 JST 2011 Visit: http://192.168.11.3:9990/buildserver Server running
9990ポートで起動しているようです。(現状、ポートを変える方法は探したけどないみたいです。)
とりあえず、上のようにログがでていればOKです。
ちなみに、停止したいときは、それっぽいコマンドがないのでkillします。
App Engine側
appinventor-Nov-24.tgzを解凍すると、appinventor/war/というフォルダができます。このwar/フォルダがApp Engine用Webアプリのエントリポイントです。
以下のコマンドで実行します。
dev_appserver.sh appinventor/war/
Webブラウザから http://localhost:8080/ にアクセスすると、
そのままLog InでOKです。(ホワイトリストを設定している場合は、そのメールアドレスでログインしてください。)
利用規約(?)にacceptすると・・・
動いたー!ローカルでApp Inventorが動いてるー!
Google版App Inventorのプロジェクトファイルがアップロードできるか確認します。
ダウンロードしておいたzipファイルを選択して、OK!
うおー!ちゃんと引き継げてるー!おかえり!アリバイツイート!
さてさて、Blocks Editorを・・・
許可すると・・・
うおー!Blocks Editorも動いてるー!
では、さっそく実機で動くか確認を・・・
動いたー!Google版と同等に使えるようです!さすがMITさん!
ちなみに、App Inventorをローカルではなくサーバで運用するためには、上の手順書を参照してください。ホワイトリストぐらいはやっておいた方が良いかと思います。
てか、ソースコードまだー(ばんばん
ということで
App InventorのMIT移管は順調のようです。ほっと一安心。ただ、スタートが2012年第1四半期としか言われていないので1月1日からはしばらく使えなくなります。生まれ変わったApp Inventorが使えるようになるまでぐっと待ちましょう。
ちなみに、日本App Inventorユーザ会でMITがサービスを開始するまでの空白期間を自分たちのサーバで運用しようという活動をしています。
興味がある方は、以下をチェックしてみてください。
申し込みページ: https://sites.google.com/site/appinventorjp/noahs_arc_project
MLのディスカッション: https://groups.google.com/group/app-inventor-jp/browse_thread/thread/ff7491bee4be8380?hl=ja
それでは!
30分でつくれるAndroidアプリ Google App Inventorではじめよう!
- 作者: 塚田翔也
- 出版社/メーカー: ソシム
- 発売日: 2011/08
- メディア: 単行本
- クリック: 21回
- この商品を含むブログ (8件) を見る
2011-12-13
きっと不便を便利にするためにコードを書き始めた僕たちへ
このエントリはAndroid Advent Calendar 2011の裏エントリです。
Android Advent Calendar 2011は表25名、裏25名で書いているのですが、同日の表エントリではAndroid界のイケメンこと @sobachanko さんが表らしい素晴らしいエントリ きみはGalaxy Nexusを手に入れることができるか - そばとちゃんこの競演 を書いてます。
さて、本題。
不便を便利にする
Advent Calendarで何書こうかなぁと数日前から考えていた所、Tumblrで見かけて感銘を受けた言葉がこちら。(今見返してみたら2007年のエントリなんですね。強い言葉というのは時間が経っても魂を宿し続けるんだなぁと思った。)
世の中いろいろと不便なことが多くて、プログラマはそれを改善しようとしている。
世の中こんなにバグだらけなのに、バグほったらかしでゲーム作ってる場合じゃねえだろ、と思う。
電車の中で暇なのは不便なのでゲーム作ってくれてありがとうと思ったりもする。
でも基本的にはゲーム作ってる場合じゃねえだろ、って思う。
最速インターフェース研究会 :: つまらなくて役に立つ物を作るということ
今回はAndroid縛りなのでAndroidアプリについて置き換えて考えてみます。
不便を便利にするAndroidアプリといえば
ですよね。
Simeji
Simejiに関しては、こちらのインタビュー記事 “変なソフト”として進化する人気Android日本語入力「Simeji」 - Androidアプリケーション開発ストーリー:ITpro が詳しいのでぜひ読んで頂きたいです。
IMoNi
IMoNiに関しては、こちら 『IMoNi』iモードメールアプリ?Androidでもiモードメールを使おう | andronavi スマホ向けアプリが見つかる! が分かりやすいです。簡単に言うとSPモードメールが登場するまで@docomoのメールはブラウザでいちいち見に行かないとメールを受信して見られないという、とんでもない不便を便利にしたアプリです。SPモードメールが登場した後も「IMoNiの方が良い」という意見を見かけることも多かった上に、先日、Galaxy Nexusを買いに行った時にドコモショップのお姉さんに
GN契約中、「ネクサスは、SPモードメールがまだ使えないので使えるようになるまで...イモニって知ってますか?お芋さんのアイコンのアプリなんですけど...それを使えばOKですので」って言われた。お姉さん可愛い。
とまで言われるようなアプリです。
Androidの黎明期を支え、今なお必須アプリとして多くの人の不便を便利にしているアプリだと思います。他にも多くの便利なアプリがあると思いますが、代表的なものということでご容赦ください。
黎明期を過ぎ、今やAndroidは4.0にまで進化しました。Android端末も普及しました。いまいちど振り返ってみてください。僕らのまわりは便利になったでしょうか?残念ながら多くの不便が残っていると思います。
ユーザに一番近い所で
僕らは様々な技術を持ち、様々なレイヤーで、様々なプログラムを書くことができます。その中でも何かの因果でAndroidに関わる僕らはユーザに一番近い所に立っているわけです。そして、きっと僕らプログラマは少しでも世の中をよりよくしたいと思っているはずです。ちょっと話はそれますが今年は「起業」や「スタートアップ」という言葉を目にすることが多かった気がします。彼らは「世界を変える」と言います。これもまた(スタートアップの事業内容によりますが)不便を便利にする延長線上にあるだけで、本質は同じだと思います。(繰り返しになりますが不便を便利にする以外のものも多いです。)
Android端末はユーザが毎日持ち歩き、常に触れるものです。ここに不便があることは悲しいことです。
しかし、企業からSimejiやIMoNiのようなAndroidアプリは登場しません。理由は分かりますよね。
そこで、僕らAndroidアプリ開発者の出番というわけです。上の図の「自分が不便に思うこと」が出発点で、それに共感する人の数が増えていくだけで、いきなり「世界を変える」必要なんてないと思います。少なくともAndroidアプリだけで世界は変わらないけどね!本気でそっちの道を行くならサービスレベルで考えないと(というのはまた別のお話)ということで。
何が言いたかったかたいうと「俺得アプリでおk」ということです。はい。
Androidのこれから
- 進化のスピードが速い
- 普及しているバージョンがバラバラ
- 機種依存やメーカのバグにゲンナリ
- 儲からない
本業でAndroidに携わっている人の中には、正直、疲弊している人も多いんじゃないでしょうか。
↓こんなんだしね。
でも、ごめんなさい。探したけれど、銀の弾丸はないんだ。本業で携わっている人は、このままバッドノウハウを蓄積して、品質の高いアプリケーションを書いてこそプロフェッショナルじゃないか(え
まー手間のかかる子ほど可愛いって言うじゃない?
ということで、来年も頑張ろうね☆(ゝω・)vキャピ
さいごに
きっと不便を便利にするためにコードを書き始めた僕たちへ
僕たちがやるべきことは、きっと目の前に転がっていて、別にそれはAndroidだけに限った話じゃないかもしれないよ?
追記
Simejiが数億円で買収!
2011-11-07
Googleの中の人が作ったAndroidアプリioschedを参考にしよう!(とりあえずビルドまで)
Android | |
![]()
Googleの中の人が作ったGoogle I/O用のAndroidアプリ iosched がオープンソースで公開されているのですが、Androidアプリを開発する時に非常に参考になるので(Table対応したバージョンから難解になったのがネックですが)紹介したいのですが、ビルドするまで少し作業が必要なのでダウンロードしてビルドするところまで手順をメモっておきます。
Mercurialをインストールする
hg clone https://code.google.com/p/iosched/
と書いてあって、svnやgitではなくhgなのでMercurialが必要みたいです。
ということで、brewでさくっと入れようかなーと思ったけど何か嫌な予感(今思えば今回に限ってなんで嫌な予感を感じたか不思議でしょうがないけど)がしてググったらbrewでMercurialを入れるのはメンドそうなので素直にパッケージをインストールしちゃいましょう。
ダウンロードはこちらからMacのバージョンに合ったファイルをダウンロードしてください。
ダウンロードしたzipファイルを解凍して、mpkgファイルをダブルクリックしてインストールしてください。
インストールできたら、ターミナルからhgと入力して以下のように出ればOKです。
$ hg Mercurial - 分散構成管理ツール 基本コマンド: add 指定ファイルの追加登録予約 annotate ファイル行毎のリビジョン情報表示 clone 既存リポジトリの複製 commit 指定ファイルないし全ての変更内容のリポジトリへの記録 diff 作業領域全体(ないし指定ファイル)の差分抽出 export 1つ以上のリビジョンに対するヘッダおよび変更内容の出力 forget 次回コミットにおける指定ファイルの登録除外 init 指定されたディレクトリでの新規リポジトリの作成 log リポジトリ全体ないしファイルの変更履歴の表示 merge 作業領域の内容と他のリビジョンのマージ pull 指定リポジトリからの変更履歴の取り込み push 指定リポジトリへの変更履歴の反映 remove 次回コミットにおける指定ファイルの登録除外 serve 独立したウェブサーバの実行開始 status 作業領域のファイル操作状況の表示 summary 作業領域状態の概要表示 update 作業領域の内容更新(ないしリビジョンの切り替え) 全コマンドの一覧は "hg help" で、 コマンド詳細は "hg -v" で表示されます
今回はcloneするだけなので他のコマンドはとりあえず置いておきましょう。
ソースコードをチェックアウトする
適当なディレクトリで
hg clone https://code.google.com/p/iosched/
Eclipseでインポートする
ちょっとその前に確認
もし、最近ADTやAndroid SDKをアップデートしていない人は最新バージョンに上げておきましょう。4.0も出ましたし。
Updating the ADT Plugin でADTをアップデートしたら、
もし、4.0とか3.2とかインストールしていなければ、とりあえず全部入れておきましょう。
インポート
Androidプロジェクトを新規作成
Create project from existing sourceを選択、Project Nameが勝手に変わるのでioschedと入力、Nextボタンをクリック。
Android 3.2を選択して、Finishボタンをクリック。
android-support-v4.jarを追加する
最近のAndroidアプリは同一のソースコード(アプリ)でタブレットでもスマートフォンでも動くようにFragmentという仕組みを使って開発する必要がでてきたり、タブレットに対応する必要がないアプリでも来たるICS(Android 4.0)に備えて(もうSDKは出てますが)Fragmentに慣れておくべきとGoogleの中の人が仰られていたりで、別途、勉強する必要があるのですが、ここで説明しだすと量的に無理があるので今回はとりあえず飛ばして、ビルドするところまでいきましょう。
プロジェクトのlibsディレクトリにandroid-support-v4.jarというライブラリを置いてビルドパスを通す必要があります。
android-support-v4.jarはAndroid SDKのディレクトリのextras/android/compatibility/v4/にありますので、Eclipseのioschedプロジェクトのlibsディレクトリにコピーして、右クリック > Build Path > Add to Build Pathでビルドパスに追加します。
これでコンパイルエラーがだいぶ減るんですが、まだエラーが残ってます。
libGoogleAnalytics.jarを追加する
ioschedはGoogle Analytics SDK for Androidのサンプルコードも含んでいるらしく、そのライブラリが必要です。
http://code.google.com/intl/ja/mobile/analytics/download.html からGoogle Analytics SDK for Androidの GoogleAnalyticsAndroid_1.3.1.zip をダウンロードして、解凍するとlibGoogleAnalytics.jarがあります。
android-support-v4.jarと同様に、libGoogleAnalytics.jarをEclipseのioschedプロジェクトのlibsディレクトリにコピーして、右クリック > Build Path > Add to Build Pathでビルドパスに追加します。
これでコンパイルエラーがなくなりました。
実行する
あとはお手持ちのお好きな端末やエミュレータで実行してみてください。
スマートフォンだと
タブレットだと
こんな感じで、他のScheduleやSessionsなどもUIがスマートフォンとタブレットで変わります。
あとは
ソースコードを読んでみましょう。Googleの中の人が作ったAndroidアプリのソースコードなんて、そうそう読むチャンスなんてないと思うので非常に貴重な経験と多くの発見ができると思います。冒頭でも書きましたがタブレット対応のために難解になったのがアレなんですが・・・
易しい所だと、res/配下のファイルの命名規則なんかは真似すると整理できていいと思います。layoutファイルはactivity_やfragment_やlist_item_などのプレフィックスを付けるとか。drawableの定義の仕方とか。小さな所から真似ていけばいいかなと思います。
ソースコードの方だと、パッケージ設計やクラス設計、継承の使い方とか。ダッシュボードUIの作り方とか。ActionBarの実装とか。
ICS(Android 4.0)でまた色々変わっちゃうとは思うのですがね(ぜぇぜぇ
おまけ
タブレット対応前のシンプルなioschedはどこにいった?
ググったらunderhilllabsさんが古いioschedをがっつりコピーしてgithubに突っ込んでいてくれてたおかげで発見できました。けれど、.svnがそのままコミットされていたりいろいろ残念な感じだったのでforkしてゴミを削除したりapi versionを修正したりしときました。
https://github.com/gabu/iosched2010 からcloneしてください。Android初めてという方は、こっちの方がタブレット対応する前のAndroid 2.1向けのシンプルなioschedとなっておりますのでソースコードも読みやすいかと思います。
ICS(Android 4.0)でどっちみちFragmentは避けて通れないという噂もあるけど(げふんげふん
ではでは!

































こちら http://www.socym.co.jp/book/4883377660.html に詳細が書いてありますが、MITによる運営が開始されるまでは、日本App Inventorユーザー会が運営しているApp Inventorを利用することができます。