2014年3月20日木曜日

リーダーのコツ


チームマネジメント
来期の人事異動でチームの人数が半減します。
マネジメントをしていた人が抜けます。

来期からは自分がマネジメントをしなくてはいけません。

僕はいま、こんな状況です。
不安でいっぱいです。

という訳で、99%の人がしていない たった1%のリーダーのコツという本を読みました。

意識に刷り込むため、その中で自分にとって特に重要だと思ったところをまとめていきます。

このエントリの目次
  1. 仕事の依頼のコツ
  2. メンバー評価のコツ
  3. トラブル対処のコツ
  4. チームを前進させるコツ
  5. モチベーションを高めるコツ
  6. 人を育てるコツ
  7. 自分を整えるコツ
  8. 最後に
1.仕事の依頼のコツ
積極的にメンバーに仕事の「依頼」をしてよい
「命令」「指示」ではありません。
それだと受け手側に自分の意志を反映する余地がなく、納得感がありません。

人は頼られるとやる気がでるので、積極的に仕事を「依頼」しましょう。

依頼するとき、当人へのメリットも伝える
「なぜ自分が担当するのか」を納得してもらえれば、仕事の質は上がります。
当人へのメリットが説明できれば、その仕事はその人にやってもらう価値があります。

事細かに作業指示をしない
仕事を依頼するときは、「依頼の理由」、「目的とゴール」、「期待するレベル」、「期限」を伝えます。

仕事の進め方は当人に任せます。

進め方に細かく口を出すと、「言われたことだけやってればよい」という風に受け取られ、自分の頭で考えなくなってしまいます。

2.メンバー評価のコツ
正直な評価を伝える
評価は、今後の仕事の進め方に役立ててもらうことが目的です。
オブラートに包んで評価を伝えた結果、今後の改善に繋がらなければ、それは評価の意味をなしません。

「直接的な表現」、「正直な伝え方」、「前向きで次に繋がる言い方をする」を心がけましょう。

3.トラブル対処のコツ
トラブルを報告してきたら、まずは「ありがとう」と言う
報告してきた本人は、何とか解決しようとしたけれどどうにもならないから報告にきています。

「あのリーダーは責めない」と分かると、トラブル報告も早くなり、問題の早期解決に繋がります。
まずは「ありがとう」と言って情報を受け取ったあと、「この方向で解決策を考えてもらえますか」と次の作業以来をするのがよいでしょう。

安易に謝罪しない
リーダーはチームの顔です。
リーダーの言葉はチームの言葉です。

チーム外のステークホルダーに対して安易に謝罪して譲歩してしまうと、メンバーの立つ瀬がなくなり「どっちの味方なのか」と思われてしまいます。

4.チームを前進させるコツ
決める
リーダーの役割は、「意思決定をする」「それを伝える」の2つです。
意思決定をしなければ、チームは次のステップに進めません。

何も決めないことに劣る意思決定はありません。

「私たち」と言う
チームの一体感を作り出すとき、「私たち」という言葉を使うのも効果的です。

言い続けていくと、物事を自分事として捉えるようになりチームの雰囲気が変わっていきます。

安心させる
漫画「宇宙兄弟」の台詞、「理想のリーダーは、安心と興奮を同時にくれる」というのがあります。

「自分のことを嫌ってるのではないか」などの不安をメンバーが感じていると、仕事どころではありません。
メンバーを安心させる事が大切です。

5.モチベーションを高めるコツ
相談する
相談するとメンバーは「頼りにされている」と感じ、そして「期待に応えたい」と思います。
その結果、より高いレベルで努力をします。

6.人を育てるコツ
リーダーが人を育てる理由
チームの目標達成のためには、メンバーの成長が不可欠だからです。

「出藍之誉(しゅつらんのほまれ」という言葉は、リーダーにとって最高の賛辞です。

自分も学び続ける
自ら成長し続けようとしているリーダーは、メンバーの成長に対する影響力が強くなり、説得力を持ちます。

7.自分を整えるコツ
知ったかぶりをしない
「聞くは一時の恥、聞かぬは一生の恥」です。
聞くことで「このリーダーは率直な人だ」と好意的に受け取られる事が多いです。
むしろ人に頼られることは嬉しい事です。

リーダーの勝負所は、知識の量ではありません。

8.さいごに
という訳で、自分の心に響いたところをまとめました。
しっかりと心に刻んで、これからの仕事に活かしていこうと思います。

参考にさせて頂いた書籍「99%の人がしていない たった1%のリーダーのコツ」では、もっともっと多くのことが語られており、僕と同じような悩みを抱えている方にはオススメだと思っています。
読むと何かが掴めると思います。

それでは。

参考書籍

2013年12月2日月曜日

iOS で Amazon A/B テストサービスを試してみた 1


Amazon A/B Testing Service (beta) というページができてました
なので、試してみるよ。

ちなみに、利用するには Amazon のアカウントが必要になります。

さて、さっさと試したいところですが、W8BENという米国非居住者用の免税書類が必要になってきます。
書類と言っても全部オンライン上でできます。

W8BEN の作成に時間がかかったため、今回はそれを作るところまでです。

このエントリの目次
  1. A/Bテストとは
  2. アプリをAmazon Mobile App Distribution Portal に登録する
  3. 「税に関するインタビュー」の入力
  4. さいごに
1.A/Bテストとは
ITproによると、
A/Bテストとは、例えば画像や説明文など複数パターンの素材を用意し、それらを入れ変えたWebサイトやバナー広告などを並列で公開・配信することで、利用者の反応を探る方法。
ということです。

つまり、複数パターンのページなどを同時に公開して、利用者にはいずれかを表示し、「どちらのページがコンバージョンが高いのか?」をテストすることです。

Web だとやりやすいけど、アプリでどう実現するのだろう...というところです。

2.アプリをAmazon Mobile App Distribution Portal に登録する
A/B Testing consoleから設定できます。

Amazon アカウントでログインすると、下記のような画面になります。


名前や電話番号、住所などの必須項目を入力して、ページ下部の「保存して続行」を押します。


利用規約が表示されるページに遷移します。
ページ下部の「承認して続行」を押します。


次に、アプリで収益を得るかどうか(有料アプリだったり、アプリ内課金だったり)を聞かれます。
選択して、「保存して続行」を押します。


すると「税に関するインタビュー」というページになります。


ここからが長いです。
僕のように税務や法律に疎い人にはここはかなり辛いので、心してかかってください。

3.「税に関するインタビュー」の入力
さて、ややこしそうですがとりあえず「続行」を押します。
すると下の画面になりました。
いきなり意味分からないページです、これあかんやつやで...

とにかく翻訳していきます。

もし間違っていても責任は一切負いませんので悪しからず。

Consent for Electronic Signature and 1099 Form
電子署名と1099フォームの同意

1099フォームでいきなり詰まりました。

1099フォームとは、2012年の米国連邦タックスカレンダー 2012/01/04 | 永野・森田会計事務所によると、
日本の支払調書にほぼ対応するフォーム1099があり、銀行やその他の事業者が個人等に一定の支払をした場合、当該支払者はその支払タイプ毎に受取者、支払額等を書いたフォーム1099を年度終了後IRSに提出する。報告すべき支払タイプは、利息、配当やその他分配、賃借料、従業員以外の個人に支払った報酬、ロイヤルティー等多岐にわたり、様々な様式が用意されている。
とのことです。

支払調書??
それは支払調書は確定申告のための大事な資料 | S&S Accounting Staff Blog によると、
支払調書を交付しなければならない人たちは、主には「個人事業主」と呼ばれる人です。個人事業主はサラリーマンとは異なり、自らの事業で得た稼ぎを毎年3月に確定申告をすることにより、前年1~12月の所得を確定させます。
とのことです。

つまり、日本において(主に)個人事業主が交付するのが源泉徴収票と似ている支払調書で、この支払調書にほぼ対応するのがアメリカのフォーム1099、ということです。

何となく項目の意図が分かったところで質問項目を確認していきます。

You may be required to sign your tax identity document.
In order to electronically sign your tax identity document, it is necessary to obtain your consent.
If you do not provide your consent, at the end of the interview you may be required to print the form, sign it with a blue or black pen, and mail it to the address that is provided.
「tax identity document」に署名しなければならない場合があります。
電子的に署名するためには、同意が必要です。
あなたの同意を得られない場合は、このインタビューが終わったら、フォームを印刷して青や黒のペンを使って署名し、提供された住所にそれを郵送する必要がある場合があります。

I consent to providing my electronic signature.
Yes
No
私は、私の電子署名を提供することに同意します。
はい
いいえ

If you would like us to provide your information reporting documentation that is required by law (for example, 1099-MISC, 1099-K) electronically, it is necessary to obtain your consent to receive these documents electronically.
あなたが私たちに情報報告文書 ー法的に必要なもの(例えば、1099-MISC、1099-K)ー を電子的に提供したい場合、私たちが電子的に文書を受信するためには、あなたの同意を得ることが必要です。

I consent to electronic receipt of my information reporting documentation.
Yes
No
私は情報報告文書の電子領収書に同意します。
はい
いいえ

文中に出てきた 1099-MISC、1099-K は、フォーム1099 の一種のようです。
1099-MISCについてはForm 1099-MISC Independent contractorへの支払い | アメリカで生活する日本人のための税金ブログ、1099-K についてはForm 1099Kってなに? | 石上洋のブログ で書かれています。

ページ右下の「続行」を押します。

Tax Status
課税状態。



In general, you are considered a U.S. resident if (1) at any time during the calendar year you were a lawful permanent resident of the United States immigration laws and this status has not been rescinded or administratively or judicially determined to have been abandoned or (2) you have been physically present in the United States on at least 31 days during the current year, and 183 days during the 3 year period that includes the current year and the 2 years immediately before.
一般的には、下記のいずれかの条件を満たしていればあなたは米国の居住者だと見なされます。
  1. あなたが米国居住者であり、それが取り消されていない、また行政上・司法上放棄されたと決定していない。
  2. あなたは今年 31日間は米国にいて且つ、今年と過去2年間の計3年間は183日間米国にいた

For tax purposes are you a U.S. citizen, U.S. resident, U.S. partnership, or U.S. corporation?
Yes
No
税務上、あなたは米国市民、米国居住者、米国のパートナーシップ、または米国法人ですか?
はい
いいえ

アメリカ行った事すらないので「いいえ」を選択します。
ページ右下の「続行」を押します。

Non-U.S. Person
非米国居住者



You have selected that you are a non U.S. Person for tax purposes.
Next we will gather your personal or business information.
あなたは、税務上の非米国人であることを選択しました。
次に、私たちはあなたの個人情報やビジネス情報を収集します。

ページ右下の「続行」を押します。

Personal Information
個人情報。



ここは、本名や住所を入力していきます。

企業としての導入でなければ、
Select the place of incorporation or organization
のところは選択せずに「Please select ...」として下さい。
選択していると怒られて次に進めません。

最後に
Is your mailing address the same as permanent address?
あなたの郵便住所は実際の住所と同じですか?

と聞かれます。
「はい」を選択して、ページ右下の「続行」を押します。

Foreign Tax Identification Number
外国の納税者番号



If you have a tax identification number for your country of residence, enter that information here.
あなたがお住まいの国の納税者番号を持っている場合、ここにその情報を入力します。

日本では納税者番号制度は導入されていないため、空欄のままです。
ページ右下の「続行」を押します。

U.S. Person tests - Individual
米国人審査 - 個人



U.S. tax law requires Amazon to test whether any of the following conditions apply that could change your tax status for U.S. tax purposes from a Non U.S. Person to a U.S. Person.
米国の税法により、アマゾンはあなたが以下の条件に当てはまるかどうか審査します。
条件に当てはまれば、あなたの納税状態を税制上、非米国市民から米国市民に変更できます。

Select all the items that apply:
当てはまるものを全て選択してください。
  1. I have a U.S passport
    私はアメリカのパスポートを持っている
  2. I was born in the U.S. and have not renounced my birth rights
    私はアメリカで生まれ、生得権を放棄していない
  3. One or both of my parents were born in the U.S.
    親のうちどちらかもしくは二人ともアメリカで生まれた。
  4. I currently hold or have held a Green Card
    私はグリーンカードを持っている、もしくは持っていた
  5. I have spent time in the U.S. in the past 3 years
    私は過去三年間米国に住んでいた
  6. Held temporary nonimmigrant Visa type "F" ,"J","M" or "Q"?
    一時的な非移民のVISAであるF、J、M、Q のいずれかを持っている

どれにも当てはまらないので、何も選択せずにページ右下の「続行」を押します。

Do you have a US Tax Identification number?
あなたは米国の納税者番号を持っていますか?



In order to claim treaty benefits or to claim that income is effectively connected with a US trade or business, you will need to provide your Tax Identification Number (TIN), which is either your Individual Tax Identification Number (ITIN), Social Security Number (SSN) or Employer Identification Number (EIN).
租税条約に基づく特典を受けるため、もしくは、収入が米国での貿易やビジネスに基づくものだと主張するためには、あなたはの納税者番号(TIN)を提供する必要があります。TIN とは個人納税者番号(ITIN)、社会保障番号(SSN)、雇用者識別番号(EIN)のいずれかです。

※ちなみに、Effectively Connected Income について。
外国人への支払い時の源泉税IRS税務調査強化(3) | 専門家のためのアメリカ・タックス(米国税務) によると、
非米国市民が受け取る所得のうち、米国事業活動に関連するものをECI(Effectively Connected Income)という。
とのことです。

If you do not have a TIN, you can apply for an ITIN or EIN with the IRS.
納税者番号(TIN)を持っていない場合は、アメリカ合衆国内国歳入庁に個人納税者番号(ITIN)もしくは雇用者識別番号(EIN)を申請する事ができます。

It is not necessary to have a TIN in order to determine if you are a U.S. or non U.S. person for U.S. income tax purposes. However, any reduction of the standard withholding rate (30%) will not apply until you can provide a TIN.
税制上あなたが米国人かそうでないかを判断するとき、納税者番号(TIN)は必須ではありません。
ただし、納税者番号(TIN)を提供しない限り、標準的な源泉徴収税率の割引(30%)が適用されることはありません。

Do you have a TIN?
Yes
No
あなたは納税者番号(TIN)を持っていますか?
はい
いいえ


「いいえ」を選択してページ右下の「続行」を押します。

Review your W-8BEN information
W-8BEN情報の確認。

W-8BEN のプレビュー画面です。



W-8BENとは-FORM W-8BENとは?- | 111 Social Lending.comによると、
利子、配当、使用料、賃貸収入や年金などを米国法人から受取る際に、米国上、外国法人や非居住者であることを証明するためのフォームです。
とのことです。

パッと見すぐ分からないものをピックアップしていきます。

Part I Identification of Beneficial Owner
法的な実質的な所有者の種類

3 Type of beneficial owner
3 法的な実質的な所有者

individual(個人), Corporation(法人), Disregarded entity(みなし事業体), Grantor trust(グランター・トラスト), Complex trust(複合信託), Estate(財産), Goverment(行政), Central bank of issue(中央銀行), Tax-exempt organization(非課税機関), Private foundation(慈善団体), Partnership(組合関係), Simple trust(単純信託), International organization(国際機関)


Part II Claim of Tax Treaty Benefits
租税条約の特典

I certify that (check all that apply)
チェックされているもの全てが適用されることを証明します。

The beneficial owner is a resident of within the meaning of the income tax treaty between the United States and that country
所有者は、米国との間に租税条約を結んでいる国の居住者であることを示します。

If required, the U.S taxpayer identification number is state on line 6
要求される場合、アメリカの納税者番号は6行目(6 U.S. taxpayer identification number, if required (see instructions)) のものです

The beneficial owner is not an individual, derives the item (or items) of income for which the treaty benefits are claimed, and, if applicable, meets the requirements of the treaty provision dealing with limitation on benefits.
所有者は個人ではなく、そして租税条約の特典を要求するための収入の項目を出せる。これを満たすということはつまり、租税条約の特典制限条項を扱う条約規定を満たしているということです。

Part III Certification
証明

Under penalties of perjury, I declare that I have examined the information on this form and to the best of my knowledge and belief it is true, correct, and complete. I further certify under penalties of perjury that:
私は偽証罪の何たるかを知っています。私はこのフォームの情報を検討した結果、知識と信念をもって正しく且つ完全であることを宣言します。
  1. I am the beneficial owner (or am authorized to sign for the beneficial owner) of all the income to which this form relates,
    私は、このフォームに関連するすべての収入の所有者(または所有者であると署名することを認可されている)です。
  2. The beneficial owner is not a U.S. person,
    所有者は米国市民ではありません。
  3. The income to which this form relates is (a) not effectively connected with the conduct of a trade or business in the United States, (b) effectively connected but is not subject to tax under an income tax treaty, or (c) the partner's share of a partnership's effectively connected income, and
    このフォームに関連する所得は、米国での取引または事業とは関係ありません。もしくはこのフォームに関連する収入は米国での取引または事業に基づくものであるが所得税条約に基づいた税の対象ではありません。もしくはこのフォームに関連する収入はパートナーの米国事業活動による収入のパートナーの分け前です。
  4. >For broker transactions or barter exchanges, the beneficial owner is an exempt foreign person as defined in the instructions.
    斡旋売買もしくは物々交換において、所有者は命令で定義されている非課税の外国人です。

Furthermore, I authorize this form to be provided to any withholding agent that has control, receipt, or custody of the income of which I am the beneficial owner or any withholding agent that can disburse or make payments of the income of which I am the beneficial owner.
さらに、私が所得の所有者であるとき、源泉徴収義務者(その所得を管理しているか領収書を持っているか監督している、もしくはその所得を融資できるもしくは支払える)にこのフォームを提供することを許可します。

「続行」を押します。

Certification
証明。



先の書面に書かれていた項目についてチェックが入ります。
繰り返しになりますが、そのまま載せます。

Under penalties of perjury, I declare that I have examined the information on this form and to the best of my knowledge and belief it is true, correct, and complete. I further certify under penalties of perjury that:
私は偽証罪の何たるかを知っています。私はこのフォームの情報を検討した結果、知識と信念をもって正しく且つ完全であることを宣言します。
  1. I am the beneficial owner (or am authorized to sign for the beneficial owner) of all the income to which this form relates,
    私は、このフォームに関連するすべての収入の所有者(または所有者であると署名することを認可されている)です。
    チェックを入れます。
  2. The beneficial owner is not a U.S. person,
    所有者は米国市民ではありません。
    チェックを入れます。
  3. The income to which this form relates is (a) not effectively connected with the conduct of a trade or business in the United States, (b) effectively connected but is not subject to tax under an income tax treaty, or (c) the partner's share of a partnership's effectively connected income, and
    このフォームに関連する所得は、米国での取引または事業とは関係ありません。もしくはこのフォームに関連する収入は米国での取引または事業に基づくものであるが所得税条約に基づいた税の対象ではありません。もしくはこのフォームに関連する収入はパートナーの米国事業活動による収入のパートナーの分け前です。
    チェックを入れます。
  4. >For broker transactions or barter exchanges, the beneficial owner is an exempt foreign person as defined in the instructions.
    斡旋売買もしくは物々交換において、所有者は命令で定義されている非課税の外国人です。
    チェックを入れます。

Furthermore, I authorize this form to be provided to any withholding agent that has control, receipt, or custody of the income of which I am the beneficial owner or any withholding agent that can disburse or make payments of the income of which I am the beneficial owner.
さらに、私が所得の所有者であるとき、源泉徴収義務者(その所得を管理しているか領収書を持っているか監督している、もしくはその所得を融資できるもしくは支払える)にこのフォームを提供することを許可します。

To comply with the eSignatures ACT, we require that you sign by typing your full name, enter the date and the email address that you used to access the registration site.
電子署名法に準拠するために、あなたはフルネームと日付、そして登録サイトにアクセスするために使用したメールアドレスを入力する必要があります。

Capacity in which acting
どのような資格をもってこのフォームを記入しているか。
個人で試すので individual を選択します。

Once you are satisfied with the information presented in your W-8BEN, and you have signed the certification above, select the Submit W-8BEN button to send your document to Amazon.
W-8BEN の情報に問題がなく、上記の証明書に署名したら、「W8を送信」ボタンを押して書類をAmazon に提出してください。

というわけで「W8を送信」ボタンをクリックします。

すると下記の画面があらわれて、これで完了です!



Information awaiting validation
Your information has been received and is awaiting validation.
We will contact you if we require additional information.
認証待ちの情報。
あなたの情報を受け取り、現在認証待ちです。
追加情報が必要な場合はご連絡いたします。

「終了」ボタンを押してこれでやっと完了!

すぐに認証されます
「税に関する情報は無事認証されました。」という通知が!



詳細を見に行くと、「税に関する情報は米国国税庁で無事認証され、税制上のステータスは「完了」に更新されました。」と言われました。
長かった…。



今日はこれくらいにしといたろか。

4.さいごに
長くて難しかった…。
もし間違っていても責任は一切負いませんので悪しからず。

この調子だと色々つまづきそうな予感がします。
が、次はSDKを入れたいです(問題なく進められれば)。

それでは。

2013年10月28日月曜日

iOSのメモリ管理 その1


retainとかreleaseとか意味分からないんですけど!
という訳で、今更ですがObjective-Cのメモり周りについて調べてまとめました。

このエントリは
という本を参考にしています。

ARC全盛の昨今ですが、この本はオススメなので買うといいよ!

このエントリの目次
  1. 参照カウント方式
  2. retain と release
  3. retainしなくても参照カウントが上がるメソッドがある
  4. メモリが解放されるタイミング
  5. さいごに

1.参照カウント方式
Objective-Cのメモリ管理は参照カウント方式で行われます。

「高度なメモリ管理プログラミングガイド」によると、 所有権に関する処理は、参照カウントを使って実装されています。通常、retainメソッドの呼び出し後は、これを「保持カウント」と呼びます。各オブジェクトに保持カウントがあります。
  • オブジェクトを作成すると、オブジェクトの保持カウントは1になります。
  • オブジェクトにretainメッセージを送信すると、保持カウントが1つ増えます。
  • オブジェクトにreleaseメッセージを送信すると、保持カウントが1つ減ります。
    オブジェクトにautoreleaseメッセージを送信すると、現在の自動解放プールブロックの末尾で、保持カウントが1つ減ります。
  • オブジェクトの保持カウントがゼロになると、割り当て解除されます。

はい、全然意味が分かりませんね。

もう少し具体的に
以下のようなコードがあるとします。
NSString *str = [NSString stringWithFormat:@"test"];
[str retain];
1行目でstr 変数に「test」というNSString インスタンスを設定しました。
2行目のretain で、保持カウント(=参照カウント)が1つ増えます。

このretainにて、str 変数を持つインスタンスが「『str変数が保持しているNSStringオブジェクトのアドレス』を参照しているよ」ということを明示的に示しています。

この、「オブジェクトが参照されている数」が、そのオブジェクトの参照カウントの数になります。

参照されていると何が嬉しいのか
参照されているということは保持カウントが1以上であるということです。
そして保持カウントが1以上のとき、メモリが勝手に解放されることがなくなります。

つまり、後でstr変数を参照しようとしたときに「『str変数が保持していたNSStringオブジェクトのアドレス』が既に解放されていて存在しておらず、EXEC_BAD_ACCESSエラーが起こる」ということがなくなります。
(このときの「既に存在しないNSStringオブジェクトのアドレス」を保持しているstr変数を、ゾンビオブジェクトと呼びます)

逆に保持カウントが0になると、そのメモリは即座に解放されます。

2.retain と release
どちらも、オブジェクトの参照カウントを即座に変化させるものです。

繰り返しになってしまいますが、
  1. オブジェクトにretainメッセージを送信すると、保持カウント(=参照カウント)が1つ増えます。
  2. オブジェクトにreleaseメッセージを送信すると、保持カウントが1つ減ります。

これら保持カウントの増減は即座に行われます。

オブジェクトに対してreleaseメッセージを送信して参照カウントが即座に0になったとき、それ以降そのオブジェクトはゾンビオブジェクトになります。

では、参照カウントが1以上の場合はどうなるでしょうか。
メモリ解放という後片付けをしてあげないと、ずっとメモリ上にそのアドレスが確保されることになります。

どのオブジェクトからも参照されないのにメモリ上にアドレスが確保されている状態、これをメモリリークと呼びます。

3.retainしなくても参照カウントが上がるメソッドがある
大きく言うと4種類あります。

「高度なメモリ管理プログラミングガイド」から抜粋すると、
オブジェクトの作成は、「alloc」、「new」、「copy」、「mutableCopy」で始まる名前のメソッド(たとえば、alloc、newObject、mutableCopy)で行います。

従って、先述したサンプルコードにあった
NSString *str = [NSString stringWithFormat:@"test"];
のときは、『str変数が保持していたNSStringオブジェクトのアドレス』の参照カウントが増えません。
「alloc」、「new」、「copy」、「mutableCopy」で始まる名前のメソッドが使われていないからです。

つまり、このあとで
[str retain];
のように retain メッセージを送信してあげないと、既にメモリ解放されていてEXEC_BAD_ACCESSエラーが起こってしまいます。

下記のようにalloc で始まる名前のメソッドを使えば、参照カウントは増えます。
NSString *str = [[NSString alloc] initWithFormat:@"test"];

そしてこのときは retain メッセージを送信する必要はありません。
送信すると参照カウントが更に増えて 参照カウントが0にならずにメモリ解放されることがなくなり、メモリリークしてしまう恐れがあります。

と言いつつ他のメソッドでも参照カウンタが増減します
addSubView をするとカウンタが1増え、removeFromSuperView すると1減ります。

UIView を addSubView したときは、参照カウンタが増えていることに気をつけましょう。

4.メモリが解放されるタイミング
参照カウントが0になったオブジェクトはいつメモリ解放されるのでしょうか。

自動解放プールブロックが利用されます。
暗黙的に使用されているのですが、明示的に使用する場合は下記のように書きます。
@autoreleasepool {
     SampleViewController *sampleViewController = [[[SampleViewController alloc] init] autorelease];
     self.window.rootViewController = sampleViewController;
}

ここで先述したことを思い出してください。
「高度なメモリ管理プログラミングガイド」に下記の記述がありました。
オブジェクトにautoreleaseメッセージを送信すると、現在の自動解放プールブロックの末尾で、保持カウントが1つ減ります。

もう少し具体的な仕組みを説明します。

オブジェクト(上の例で言う sampleViewController)は、autorelease メッセージを投げられると自身を自動解放プールに登録します。
他のオブジェクトも autorelease メッセージを投げられるたびに、自身を自動解放プールに登録します。

そして、自動解放プールの末尾にきたとき、つまり } に処理がきたとき、登録されたすべてのオブジェクトに対して release メッセージを送ります。
ここで初めて参照カウントが減ります。

でも autorelease を使わない場合はいつ解放されているのか
イベント毎に、自動解放プールが作られています。
そしてイベントに対応したメソッドが終わるごとに自動解放プールも終わり、メモリが解放されます。

イベントとは、
UITableViewController にてセルが表示されるとき(- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath)や、
セルをタップしたとき(- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {)
などのことです。

それらのイベントのメソッドが完了したとき、メモリは解放されるのです。

逆に言うと、上記のように表示とタップしたときのようにメソッドをまたいで変数を使いたいときは、reatain メッセージを送信して参照カウンタを1つ増やしておく必要があるのです。

ちなみに、自動解放プールは入れ子にできます。

例えば、自動解放プールAの中に自動解放プールBを作成できます。
そして、自動解放プールAにとうろくしたオブジェクトは、自動解放プールBが完了しても、自動解放プールAが完了するまではメモリ解放されません。

変数のスコープと同じように考えられますね。

さいごに
ARCを使っていればあまり意識することはないかもしれませんが、内部の動きを把握しておくのは大切なことだと思います。

他にもアクセサメソッドの挙動やインスタンス変数の宣言の意味も把握しておきたいです。

というわけで、続く!

認識違いがあればご指摘頂きたいです!

参考書籍

2013年7月3日水曜日

ユーザビリティテストのインタビューのコツ


ユーザビリティテストとは
またの名をユーザテスト。
製品やサービスを実際に使ってもらい、改善点を洗い出すテスト手法です。

ポイントは下記の2点です。
  1. ユーザにタスク(作業課題)を実行するように依頼する
  2. ユーザがタスクを実行する過程を観察、記録する

このエントリでは、アジャイル・ユーザビリティ ―ユーザエクスペリエンスのためのDIYテスティング―という書籍を参考にしつつ、僕の所感とともに、インタビューア(ユーザと対話して考えていること、思っていることを引き出す役割の人)がやるべきことにフォーカスしてまとめます。

実際にやってみたら、とても難しかったので!

このエントリの目次
  1. ユーザビリティテストの目的
  2. 関係者とその役割
  3. インタビューアがやること
  4. さいごに
1.ユーザビリティテストの目的
実際に製品やサービスを使ってもらうことで、ユーザのリアルな挙動(=事実)を観察することが目的です。

なぜリアルな挙動が必要か
アンケートなどは えてしてユーザ自身の不正確なバイアスがかかってしまいます。

端的な例でいうと、「このWebページのこの要素は目立たないから、背景色を目立つ色にした方がいい」とユーザが言ったとします。
これをそのまま受け取ってしまうと、安易に「背景色を赤くしよう」のような解決策を立ててしまいがちです。

そうすると、要素を目立たせる他の手段や、より根本的にナビゲーションの仕方を工夫する、のような検討案が漏れてしまいます。

これはイケてませんね!

つまり…
ユーザビリティテストの目的は、「ユーザからの分析結果」を得ることではありません。
正しい目的は、リアルな挙動を通して、ユーザの感情や思考といった「事実」を掘り起こしていくことです。

そうすることで より客観的な分析ができ、より本質的な改善策が検討できます。

ちなみに、ユーザビリティテスト専門のサービスもあります。
UIscopeなどです。

2.関係者とその役割
ユーザビリティテストの関係者は、下記の3つに分けられます。
  1. ユーザ
    観察の対象者。タスクを実行していく人です。
  2. インタビューア
    ユーザを観察、また対話することで、ユーザの感じたことや思ったことを引き出す人。
  3. 見学者
    テストを見学する人。テスト中は存在感を消し、ユーザの観察に徹する。

3.インタビューアがやること
やることとしては、ユーザの緊張をほぐす、テスト全体のファシリテートなど様々です。
が、最も大切なのはインタビュー時、対話によってユーザの感じたこと・思ったことをそのままの形で引き出していくことです。

ポイントは2つ!
  1. 質問には答えない
  2. ユーザの感じたこと・思ったことをそのままの形で引き出す

どういうことかと言うと…。

質問には答えない
ユーザが「前の画面に戻るにはどうすればよいんですか?」と質問してきても、答えを教えてはいけません。
前の画面に戻るのが分からないとき、どういう行動を取るのか、どうやってたどり着くのかを確認するのがテストです。

ユーザの感じたこと・思ったことをそのままの形で引き出す
ユーザが操作などに迷ったときは課題の発見のチャンスです。
ここで「何を考えていますか?」などの質問をして、ユーザの状況を説明してもらいます。

「もしかしてナビゲーションの色が分かりづらかったですか?」など相手の思考を推察して質問してはいけません。
おそらくユーザは「はい」と答えるでしょう。
しかしこれは誘導尋問になってしまっていて、本質的な課題を見つけられません。

インタビューをやってみると分かりますが、これが非常に難しいです!
普段の会話と同じ感覚で話していると、どうしても相手の思考を推察して言葉にしてしまいます。

4.さいごに
僕のように口下手でアドリブのきかない人にはけっこう敷居が高いインタビューア。

思っていたよりもはるかに難しいです。
特に、誘導尋問にならないように質問をするところが。

ですが、正しくテストを実施・分析できれば、製品・サービスのクオリティを確実に向上できるので、ぜひともものにしたいスキルです。

それでは。

参考書籍

分かりやすい文章で書かれていながら、ユーザビリティテストのエッセンスが詰まっています。
特にインタビューよりも前段にあって、より重要な作業の「タスクの設計」の解説は必読です!

2013年3月3日日曜日

Blogger に LinkWithin を導入してみた


LinkWithinとは
ブログの各エントリに、関連記事を表示してくれるサービスです。
写真付きで表示してくれます。
こんな感じの見た目になります。


数分で導入できますよ。

これでブログのフリクエンシを上げ、PV向上を目指します!

このエントリの目次
  1. LinkWithin にて必要な項目を入力する
  2. Bloggerでモジュールを作る
  3. さいごに

1.LinkWithin にて必要な項目を入力する
それでは早速 導入していきます。
まずはLinkWithinのサイトにいきます。
ページ右下に、設定を入力する部分があります。


Blog Linkは、ブログのURLを入力します。
当ブログなら「http://www-indblue.blogspot.jp/」となります。

Widthでは、表示する関連記事の数を選択できます。
3〜5つが選べます。
数によってレイアウトを中央寄せに調整してくれる、とかはなく、左寄せになります。

他は見たまんまですので説明は割愛します。

で、「Get Widget!」ボタンを押します。
あとはBlogger での作業に移りますよ。

2.Bloggerでモジュールを作る
「Get Widget!」」ボタンを押すとこんな画面になります。


あとは上の画面に書いてあるとおり、4ステップで完了です!

設置後 ブログを確認してみると、こんな感じになりました!


うーん、でもYou might also like:が気になりますね。
好きな文言に変えてみましょう。

Blogger のレイアウトから編集します。

で、
var linkwithin_text = 'オススメのエントリ';

のように追加します。
こんな感じ↓


すると、文言が変更されました。

3.さいごに
これでPV爆上げなるかな!
様子を見て、効果を確かめてみたいと思います。

Related Posts Plugin for WordPress, Blogger...