2016年2月26日金曜日

はじめまして。ふなばしです。

今日から開発ブログに参加させて頂くこととなりました。
デザイナーのふなばしです。
新米デザイナーです。



ひよっこの私がここで綴るのはずばり、 新米デザイナー奮闘記です。
多分にもれず、そんな形で日々気づいたこと、気になったこと、挫けたことなど
なよなよと書かせていただきます。

前説がくどくなりましたが、ここで自己紹介を。


名前 ふなばし
年齢 25
性別 女
2013年 武蔵野美術大学 基礎デザイン学科 卒業
→カメラマンを目指し撮影スタジオでスタジオマンとして勤務
→とあるベンチャー企業で何でもデザイナー兼総務として勤務
→現職 Webデザイナーとして奮闘中(半年経過)

です。

Webデザイナー歴は1年半となります。
扱う言語はHTMLCSSです。(JavascriptjQeryを使っています)

趣味は読書と映画とお散歩と愛猫と戯れることで、ライフワークは写真と机研究です。
基本田舎が好きなので、埼玉から東京へ毎日通勤しています。
最近密かに嬉しいことは、一部の方から「ふなちゃん」と呼ばれていることです。
なんだかソフトでかわいい感じが気に入っています。(今までは“ばし”でした

【オススメのサービス】


schoo」  https://schoo.jp/guest

無料の生放送授業で学べるオンライン動画学習サイト
使用歴そろそろ1年くらいになります。
通勤時間等、イヤホンとスマートフォンがあればどこでも授業が受けられちゃうという素晴らしいサービスです。
ここで私はUIUXの授業やアプリデザイン、英会話を受講しています。

【気になっている団体】


「HCD(人間中心設計推進機構) 」 http://www.hcdnet.org/

昨今UIUXと言われ続けていますが、
日本の第一人者として知られる黒須教授が会長を務めていた、HCD(人間中心設計推進機構)です。
その名の通り、人間が体験するすべてのデザインについて、より人に寄り添った実際的なデザインを推進していこうという考え方です。
専門家認定機構でもあるため、UIで有名なグッドパッチや、その他さまざまな企業の方が専門家として登録されています。

「SDN(サービスデザイン・ネットワーク)」 http://japan.service-design-network.org/author/japan/

先日この団体が年1で開く、「サービスデザイン・ジャパンカンファレンス」へ参加してまいりました。
名のごとく、日本におけるサービスデザインの今と未来というお話でした。
海外のスピーカーを招いた、刺激的な内容でした。
※その内容についてはおいおい書かせていただきます。


以上自己紹介でした!

今後ともどうぞよろしくお願いします!(ドキドキ)


2016年2月22日月曜日

UX JAM 6 -UX GIRLS Returns- に参加してきました!

どうも、ふみえです。

2016/02/17に"UX JAM 6 -UX GIRLS Returns-" というイベントに参加してきました。
本イベントですが、概要は以下になります。
UX JAMはUX MILK主催の、UXを題材にした「ゆるい」勉強会/交流会イベントです。学術的なUXのセミナーというより、参加者同士でより気軽にUXについて話し合えるような場です。レベル感的にはUX初心者~中級者向けで、LTやスピーチをただ聞くだけではなく、参加者の方も積極的に話したりできる雰囲気作りを心がけています。
とてもライトなイベントで昨年からちょこちょこ参加させていただいておりました。
やはり聴いているだけでは物足りず、以前ご登壇された方からの後押しもあり、今回登壇してまいりました。

前職で私が企画・運営したユーザさんを理解するための取り組みを紹介させていただきました。

UX に興味を持ったきっかけ

私はフロントエンド・エンジニアです。デザインの変更・機能追加/改善などは日々行います。しかし、会議で「この機能についてどう思いますか?」「この機能きっと回遊時間が伸びると思いませんか?」と問われた時に何も反応できないことが多々ありました。私が考えすぎてしまう性格故にそうなっていたのかと思っていました。しかし、UXについて調べてみると、どうやらそれは性格の問題ではなさそうであることがわかりました。

ユーザさんに会いたい!!

私は強く思いました。思い立ったら即実践!!ということで、色々素地のない所で手探り状態で座談会を開催するのに1ヶ月で準備をしました。一応「仮説 → 検証 → レポート → タスク化」というフローを踏みました。

そこで得られた結果や課題はチームの中で共感を呼ぶこともでき、チームの意識を自然と同じ方向に導いてくれます。開発していく時の自身やモチベーションの向上、サービスへの愛も増幅します♡


そんなこんなでこちらからは以上です。

2016年2月19日金曜日

C# 構造体とは

こんにちは山田です。

C#の基本構文でいまいち呑み込めなかった部分について
わからないなりに解説をしようと思います。

~良くわかっていない人による解説~
 
開発言語:C#

構造体というのは一見、「何かの構造概念なのか?」と思ってしまいそうなのですが、
(というか勘違いして覚えていたのですが、)
実はクラスに似ていました。
具体的には、メモリ空間における構造が異なるそうです。
なので、ちょっと変わったクラス、というとらえ方でよさそうだと思います。

■構造体の定義

構造体の定義は、クラスとほぼ同じで、structを用いて定義します。
struct Dog{
 public int price;
 public string name;
 public int getPrice(){
    return price
 }

※ちなみに構造体は初期化が出来ないです。
public int kazu =1; ×

クラスと同様に、状態(field)と振る舞い(method)をメンバにもつことが出来ます。

■クラスと構造体の違い
構造体とクラスは似ていますが、
大きな違いは、参照型か値型かの違いです。

●構造体(値型)
 ・構造体は列挙型と同様で、値型です。
  (変数に直接値が格納されているデータ型です。)
 ・他のクラスや構造体を継承したり、継承元になることはできません。
 ・インターフェイスを実装することは可能。
 ・new演算子を使わなくてもインスタンス化される。


●クラス(参照型)

  例:)文字列、配列、クラス、デリゲート、インターフェースが参照型   

■早い話、どういう時に構造体は使用する?

クラスと構造体のどちらを使うか: C# プログラミング 再入門
http://dotnetcsharptips.seesaa.net/article/417085715.html
 ↑
こちらを参考にさせていただきました。
-----------------------------------------------------------------------------
MSDNのプログラミングガイドから引用します。

構造体は軽量オブジェクトを表すのに適しています。参照型の機能が必要ないのなら、小さいクラスとして実装するよりは構造体として定義した方が、システムにより効率的に処理されることが期待できます。

実際に計測してみると(かなりハイスペックなマシンでデバッグビルド版で計測)、上のサンプルコードにあるクラスと構造体とを10万個づつインスタンス化 してもいづれも2msと差はなし。100万回でクラスが約100msに対し構造体が30msと約3倍の効率の良さは伺える。
これらを「参照型の機能」として、つまりBoxingされるようObject型にキャストする処理を介在させた場合、クラスも構造体も120msぐらいであった。

これって、実際の使用条件等を考えるとほとんど構造体を使う理由がないように思えます。
-----------------------------------------------------------------------------

う~んつまり、C#の構造体の場合は、あまり使う場面がないみたいですね。

■参考文献

クラス-構造体-
http://arc360.info/lecture/6/4.html

値型と参照型 - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
http://ufcpp.net/study/csharp/oo_reference.html

2016年2月16日火曜日

開発初心者がこれだけは知っておいた方が良いこと②

こんにちは!Sです。
前回に引き続き「開発初心者がこれだけは知っておいた方が良いこと」について書いていきます。

今回のテーマは「おかしいところの見つけ方について」です。

ネットで調べて見よう見まねで書いてみたけれど上手く動かない。。。という時に
早くどこがおかしいのかを見つける方法について書いていきます。


<エラー画面が表示されている場合>

①ログを見る
 新規作成の場合は自分でログをはくように設定しないといけませんが、
 既存のファイルの修正であればおそらく既にエラーが起きた際にエラーログを出力するように
 設定されているはずです。
 なのでまずはソースからログの出力先を調べて、ログを見に行きましょう!


<エラー画面は表示されていないが、やりたいことが出来ていない場合>

①デバッグする
 ここがおかしいのかも。という怪しい場所付近にブレークポイントを設けて、
 デバッグして下さい。きっとヒントになるはずです。
 ▼最初にマスターしたいVisual Studioのデバッグ機能 -基本編-
 http://news.mynavi.jp/articles/2008/08/18/debug/

②Response.Writeを使う
複数の処理を連続して行っており、それらのどれが原因かを調べるのに便利です。
例えば...
aに対して処理B、C、Dを連続して行うのであれば一旦それらを分けてみましょう!

Response.Write(a);
Response.Write(b);  //bはaにBの処理をしたもの
Response.Write(c);  //cはbにCの処理をしたもの
Response.Write(d);  //dはcにDの処理をしたもの

これでブラウザにa,b,c,dが表示されるので、処理のどの段階でおかしなことになっているのかが一目瞭然です。


2016年2月12日金曜日

【Android】AppIndexingを設定してみた

こんにちは。エンジニアのKです。

【Android】AppIndexingを実装してみたの続きです。
前回までで最低限必要な実装は完了しましたが、
ディープリンクのテスト方法や、「Google Play Developer Console」、「Search Console」への登録方法でも
公式ドキュメントを読んだだけではピンと来ない部分があったので、補足できればと思います。

ディープリンクをテストする

実装したディープリンクがAppIndexingとして正常に動作するかテストします。
公式ドキュメント:App Indexing の実装をテストするの前半

方法としては、公式ドキュメントにあるADBでインテントを飛ばすやり方と、アプリがインストールされた端末のブラウザで、android-app://のリンクを踏んでみるやり方の2つがあります。

ADBでインテントを飛ばす

端末をUSBで接続し、コマンドラインから公式ドキュメントにあるドキュメントを実行すると、インテントが飛びます。
ディープリンクが正しく実装できていれば、アプリのコンテンツが立ち上がるはずです。
以下は、Android StudioのTerminalで実行した結果です。


実装が上手く行っていない、飛ばすインテントが誤っていると、「Error: Activity not started, unable to resolve Intent」といったエラーが表示されると思いますので、実装に誤りがないかを確認しましょう。

android-app://のリンクを踏む

webページを自由に変更できる環境があれば、aタグにテストURLを埋め込んでブラウザでアクセスします。
そういった環境がない場合は、公式ドキュメントにあるQRコード経由でアクセスすると便利だと思います。
前回の記事でも書きましたが、テストURLは

android-app://com.recipe-app/http/recipe/pierogi-poutine
android-app://com.recipe-app/recipe-app/recipe/pierogi-poutine

といったものになります。


AppIndexing APIをテストする

AppIndexing APIが正常に動作しているかも確認しておきます。
公式ドキュメント:App Indexing の実装をテストするの後半

これもアプリをインストールした端末をUSBでPCに接続し、ターミナルにコマンドを打ち込みます。
AppIndexing APIが起動する処理を通るようにアプリを操作すると、以下の様なログが出力されるはずです。
title, description, appUri, webUriが正しい値になっていればOKです。
マルチバイト文字を含めるとログ出力が文字化けしてしまいますが、URLエンコード処理は不要です。
試しにこのままリリースしてクロールさせたところ、検索結果に表示されるAppIndexingのリンクは文字化けしていませんでした。



Search Consoleにアプリを登録する

まずはSearch Consoleにアプリとしてプロパティを追加します。
公式ドキュメント:アプリの Search Console

Search Consoleにログインし、公式ドキュメントにあるようにandroid-app://のURLでプロパティを追加します。
すると、以下の画像のように、「Androidアプリ」のプロパティが追加されます。




Search Consoleでクロールテストをする

Search Consoleに登録すると、アプリに対しても「Fetch as Google」を行うことができます。(2016/02時点でアルファ版)
テスト対象のアプリは、基本的にはGoogle Playで配布されている最新版のapkですが、この場でapkファイルをアップロードして試す事もできるようです。
言語を選択するセレクトボックスは「日本語」にした方が良さそうです。「英語」のまま実行したらエラーになってしまいました。

広告SDK等が含まれていると、広告で読み込まれる一部リソースがブロックされ「一部完了」のステータスになりますが、
正常にレンダリングされていれば問題ないと思います。


アプリとWebサイトを紐付ける

ここまで確認できたら、あとはアプリとwebサイトを紐付けて、GoogleにAppIndexingしてもらいます。
公式ドキュメント:アプリをサイトに関連付ける
※前提として、ディープリンクに対応したアプリをGoogle Playで公開している必要があります。

紐付け方はGoogle Playから行う方法と、Search Consoleから行う方法があります。
今回はGoogle PlayのサービスとAPIからwebサイトのURLを入力する方法で行ってみました。
すると、Search Console側に「{googleアカウント} が Android アプリ {パッケージID} を {webサイトURL} と関連付ける権限をリクエストしています」といったタイトルのメッセージが届きますので、承認しましょう。

これで、必要な作業は全て完了となります。
ここから徐々にgooglebotのによるアプリクロールが開始され、3-5日程度でSearch Console上でクロールステータスを確認することができると思います。
以下が実際のクロールステータスの画面ですが、クロール開始直後はエラーが大量に発生してしまいました。
ですが、特に何もせず様子を見ていたところ、エラーは0件となり、インデックス数が増加していきました。



インデックス数が増え始めると、その更に数日後(5日程度かかった)、google検索結果にAppIndexingのリンクが表示されるようになると思います。