Native American 12
Development

JavaScriptでネイティブアプリを開発できるTitanium MobileとAlloyをつかってみよう その3

前回はalloy generateコマンドでcontrollerとviewとstyleを生成してモーダルウィンドウを表示してみました。
今回は右から新しいウィンドウがスライドして現れる画面遷移を作成してみたいと思います。

コントローラーの初期状態

まずはメインのコントローラであるindex.jsの中身を以下のようにして、初期画面を表示するだけにしてみます。

$.index.open();

スクリーンショット 2014-01-31 10.09.19

ここで使っている $ はalloyの提供するBaseControllerクラスを継承したindexコントローラのインスタンスです。
また$.indexはビュー内のWindowにid属性がふられていない場合にビューファイルの名称でWindowオブジェクトにアクセスできるようです。

ビューを画面遷移に対応させる

ビューファイルを以下のように書き換えて右へ右へと画面遷移を出来るように準備します。

<Alloy>
    <NavigationWindow id="navigationWindow" platform="ios">
        <Window class="container" title="First Win">
             <Button title="click me" />
         </Window>
     </NavigationWindow>
</Alloy>

WindowをNavigationWindowというオブジェクトでラップしています。こうすることで画面上部にタイトルや前の画面に戻るためのナビゲーションバーが表示されるようになります。

ビューファイルでNavigationWindowを追加し、id属性を定義したのでコントローラーで $.index.open() のままだとエラーしてしまいます。
なので「navigationWindowというidのWindowを開く」というコードに変更します。

controllers/index.js

$.navigationWindow.open();

ビルドしてみると以下のように表示されます。

スクリーンショット 2014-01-31 10.27.42

 

ボタンのイベントハンドラを定義

そして中央に配置したボタンのタグにonClick属性を追加してここをタップすると遷移する動作を行うようにしてみます。

<Button title="click me" onClick="openWin" />

またコントローラーに戻って以下のようにボタンに紐付けたイベントハンドラを定義してみます。

function openWin(e) {
  console.log(e);
}

まずは単に受け取ったイベントオブジェクトをconsole.logしてみるだけにしました。このままビルド(titanium build -p ios)してボタンを押すと以下のようなログが出力されます。

[INFO] {
[INFO]     bubbles = 1;
[INFO]     cancelBubble = 0;
[INFO]     source = "[object __alloyId1]";
[INFO]     type = click;
[INFO]     x = "38.5";
[INFO]     y = "20.5";
[INFO] }

今回は特にイベントオブジェクトの中身に応じて処理を切り替えることはしませんが、こうして書いたコードを一つ一つビルドして確認すればなにか不具合が起きた時に手戻りが少なくて済むようになる事が多いのでなるべくこまめにconsole.logをするようにしています。

さて、このopenWinの中で新たなWindowを生成し画面遷移を起こさせてみたいと思います。

function openWin(e) {
  var win = Ti.UI.createWindow({
     title: 'Sub Win',
     backgroundColor: '#fff'
   });
   $.navigationWindow.openWindow(win);
}

TiとはTitaniumオブジェクトのエイリアスでどちらでも同じものです。Ti.UIというオブジェクトに様々なビューオブジェクトを生成するcreateXxxといったメソッドが定義されています。createWindowメソッドを使うと真っ黒で何も無いWindowが生成されるのでtitleに「Sub Win」、背景色を白に設定しました。

次に$.navigationWindowのopenWindowメソッドに生成した新しいWindowを渡すことでアニメーション付きで画面遷移をしてくれるようになります。
画面遷移の途中は早すぎてキャプチャできないですが遷移後は以下の様な画面が表示されます。

スクリーンショット 2014-01-31 10.49.34

真っ白なWindowを生成しただけですが左上に最初の画面に戻るためのボタンが用意されていますね。これがモーダルにはないNavigationWindowの特徴です。

まとめ

今回紹介した画面遷移はかなりポピュラーなUIデザインパターンなのでこれを覚えておくだけでも簡単なアプリが作れてしまいそうですよね。
しかしNavigationWindowはiOSにしか定義されていないクラスのようです。Androidは端末そのものに戻るボタンを実装しアプリケーション側では意識する必要がないようにデザインされているためでしょう。

要約すると

  1. NavigationWindowにidをふる
  2. コントローラーからふったidを参照して初期画面を表示する
  3. ボタンのonClick属性でイベントハンドラを定義する
  4. 新しいウィンドウを生成してNavigationWindowのopenWindowメソッドに渡す

以上です。

標準
title-font
Design

Font Awesomeを知るべし

こんにちは新人森田です。
今日はちょっと女子力高めでお送りしたいと思います

全然キャラじゃなかった!やめます。
なんでいきなりこの流れかというと、単純にアイコンフォント使いたかったからです。こまごましたもの好きとしてはこのこまごま感はたまりません!ガラケーの時に絵文字サイトから毎日絵文字DLしてたし、当然といえば当然の流れなのかも。

そんな見て楽しい・使って楽しいアイコンフォントが今回のテーマです。

アイコンフォントとは

サイトにアイコンを使おうと思ったら、まずアイコン画像を作ってアップして…というのがこれまでの流れでした。でも今はwebフォントサービスの充実によって、アイコン使用がもっとお手軽になったんです。

webフォントについてはまた今度まとめたいと思うので、ここではさわりだけ。
フォントは通常、使用デバイスに入っているものしかブラウザに反映されません。WindowsだとPCで明朝体(小説の本文みたいな文字)を見る機会って少ないんじゃないでしょうか。そうなるとせっかくフォントにもこだわって作ったデザインが台無しです。でも、webフォントを使えばサーバーからフォントファイルを開いて使えるので、見え方が統一できます。

そんな便利なwebフォントは文字だけではなく、アイコンも取り扱っています。
アイコンが画像でなくwebフォントになることでどんな利点があるかというと、

編集が便利

画像だと、何か変更があった場合いちいち作り直して差し替えなければなりません。一方webフォントは文字扱いのため、cssを修正すればすぐ変更が反映されます。イッツ時短。

blog-5

サイズ変更しても見え方が変わらない

web上の画像を拡大していくとどんどん荒くなっていってファミコンの画面みたいになっちゃいます。解像度の関係でそうなるんですが、webフォントは画像(ドット)としてではなくベクトル(方向と長さの情報)で形状を表現しているので拡大縮小自由自在です。

blog-6
画像:Font Awesome

ここまで知ると、今すぐ使いたくなってきちゃったんじゃないんでしょうか。

Font Awesomeを使ってみる

というわけでハレノヒブログがお世話になったFont Awesomeというサービスを使ってみましょう。

blog-1
http://fontawesome.io/

トップページのボタンでまずファイルをDLします。
DLしたzipファイルを展開したらcss、fonts、less、scssのファイルが入っているので、必要なものをコピペします。

blog-2

そしてリンクします。ここでは親のscssにfont-awesomeのscssをインポートさせています。

blog-3

準備完了です。
サイトを参考に使いたいアイコンを選んで、htmlにコードを貼ればオッケーです。

blog-4

単なるマークだけではなくソーシャルアイコンなど豊富な種類が使いたい放題!

blog-12

 

わーいわーい

まとめ

web上でメインの情報伝達ツールは文字です。文字といってもメニュー・タイトル・本文と、それぞれ意味合いの異なった沢山の文字が詰め込まれています。ただ文字だらけの画面ばっかり見てると疲れてしまいますが、ワンポイントでアイコンがあると情報整理されて画面が見やすくなると思います。UIにも一役買ってくれてる感じです。

こまごましたもの好きな森田はどこでどのアイコンを使おうかとワクワクしまくりでしたが、もちろん使い過ぎは厳禁です。
また、今回取り上げたFont Awesomeの他にも、オリジナルのデータをアイコンフォントに出来るサービスもあります。オリジナルなアイコンフォントだなんてムネアツですね!そのうち作ってみたいです。

そんなところで今回はこの辺で!押忍!

標準
title-css
Design

CSS3を知るべし その1

こんにちは!新人森田です。
師匠に影響を受けて土曜日にランニングシューズとジャージを買いました!
さっそくちょっと走ってみたらすぐお腹いたくなりました。
そういえば高校の時も、体育の授業のウォームアップランニング後にお腹いたくてしばらく休んでました。
前途多難です。

とはいえ、形だけでも整えてみるとちょっとモチベ上がりますよね。
NIKEの新品シューズなかなかいい感じです。
形…かたち…スタイル、といえばCSS?!

なかなか強引ですが今回はCSSの中でもCSS3についてまとめてみます。

CSS3とは

CSSはおなじみスタイルシートのことですが、3というのはそのバージョンを意味します。
偉い人たちが日々webの世界の仕組みを作り続けているんですね。
そのおかげで表現の幅も増えて、トレンドも変化していくわけです。

ただ、一言にCSS3といっても「CSS3はこういうものです」みたいに単純なものではありません。
色んな要素がありまくりますので、少しずつ切り分けて見ていきたいと思います。

CSSを使うにあたって

その前に、CSSを便利に使うためのツールについてご紹介します。イケメン揃いです。

イケメンその1:scss

blog-5

css記述における革命児scssさん!
cssは指定するclass等に対して個々に設定を書き込まなければいけませんが、scssは1つのclassの下にある要素のスタイルを入れ子にしてまとめて書くことが出来ます。また、@import、@includeを用いてmixinを使い、記述をコンパクトに。収納上手にお掃除した気分です。

ここまではcssを知るべしの時に書きましたが、実はまだまだあります。

blog-12

こんな風に$で変数を設定してそのまま使用することも出来ます。

他にも、スタイルの中に計算式を埋め込む関数や、複数classに使うスタイルを変数なしで設定出来る継承といった機能も備えています。なんかもうすごくすごいです。

イケメンその2:compass

blog-6

scssに使うmixinをまとめてあるのがcompassさんです。
たとえばfloat解除。floatというのは要素を横に並べる時によく使うスタイルです。が、これは要素を浮かせて並べているイメージなので、その下に来る要素は浮いてるものを無視して重なってきたりします(レイアウトが崩れます)。なのでfloatとセットで使うのがfloat解除です。解除方法にも色々ありますが、便利なのがclearfixというもの。本来何行か書かなければいけないこのclearfixを、compassさんはあらかじめ用意しておいてくれているんです。

まるで…まるで、そう。炊飯ボタンを押したらご飯が炊けるまで全自動ですみたいな。
(繰り返しする作業をワンタッチでお気軽に的な意味で)

イケメンその3:scout

blog-7

ここで満を持しての登場がscoutさん。私は師匠に教えてもらっていきなり使っちゃったりしてます。
compassなどを使って書いたscssを自動的にcssに変換してくれる最強(?)イケメンです。

scss書いただけではhtmlに「cssにして出直して来い」と突き返されてしまいます。この変換はscout以外だと手作業もしくはサーバーにやってもらうという手間や時間のかかる作業です。でもscoutならそんな工程をがっつり省略できちゃうんですね。

炊飯ボタンを押したら最短でご飯が炊けるみたいな。
(昨日作り置きで一気に5合炊いた時のインパクトが凄かったので米ネタがしつこいです)

CSS3の使用例(ハレノヒブログの場合)

では使う準備が出来たところで具体的に見てみましょう。
ハレノヒブログではCSS3の以下の機能を使っています。

  • 角丸処理
  • レスポンシブ対応
  • 不透明度の変更

blog-4

このへんです。さんざん前置きした割に地味です。
でもこういうちょっとしたところが全体の見え方にも影響してくるんです。

[角丸処理]

今までプロフィール画像といえば四角で、丸くするには丸い画像を用意しなければいけませんでした。規模が小さければそれでも対応出来ると思いますが、1つずつ丸く切り抜いて保存し直すっていうのをいちいちやるのは結構面倒です。
それが、border-radiusを使えば四角い画像を丸く見せちゃうことも出来るのです。

blog-2

□い頭が○くなった!

[レスポンシブ対応]

前の記事でも書きましたが、画面サイズを設定してレスポンシブにするのがMedia Queriesです。
これがなかったらすごい複雑なプログラミングとかするんだろうなぁと思うと神機能。

[不透明度の変更]

ハレノヒブログでは画像のhover時にopacityを使って不透明度を変えています。
hoverというのは、リンクが貼られた箇所にカーソルを合わせた時の状態のことです。主にPCでの話になりますが、hover時にちょっと変化をつけることでこの先にリンクがあるよっていう目印になったり、面白い演出になったりします。

不透明度に関しては、差し替え用の画像を用意したり細かく色設定したりしなくても全然オッケーです。

blog-3

compassさんにも助けられつつ、なんとこれだけ!

まとめ

というわけでCSS3の一部を見てみましたが、どれも以前までの作業を楽にしてくれるものばかりでしたね。
インターネット上にはすっごい数のサイトがあるわけで、その中でも目が留まるサイトを作るには沢山の工夫が必要です。そしてその工夫をもっと楽に作るための工夫がCSS3にたくさん搭載されたんだっていうのが、CSS3を実際に使ってみての私の感想です。

森田のweb知識は一昔前のものなので、今はこんなことが楽に出来るんだー!って日々驚きだらけです。
また新機能を使ったら報告したいと思います!ランニングの経過報告も成果があれば報告したいです…
ではでは今回はこの辺で!押忍!

標準
IMG_1960
Other

「ジョブズの料理人 寿司職人、スティーブ・ジョブズとシリコンバレーとの26年」を読みました

※読書感想文は苦手なんですが思い切って書いてみることにしました

僕はApple製品のファンなので今までに eMac、iMac、Mac Pro、Mac Book Air、Mac Book Pro、iPhone 3GS、iPhone 4S、iPhone5c、iPad Mini、Apple TV、とかなり沢山Appleの売上に貢献してきました。自分で振り返っても買い過ぎだと思いますが、使いたくなる美しさを感じるのでついつい新しいiPhoneを買ってしまうし、UNIX環境のデスクトップとしてのMacはもう手放せないです。

そんなAppleを作った人、ご存知スティーブ・ジョブズ。彼の感性や哲学に凄く共感するし憧れの対象でもあります。

当然プライベートではどんな人物だったのか興味も湧いてきます。

あともう一つ僕が大好きなもの、「料理」です。食べることも作るのも、見るのも大好きです。特にYouTubeでBBQ動画とか料理番組を見るのが好きです。日曜朝の男子ごはんはほぼ毎週見ています。料理をしている手つきを見ているだけで楽しいんですよね。だから料理人も憧れの対象です。

「ジョブズの料理人 寿司職人、スティーブ・ジョブズとシリコンバレーとの26年」は寿司職人という立場から見てきたジョブズやシリコンバレーという街の移り変わりが綴ってあります。僕にとってこんなに美味しい本があるなんて!まさに一石二鳥、テクノロジークッキングマシマシ状態(?)であります。

とは言っても寿司の作り方は書いてないですけど、それでも夜のコースはこんな品を出して…とか書いてあれば仕込みやの風景やお客さんへ運ばれる様子を想像することで十分楽しむことが出来ました。

アメリカ人の寿司の楽しみ方は日本人とは違っていてこれもまた面白いところです。日本人の感覚からすると一回の食事で一度頼んだネタはよっぽどうまくもなけりゃもう一度頼むことなんてあまり無いと思います。たくさんある寿司ネタを出来るだけ網羅したいという気持ちもありますしね。でもジョブズはトロ5つにハマチ5つみたいな、しかもトロ一貫1000円みたいな…。豪快ですね。

テクノロジー面では最近注目されているリーンな開発やグロースハックといった文化もシリコンバレーには元々根付いている文化なのかなという気がしました。そうゆう環境だからなのか自然と寿司屋もグロースハックしていたり。でもジョブズに関してそういった印象は無くほかのIT企業はユーザーの声を聞いて、ジョブズは観察はするけど声は聞かないという感じでした。噂通りといった感じですね。

寿司屋とWebサービス、基本的にはインバウンドでやっていくスタイルが似ているなと感じました。売上だけでなくお客さんにいい価値を届けられたかどうかで”いい仕事”の判断をつけていく感覚はとても共感できるものがあります。プロの仕事は利益ももちろんですが、質が大事なのだと当たり前ですが大切なことを再認識させられます。

肩の力を抜きシリコンバレーと料理を感じられる僕にとって癒しの一冊でした。

標準
blog-0123-4b
Design

ブログリニューアルしました!あとレスポンシブデザインについて知るべし

ようこそいらっしゃいました!新人森田です。
なんで書き出しからテンション高めなのかというと、見ての通りです。
とうとうついに!ハレノヒブログリニューアルが実現しましたー!!
私もコーディングはしたものの、実装作業は師匠がマッハで仕上げてくださいました。
ありがとうございますおつかれさまです!

脳内迷宮をぐるぐるしながらようやく出来たデザインが実際に稼働していると、必要以上にスクロール上下したり1分おきくらいにスマホで見たりとか。リュックに眠ってたタブレットも久しぶりに起動させてみたり。

blog-0123-1

ニヤニヤしちゃいます。

ん?手持ちのデバイスフル稼働させて動作確認ということは?
イエス、レスポンシブデザインです。
ワイヤーフレームで書いた通り、どのデバイスで見ても崩れないように作ってあります。

と、いい感じの流れになってきたので今回はレスポンシブデザインについてまとめてみます。

レスポンシブデザインとは

レスポンシブデザイン。最近本屋さんのITコーナーなどでよく見かけるワードです。
「responsive:反応の良い、敏感な」の通り、様々なデバイスに対応したデザインという意味です。
みんなスマホを持ってて、iPadとか持ってるとちょっとイケてたりして(?)、最近MicrosoftがSurfaceごり推しだったりして、インターネットはもうPCのものじゃないってことですね。

で、何がレスポンシブなのかというと、一番は画面の横幅です。
今このページをPCから見てくださっている方、よろしければウインドウの横幅を変えてみてください。ウインドウが最大だったら、縮めていくとあるサイズから一度タブレットサイズにガクッと変わって、更に縮めるとまたガクッとスマホサイズになると思います。
ざっくり言うとこれがレスポンシブな感じです。

パソコン、タブレット、スマホそれぞれの横幅を設定して、各サイズになるとデザインがどう変更されるかをcssに書き込むことでこういった動きが可能になります。

blog-0123-2

たとえばこのブログだとこういう記述です。

レスポンシブにするところ

大体の感じはつかめたと思うので、じゃあ具体的にどの辺をレスポンシブにするか?という話に。

blog-0123-3

ハレノヒブログの場合、PC、タブレットでは右にあったサイドカラムがスマホでは記事の下に回り込んでいます(広告は仮でお借りしてまいりました)。その代わりに横幅いっぱいに記事を表示して見やすくしてあります。ブログなので形式的といえばそうなんですが、分かりやすい例ということで。
他によく見かけるのは、アイコンにメニューが収納されてタップするとメニューリストが出てくる、とかですね。

一般的なサイトの場合だと、例外的かもですが横幅に応じて画面が変化する面白いデザインもあったりします。レスポンシブで遊んでるっていうか。ただコンテンツを整然と表示するだけじゃなくて、そういう遊びがあるとちょっとそのサイト気になっちゃいますよね。

と、ここまでは横幅の変化にどう対応するかを書いてきましたが、もっと突っ込んでいくとレスポンシブデザインってデバイスの操作性と結びついていくと思います。

PCはマウスで画面のポインタを操作するから細かいクリックポイントにも対応しやすいし、キーボードがあるから文字入力も楽々です。
それに対して特にスマホはタップがメイン。お手軽ではありますが、細かいボタンのクリックミスでいらっとした人ってかなりいるんじゃないでしょうか。文字入力も、予測変換機能が充実してきたとはいえ結構めんどくさいですよね。スクロールが多いのも大変。

そういう各デバイスの特徴を考慮した上で、かっこよくて且つ操作もしやすい(さらに楽しいとなおよし!)っていうのが理想的です。あ、あとコーディングの時もあまり手を加えずにレスポンシブに出来るようになってると超ステキですね。いつかそんなサイトを作りたいです、いや、作ります!

なんかアツくなってまいりました。このパッションを忘れずに次のミッションにも取り組もうと思います。
というわけで今回はこの辺にしてハレノヒブログにニヤニヤしにいってきます!押忍!

標準
Native American 12
Development

JavaScriptでネイティブアプリを開発できるTitanium MobileとAlloyをつかってみよう その2

こんにちは山形です。
さて今回は前回につづいてTitaniumのAPIを使って具体的にUIの配置等を行っていきたいと思います。

前回はツールのインストールなどを行いました。

alloy generateコマンド

Alloyをインストールするとalloyコマンドが使えるようになります。これがrailsを意識しているようなのでrailsに慣れている人ならわかりやすいかと思います。

まず画面を追加してみたいのでgenerate controllerコマンドをつかって画面を追加してみます。

alloy generate controller my_modal

こうすると
app/controllers/my_modal.js
app/styles/my_modal.tss
app/views/my_modal.xml
の3つのファイルが作成されます。

この段階でtitanium buildしてみても前回同様Hello Worldという白い画面が表示されるだけです。これはTitaniumのデフォルト画面であるindex.jsというコントローラが表示されているだけなのでindexからmy_modalを呼び出す形になります。

それでは順をおって説明していきます。

controller

まずはコントローラー。app/controllers/my_modal.js等ですね。やろうと思えばここに全てのコードを書くこともできます。

しかしAlloyをつかってわざわざMVCスタイルになっているので、コントローラーには画面の遷移や、ボタンのタップに反応してモデルを呼び出すなどにとどめておいたほうがよいでしょう。

最初に呼び出されるコントローラであるindex.jsに以下のコードを追加してmy_modalを開く処理を追加してみます。

var myModal = Alloy.createController(‘my_modal’).getView();
myModal.open({ modal: true });

ここでとりあえずtitanium buildしみると以下の様な画面になりました。

スクリーンショット 2014-01-22 11.13.52

 

「myModalにはopenという関数は無いよ」と書いてありますね。
この原因を探るためにviewファイルを見てみましょう。

view

app/views/my_modal.xml というファイルがmy_modalのviewファイルです。XMLで書かれていますがhtmlの様な感覚でマークアップしていけます。

中身はこんなコードになっています。

<Alloy>
<View class=”container”>
</View>
</Alloy>

これではエラーしてしまいますね。ViewというのはTitanium.UI.Viewクラスのインスタンスなのですが、Viewにはopenという関数はありません。

なのでViewの部分をWindowに置き換えてもう一度ビルドしてみます。

<Alloy>
<Window class=”container”>
</Window>
</Alloy>

スクリーンショット 2014-01-22 11.24.05

 

なんか黒いっすね…

これはWindowのデフォルト背景色が黒だからです。このままじゃよくわかんないのでstyleを変更してウィンドウの存在感を出してみたいと思います。

style

スタイルファイルはapp/styles/my_modal.tssです。tssというのはcssとjsonを掛けあわせたような雰囲気のする形式です。

tssでビューに対置したオブジェクトのプロパティを操作してスタイルを変えていくという感じです。
なのでWindowに対してbackgroundColorの値を変更してみます。

“Window”: {
backgroundColor: “green”
}

なんか普通じゃつまらないので緑色にしてみました。
ついでにビューLabelを追加してこれにも色をつけてみます。

<Alloy>
<Window class=”container”>
<Label>My Modal</Label>
</Window>
</Alloy>

“Window”: {
backgroundColor: “green”
}
“Label”: {
color: “red”
}

そして出来上がった画面がこちらです。

スクリーンショット 2014-01-22 11.45.16

 

まぶしい!ださいですね。

まとめ

軽い感じで起動と同時にモーダル画面を表示させてみましたが、Titaniumの手軽さが伝わったでしょうか??JavaScriptでかけるというのはこんなにもさくさく進めていけるのですね。
次回はもっと複雑な画面遷移をご紹介したいと思います。

標準
title-css
Design

cssを知るべし

こんにちは!新人森田です。
デザイン情報を集めるために、最近おすすめニュースを自動配信してくれるアプリをDLしてみました。デザイン系ニュースをお気に入りするようにしてるのに、食べ物ネタが日に日に増えてる気がします。切ない。
それでは前回に引き続き、ハレノヒブログリニューアルプロジェクト(長い)の作業工程をまとめますね。

前回はwebページの骨組みであるhtmlタグのことを書いてみました。表記例で見たように<>で囲まれまくっていて、組み立てられてる感がすごくありました。でも、そのままだと実は文章が表示されるだけなんです(後でご紹介)。

骨にはやっぱり肉がついてないとおいしくない!

blog-img-5
(画像は骨付いてないですがめちゃめちゃおいしかったです)

というわけで今回のテーマは、そのhtmlの要素を装飾する=肉付けするスタイルシートについてです。

cssとは

繰り返しになってしまいますが、webページの構造のための記述がhtmlで、その表示を調整する記述がcssです。cssはそれだけだと一人ぼっちなので、htmlとリンクさせて使います。前回のサンプルデータを例に見てみます。

blog-img-3

これで準備完了です。このhtmlにcssで設定されたスタイルが反映されるようになります。

htmlとcssが固い絆で結ばれていることは確かなんですが、cssの中にも書き方の違う兄弟みたいなのもいます。
cssの書き方とほぼ同じで色々ひとまとめに出来るscss、cssと書き方が違うけど上級者なら作業効率上がりそうなsass。その中で何を使うかというと、scssです。文法が同じ方が師匠や未来の自分と情報共有しやすいというのが主な理由。

scssはcssに変換して使うのがお約束です。
私は師匠直伝の[scout]というツールを使いましたがそれはまた別の機会に書くことにします。

htmlとcssの関係

htmlへの肉付けをするのはずばりこの部分です。

blog-img-4

htmlタグの中にclassという名前がついています。この名前に対して設定を書き込むことで、web上の表示をデザインの通りに仕上げていくという仕組みです。

これはタグ自身idclassという3種類の要素に対して有効です。
それぞれの違いをさらっと説明すると、
id:そのページ内で1つしか使えないオンリーワン
class:繰り返し使えて組み合わせも出来るオールラウンダー
タグ:idほど孤高ではないがclassほど器用でもない
って感じでしょうか。
とにかくclass推しってことです。

cssの記述例

それでは実際にcssがどんなものか見てみます。
scssを使う、と書きましたがサンプルは簡単な記述なのであんまりその恩恵は受けてなかったり。

blog-img-1

見るからにhtmlとは違いますね。classに対する設定をひたすら書いてます。@importや@includeというのがscssで出来る便利機能の1つで、繰り返し使うコードをまとめたmixin(ミックスイン)を使ってるということです。

cssをリンクしてない場合とリンクした場合で表示を比較してみます。

blog-img-2

このようにhtmlとcssを組み合わせて使うことで、一枚の画像だったデザインをwebページへと成形していきます。

師匠によると、プログラマは「DRYの原則」に基づいてコードを書いているそうです。これは”Don’t repeat yourself”の頭文字を取ったもので、同じコードを繰り返さず出来るだけ1回の記述でまとめる、ということです。

先ほど紹介したmixinが@import(取り込み)という形式で使われてることや、class推しも同じ理由からです。そうすることで全体の見通しも良くなる(=メンテナンスしやすい)し、共有しやすいし、作業効率大幅アップ!「DRYにコードを書く」とかカッコイイ!

ぺーぺーの森田はハレノヒブログのコードだけでもすごく時間がかかってしまいましたが、本来はこの辺はさくっと済ませたい部分。大量の文字列管理の裏側には色んな工夫がなされているんですね。

そんなこんなでhtmlとcssを使ってwebページという骨付き肉が出来上がりました。ちょっと無理矢理でした。私も早くDRYにコードの書けるクールビューティーになりたいです!押忍!

標準
Native American 12
Development

JavaScriptでネイティブアプリを開発できるTitanium MobileとAlloyをつかってみよう その1

こんにちは。山形です。
最近はマラソン大会に出るために走り始めました。走った時間や距離を測るのにRuntasticというiPhoneアプリが便利なのですが、今お気に入りの隅田川沿いコースだとルートの解析が出来なくて困っています。GPS機能を妨害するものでもあるんでしょうか?

さて今回はiPhoneアプリ等をJavaScriptで開発できるツールTitanium Mobile(タイタニウムと読みます)を使ってみたので導入部分についてご紹介したいと思います。

JavaScriptとは

best-javascript-sites

JavaScriptは元々ブラウザ内で動くプログラミング言語として開発されました。
今日ではブラウザだけでなくサーバーサイドのスクリプト言語としても使われることが多くなりまりました。Google Chromeに搭載されているJavaScriptエンジンV8を利用したNode.jsや、Javaで実装されたRhino等がそれにあたります。

Titanium Mobileで使用するJavaScriptの種類としてはNode.js環境に近いものと考えていいようです。

Titanium Mobileとは

TITANIUM_logo1

先に触れましたがJavaScriptでネイティブのモバイルアプリをクロスプラットフォームに開発できるツールです。
つまりiOSアプリとAndroidアプリのソースコードを共有しながら同時にビルド出来るということです。

しかし現実はなかなか厳しようです。iOSとAndroidではUIの仕組みが違いますし、iOSにはあってAndroidには無い機能(そのまた逆も)あるからです。その場合コード内で「iOSならばこちらをAndroidならば…」といった条件分岐をすることで解決します。

なんだ結局両方のコードを書くのかと僕も思いましたが、標準的なUIを使っていればそのような場面は少ないですし、アプリケーションのコアになるロジック部分はUIに依存しないことが多いと思いますのでTitaniumを使うメリットは十分にあると感じました。

Alloyとは

alloy

Alloy(アロイ)はTitaniumのためのRailsのようなジェネレーターを備えたMVCフレームワークです。

Alloy自体はNode.jsのライブラリとして配布されています。Node.jsを使ったことのある人であればお馴染みの npm install alloy -g でインストールができます。そしてTitanium CLIと組み合わせることでIDEに頼らない開発環境が手にはいります。

僕はVimmerでRails開発者なのでこれはRailsを使ってきた自分にとってはかなり嬉しい要素でした。

環境を整える

さて実際に環境を整える方法ですが、まずなにはともあれiOS開発ツールであるXCodeをインストールしましょう。
これはAppStoreアプリを立ち上げてXCodeを検索しインストールボタンを押すだけです。

XCodeがインストールできたら今度はNode.jsをインストールしましょう。こちらのオフィシャルサイトからインストーラーが落とせます。

次にTitaniumのインストールはこちらのオフィシャルサイトからインストーラを落としてきましょう。

最後にAlloyのインストールは先に触れた npm install -g alloy で完了です。

プロジェクトを作成してみる

プロジェクトの作成はこちらで手順が紹介されていますが軽く順を追って紹介したいと思います。

まずターミナルでプロジェクトを作成するディレクトリまで移動して以下のコマンドを打ちます。

titanium create --name=sampleapp --id=jp.halenohi.sampleapp --platforms=iphone

nameにはアプリの名前、idはお持ちのドメインを逆転させてサブドメインに当たる部分にアプリ名を入れるのが良いようです。platformは今回はiphoneのみにしました。
Directory to place project: というオプションを聞かれるのですが既にプロジェクトを置くディレクトリにいる場合はそのままエンターでOKです。
こうするとsampleappというフォルダと中にいくつかのファイルとフォルダが作られます。

.gitignore
LICENSE
README
Resources
tiapp.xml

次にsampleappフォルダへ移動して以下のコマンドを打ちます。

cd sampleapp
alloy new

これでappとpluginsというフォルダが作成されました。
以上でプロジェクト作成は完了です。

Hello World

プロジェクトを作成したらコードを書き始める前にそのままビルドしてみます。

titanium build -p ios

pオプションでプラットフォームを指定します。
するとビルドが始まり以下の様な画面でiOSシミュレータが起動しました。

スクリーンショット 2014-01-20 12.41.10

 

Hello World成功です。

まとめ

まだアプリのコードは1行も書いてないですが、ツールをインストールしコマンドを幾つか打つだけでHello Worldが出来てしまいました。これは本当にRailsをやってきた僕には馴染みやすくて嬉しいですね。これでもうXCode上でjkjkとかescキーを誤打しなくて済みますね!

次回で少しUIの作成方法等についてご紹介したいと思います。

標準
blog-img-10
Design

htmlタグを知るべし

こんにちは!新人森田です。
年明け早々の3連休があったりもしましたが、前回の更新からハレノヒブログリニューアルプロジェクト(勝手に命名そして長い)を水面下で進めておりました。一段落したところで、作業のおさらいをしてみたいと思います。

その前に、師匠のご指導のもと出来上がったデザインをちょっとだけご紹介!

blog-img-1b

全貌はリニューアルしてのお楽しみということで。
こんな感じにPhotoshopで全体のデザインを作るところから始め、このデザインを元に実際のwebページを作る作業=コーディングをするという流れで作っていきました。

コーディングという作業では、htmlタグというものと格闘することになります。バックに師匠という秘密兵器が控えつつも、やっぱり秘密兵器は秘密兵器なので多分だいたい自力で頑張りました。webページを作っているベースはこのhtmlタグなので、今回はhtmlタグについてまとめてみます。

htmlタグとは

html専用の記述文字のことをhtmlタグといいます。(htmlって何だっけという人はWeb用語を知るべし

“<>”で1つの要素を書き、”< >〜</>”で要素の範囲を表現します。
webページでは検索したりボタンをクリックしたりと色んなことが出来ます。それだけ色んな要素が使われているということなんですが、色々ありすぎるのでhtmlタグにはどんな種類があるのかをざっくりと分類してみました。

分類その1:UIとそれ以外のタグ

上に書いたような「検索」「クリック」といった動作だったり、デザインの表示だったりといったwebページの表面に影響するタグがUI。要素を入れ子にしたりする箱は<div>、文章の見出しを表す<h1>、画像を貼り付ける<img>などです。

blog-img-2

それ以外に、ページそのものを定義したりするタグもあります。<meta><!doctype>などプログラミングしてるぜって感じです(個人差あり)。

分類その2:要素の種類

UIのタグは、さらに要素の種類で分けることが出来ます。
1つの固まりとして扱われて横幅いっぱいに表示される(改行される)ブロック要素と、文章の一部のようにブロック要素の中身として扱われるインライン要素です。

その他にも、インライン要素なんだけどブロック要素のように幅や高さをもつインラインブロック要素、表を作るテーブル要素などもあります。

blog-img-3

ブロック要素:<div>、<h1>(上記参照)、<p>(文章の段落)、<ul><ol><dl>(各種リスト)等

インライン要素:<a>(リンク)、<strong>(強調)、<span>(任意の範囲をひとまとめにする)等

インラインブロック要素:<img>(上記参照)、<button>(ボタン)等

テーブル要素:<table>

htmlタグの表記例

こういったタグたちを駆使してwebページを形作っていきます。といっても、これらをどう使うのか、それがどんな風にwebで表示されるのか等々イメージしづらいと思います。

表記例としてはこんな感じです。

blog-img-5

そして私の頭の中。

blog-img-7

それがこうなります。

blog-img-6

色がついたりしてる理由は次回!

頭の中はさておき、大体このようにwebページが成り立っているのでした。デザインとは違う領域の脳を使っている感覚です。とはいえ、慣れてくるとコードのことも意識しながらデザインする頭も出来てくる。はず。

それから、前回の記事でも触れた「UIを意識したデザインが紙媒体とは性格が違う」理由も、こういう仕組みを覗いてみるとほんのり具体的になってきたのではないでしょうか。

タグについてもですが、バージョンやOSやデバイス等々含めるとhtmlはまだまだまだまだ奥が深いです。日々画面と睨めっこしながらコーディングもデザインの腕も磨いていこうと思います!というわけで今回はこの辺で!押忍!

標準
140110b
Design

UIデザインを知るべし

こんにちは!新人森田です。
1月8日で株式会社ハレノヒは一周年を迎えました。入社のタイミングもあって、忘年会(歓迎会)・年明け・一周年と、最近お祝い続きです。このハレノヒパワーで今日も張り切っていきたいと思います。では師匠、お題をよろしくお願いします!

[山形師匠]
Webデザインが紙と大きく違うところは、紙は情報を受動的に ”見る・読む” のに対し、Webは ”操作する” という動作が加わります。そして操作するためのパーツのことをUI(ユーザーインターフェース)と呼びます。定番はもちろん最新UIの種類や応用方法にアンテナを張っておきましょう。

[森田]
最近Web制作関連の情報を読んでいると「UI」ってワードをよく見かけて、重要そうだなーと思ってました。ストレスなくページを見られるのはしっかりとしたUIがあるからなんですね。どんなものがあるか調べてきます!

Dribbble

dribbble

世界のデザイナー達が作品などを投稿するSNSです。
今まで日本のサイトばかり見ていた私は、かっこいい作品の数々に目からウロコ。色んな国のセンスにリアルタイムで触れられるのは本当にインターネットならではだと思うので、これからものすごくお世話になること間違いなし。

Behance

behance

クリエイター向けポートフォリオサービスです。
めちゃめちゃレベルが高くて、良い刺激にも指針にもなってくれます。早くこの領域に近づきたくてうずうずします。

素晴らしいUIを沢山見ることができて満足していたら、師匠からUIに関する情報を発信しているブログを教えていただきました。

MEMOPATCH

memopatch

 UI制作を専門とする会社が運営するブログです。UIに関する様々な角度からの記事が盛りだくさんで参考になります。

 colisscoliss

Webサイト制作に関するあらゆる情報が豊富に紹介されているブログです。Webは表現だけでなく幅広い知識が必要なんですね。

Hail2u.net

hail2u

Photoshopで作るだけでなく、実際にWebページに組み込むコーディングも含めてUIです。こちらはフロント寄りの情報を取り扱っているブログです。

MOONGIFT

moongift

プログラムのオープンソースを紹介しているブログです。まだ技術的なことまで手が回りませんが、こういったソースも理解できるようになりたいです。

一言にUIといっても、見た目だけじゃなく色んな側面を持っていることがよく分かりました。こういうブログを毎日チェックして勉強しなければ。
次は、実際に使用されているUIはどんなものなのか、ちょっと見てみたいと思います。

Windows Phone

wp

現在のフラットデザインの先駆けといえるWindows Phoneです。Windows Phone 7の発表が2010年ということをふまえると、実は結構前からフラットデザインのUIって使用されていたんですね。

Google

google

2013年春にGoogleのサービスもフラットデザインになりました。
こういうアイコンって、無性に沢山並べてずっと眺めてたくなります。ちなみに森田は最近携帯をNexus5にしたばかりです。

iOS7

ios7

そして2013年6月、フラットデザインを一気に広めたiOS7。
すぐ目に入ってくるし、きれいだしかわいい!やっぱりApple大好きです(iPhoneじゃないけど)。

有名どころを挙げてみましたが、そのブランドのカラーを出しつつ世界中の人々に快適に使われているって凄いことだなと改めて思いました。

言葉を使えば説明はすぐ伝わるけど、それだと長かったり重たかったりする。言葉抜きでユーザーに機能を説明したり、パッと見の美しさもあったりと、UIがWebデザインする上でどういう風に重要かということが前よりも分かった気がします。
流行も反映されやすいし、もっと周囲に目を光らせなければ!と、今回はこの辺りで修行を終えたいと思います。デザインに入るまでの道のりは長いです。押忍!

標準