tag:blogger.com,1999:blog-230404162024-03-13T10:30:14.798+09:00splhacksakamotoがなんとなく技術的と思う話を書き連ねるところ。技術ってなんだろう。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comBlogger317125tag:blogger.com,1999:blog-23040416.post-77736665926854822172017-12-20T07:19:00.000+09:002017-12-20T07:19:20.009+09:00Mediumに移動しました<a href="https://medium.com/@sakamoto.kazuki">https://medium.com/@sakamoto.kazuki</a>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-48256345782577222742017-03-08T16:11:00.000+09:002017-03-08T16:20:03.591+09:00アメリカのクレジットカード 2017年3月版<span style="font-family: "times";">これは、2017年3月のアメリカではいったいどのクレジットカードを作ればいいのか、という趣旨で書かれた主観的な記事。</span><br />
<div style="-webkit-text-stroke-width: 0px; color: black; font-family: Times; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<div style="font-weight: normal; margin: 0px;">
<a href="http://blogger.splhack.org/2016/02/blog-post.html">昔の記事</a>と比べて推移を楽しむのもまた一興。</div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<h3 style="font-weight: normal; margin: 0px;">
■<a href="https://creditcards.chase.com/a1/sapphire/reserve">Chase Sapphire Reserve</a></h3>
<div style="font-weight: normal;">
<br /></div>
<div style="font-weight: normal;">
現時点での「旅行系最強カード」との評判(reddit調べ)。レストランと旅行がキャッシュバック3% (旅行に使えば4.5%。これによりCiti Costcoは降格し完全に出番なし)。年会費は$450と高額なものの、うち$300が旅行で使えるクレジットとなるので、実質年会費は$150。ラウンジ使えたり、いろいろ。</div>
<div style="font-weight: normal;">
<br /></div>
<div style="font-weight: normal;">
ちなみに、2017年3月11日までにChase店舗で作ればボーナス10万ポイント(当然条件あり。オンライン申請は、すでにボーナス5万ポイントまで減額済み)。フライトチケットに使えば$1,500相当。</div>
<div style="font-weight: normal;">
<br /></div>
<div style="font-weight: normal;">
なお、Chaseはクレジットカード申請時の審査として、クレジットヒストリ以外に「5/24ルール」「3/1ルール」と呼ばれてるルールがある。っぽい。「24ヶ月以内に5枚クレジットカードを作ってるとリジェクトされる」「30日以内に3枚Chaseのクレジットカードを申請するとリジェクトされる」てな感じ。でもChase店舗では、この制限も緩和される場合があるとかないとか。</div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<h3 style="font-weight: normal;">
■<a href="https://creditcards.chase.com/freedom">Chase Freedom</a></h3>
<div>
前述のChase Sapphire Reserveを補完するクレジットカード。3ヶ月ごとにローテーションされるカテゴリで、キャッシュバック 5%を稼ぎ、Chase Sapphire Reserveにトランスファーし、旅行で使えばキャッシュバック<b>7.5%</b>相当、ってこと。</div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<h3 style="font-weight: normal;">
■<a href="https://www.bankofamerica.com/credit-cards/products/better-balance-rewards/">BankAmericard Better Balance Rewards Credit Card</a></h3>
<div style="font-weight: normal;">
毎月1セント以上使って、ステートメントもらったあと遅延なく毎月きちんと支払えば、クォーター毎にお金がもらえる、不思議なクレジットカード。Bank of Americaの口座があれば、<b>年間$120もらえる</b>。毎月必ず支払いがあるものをコレで払うだけでOK。つまりNetflixをこのカードで払えば実質タダ。</div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<h3 style="font-weight: normal;">
■<a href="https://www.amazon.com/Synchrony-Bank-Amazon-com-Store-Card/dp/B008A0GNA8">Amazon Store Card</a></h3>
<div style="font-weight: normal;">
Amazon Prime払い続けてる人はコレ。ステートメントクレジットバック 5%。</div>
<div style="font-weight: normal;">
自動で入れられてしまうCard Securityは即キャンセルしとくこと。サポートチャットでキャンセルできる。これがあるので、ChaseのAmazonを作る理由はとりあえず思いつかない。</div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<h3 style="font-weight: normal;">
■<a href="https://www.bankofamerica.com/credit-cards/products/cash-back-credit-card/">BankAmericard Cash Rewards</a></h3>
<div style="font-weight: normal;">
<a href="http://info.bankofamerica.com/preferred-rewards/">Bank of Americaの口座(Merrill Edge含む)に$100k</a>入れておけば、Costcoとグローサリーが、キャッシュバック 3.5%。ガソリンはなんと5.25%。しかも、その状態ならMerrill Edgeの手数料が無料(ランクに応じた回数制限あり)。</div>
<div style="font-weight: normal; margin: 0px;">
<br /></div>
<h3 style="font-weight: normal;">
■<a href="https://www.citi.com/credit-cards/credit-card-details/citi.action?ID=citi-double-cash-credit-card">Citi Double Cash Card</a></h3>
<div style="font-weight: normal;">
上記以外全部これ。キャッシュバック 2%。同じくキャッシュバック 2%の<a href="https://www.fidelity.com/cash-management/visa-signature-card">Fidelity Visa</a>でもいいと思う。</div>
<div style="font-weight: normal;">
<br />
<br />
<br />
<br />
<dd></dd></div>
</div>
sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-8032549730436980212016-12-30T06:42:00.000+09:002016-12-30T17:02:24.945+09:00アメリカの就労ビザソフトウェアエンジニアのみなさん、すでに<a href="http://blogger.splhack.org/2016/12/blog-post.html">気軽にアメリカ移住を考え</a>始めたと思うんですが、ここでアメリカの就労ビザについてもうちょっとつっこんで書いときましょう。<br />
<br />
この記事は「ソフトウェアエンジニアに特化した、アメリカ就労ビザのガイド」です。細心の注意を払ったつもりで書いてますが、<b>所詮はチラシの裏</b>なので、実際は「リクルータを通して」「会社が雇っている」「海千山千な移民弁護士に」「相談」してください。個人個人、学歴/経歴/ポジションが異なるんですから、当然ビザ申請におけるストラテジーも異なってきます。(追記: ちなみにこの記事は、ぬか喜びを防止するため、若干nagativeな感じにふってあります。まずは<a href="http://blogger.splhack.org/2015/09/blog-post.html">面接</a>受けてオファーもらうところから始めたらいいかと思います!)<br />
<br />
<br />
まずは「<b>H-1Bビザの抽選</b>」について。<br />
<br />
USCIS(U.S. Citizenship and Immigration Services、米国移民局)自ら "<b>lottery</b>" 言うてます。<br />
<br />
<a href="https://www.uscis.gov/news/alerts/uscis-completes-h-1b-cap-random-selection-process-fy-2017">https://www.uscis.gov/news/alerts/uscis-completes-h-1b-cap-random-selection-process-fy-2017</a><br />
<br />
<blockquote class="tr_bq">
a computer-generated random selection process, or lottery, to select</blockquote>
<br />
どーいうことかというと、毎年H-1Bビザは、新規に 65,000 しか発行しません。今年は、そこに 236,000 人申請したわけです。つまり、236,000人中65,000人しか、H-1Bビザはもらえません。だから、<b>30%の当選確率</b>ということになります。<br />
<br />
実際は、例外があるんですね。特定地域は別枠になってたり。われわれに少しでも関係あるものは「the advanced degree exemption」です。<br />
<br />
アメリカの大学院を卒業(advanced degree)していれば、上記65,000以外に「the master's cap」といわれる別枠に入れるんです。<br />
<br />
<br />
算数をしてみます。<br />
<br />
FY 2017(2016年4月申請)は、申請数 236,000。<br />
<br />
うちadvanced degree申請数をNとします。USCISは公表してないので。<br />
<br />
master's capが20,000。<br />
<br />
つまり当選確率は 20,000 ÷ N。<br />
<br />
仮に N=40,000 とすると 20000/40000 = 50%<br />
<br />
50%なら、なかなか良さそうです。で、終わらないのがthe advanced degree exemption。<br />
<br />
<br />
このmaster's capに対する1回目の抽選で外れても、そのあと通常枠で再抽選されるんです!<br />
<br />
計算式はこうなるはずです。<br />
<br />
(20,000 ÷ N) + (1 - 20,000 ÷ N) × (65,000 ÷ (236,000 - 20,000))<br />
<br />
仮に N=40,000 とすると<br />
<br />
(20000 / 40000) + (1 - 20000 / 40000) * (65000 / (236000 - 20000)) = <b>65%!</b><br />
<br />
これは当たりそうです。<br />
<br />
<br />
でも、世の中そんな甘くない。<br />
<br />
<a href="http://www.iie.org/Research-and-Publications/Open-Doors/Data/International-Students/Academic-Level/2014-16">http://www.iie.org/Research-and-Publications/Open-Doors/Data/International-Students/Academic-Level/2014-16</a> によれば、学校卒業後の就労申請による2016年のOPTは 147,498人 だそーです。<br />
<br />
このOPT全員がH-1Bビザを申請するとすると、N=147,498なので<br />
<br />
(20000 / 147498) + (1 - 20000 / 147498) * (65000 / (236000 - 20000)) = 39.5%<br />
<br />
うーんツラい。OPT STEM Extensionで3年間就労可能、というのが重要な話だとわかっていただけたのではないでしょうか。<br />
<br />
<br />
まぁ、アメリカの大学院卒業してない人の確率は<br />
<br />
65,000 ÷ (236,000 - 20,000) = 30%<br />
<br />
なので、だいぶマシではありますが。<br />
<br />
<br />
確率がわかったところで、H-1Bビザの「<b>Requirements</b>」です。H-1Bビザを申請するにあたっての必要条件ですね。資格。<br />
<br />
H-1Bビザって、誰でももらえるものじゃなかったんです。<br />
<br />
<a href="https://www.uscis.gov/eir/visa-guide/h-1b-specialty-occupation/understanding-h-1b-requirements">https://www.uscis.gov/eir/visa-guide/h-1b-specialty-occupation/understanding-h-1b-requirements</a><br />
<br />
<br />
<span style="font-weight: bold;">条件1: a valid employer-employee relationship</span><br />
<br />
会社の入社面接に受かって、会社からもらったオファーにサインする、とかですよね。<br />
<br />
<br />
<b>条件2: A bachelor’s degree or higher degree or its equivalent</b><br />
<br />
アメリカの4年制大学かそれ以上を卒業してないとだめ、なんです。<br />
(実際もっといろいろありますけど)<br />
<br />
あ、まだがっかりしないでください。<b>"or its equivalent"</b> がポイントなんです。いまのところ、日本の4年制大学も同等とみなされてます。どこの大学でもいいはずです。<br />
<br />
<br />
<b>条件3: Your job must be in a specialty occupation related to your field of study</b><br />
<br />
えーと、残念なんですが、日本人のソフトウェアエンジニアは、ここでがっかりする方が多いんじゃないかと。<br />
<br />
<b>職業と学業が一致してないとだめ</b>、なんです。<br />
<br />
ソフトウェアエンジニアでH-1Bビザを申請するってことは、アメリカの4年制大学のComputer Science学科を卒業してる、ってことなんです。<br />
<br />
<br />
<ul>
<li>日本の4年制大学 情報学科卒業 → やったね! クリア!</li>
<li>日本の4年制大学 基礎工学科卒業 → たぶんクリア! 学部英語名に"Engineering"って入ってればいける可能性高いよ!</li>
<li>日本の4年制大学 経済学科卒業 → 申し上げにくいんですが...</li>
</ul>
<br />
<br />
みんなが聞いたことない大学でも、情報工学科を卒業してれば条件クリアなんですね。<br />
<br />
逆に、みんなが聞いたことある有名大学でも、情報工学科またはそれに匹敵した学科を卒業してなければ、条件クリアできないんです。<br />
<br />
<br />
しかし、がっかりするのはまだ早い。裏ワザがあるんです。<br />
<br />
みなさんのソフトウェアエンジニアとしての職歴、学歴に換算できてしまうんです。<br />
<br />
<blockquote class="tr_bq">
For H-1B purposes, three years of work experience in the field will be considered the equivalent of one year of U.S. university study </blockquote>
<br />
<b>職歴3年 → 学歴1年</b>、ですよ。桃栗三年柿八年ソフトウェアエンジニア十二年。つまり、情報工学科を卒業してなくても、<b>ソフトウェアエンジニアとして12年間</b>働いてれば、アメリカの大学のComputer Science bachelor's degreeを持ってるのと同等になります。うん、長いですね。H-1Bビザって、大変なんですよ。<br />
<br />
<br />
じゃ、文系学科卒業して、Computer ScienceなUniversity Extensionに行ったらどうなるの?<br />
<br />
文系学科卒業して、Computer ScienceなMaster's programに行ったらどうなるの?<br />
<br />
あ、オレ文系だけど、情報の単位取ってた! これって<strike>トリビア</strike>学歴になりませんかね?<br />
<br />
弁護士に相談だ。<br />
<br />
そもそもMaster's program側にも入学要件があるのでそれにも依存しますしね。<br />
<br />
<br />
あと、この学歴話、グリーンカード申請時のカテゴリ、EB-2、EB-3にも関わってくるんですけど、いま現在日本人の待ち時間的には、EB-2もEB-3も同じなので、まぁ、あんま関係ないです。<br />
<br />
<br />
なんか、H-1Bビザ、抽選確率と条件から無理ゲーな話に聞こえてきたんで、次いきましょう次。<br />
<br />
<br />
(もうひとつ裏ワザがあったりします <a href="https://www.uscis.gov/news/h-1b-cap-exemptions-based-relation-or-affiliation">https://www.uscis.gov/news/h-1b-cap-exemptions-based-relation-or-affiliation</a> 大学やNon profit団体はH-1B Cap Exemptions対象なので、いつでも行けちゃう。それがあなたの望んだ道ならば、ですけど)<br />
<br />
<b><br /></b>
<b>L-1Bビザ</b><br />
<br />
赴任で使うやつですけど、あいまいだった審査をきちんとしようということで、最近こんなふうになってます。<br />
<br />
<a href="https://www.uscis.gov/working-united-states/temporary-workers/l-1b-intracompany-transferee-specialized-knowledge">https://www.uscis.gov/working-united-states/temporary-workers/l-1b-intracompany-transferee-specialized-knowledge</a><br />
<br />
<blockquote class="tr_bq">
Specialized knowledge means either special knowledge possessed by an individual of the petitioning organization's product, service, research, equipment, techniques, management, or other interests and its application in international markets, or an advanced level of knowledge or expertise in the organization's processes and procedures</blockquote>
<br />
その会社のプロダクトに特化した技術を持ってると審査に通りやすいわけですね。なんかあります?<br />
<br />
外資系に入社。そして1年後、マネージャから「ちょっと話あるんだけどさ」なんて言われて、レイオフ!? なんて心配しながら聞いてみると「本社にXXっていうポジションが空いたんだけどさ、OOさん本社行ってみたいって言ってたよね。行ってみる?」なんて言われるわけですよ。月9ドラマですね。アピールアピール。<br />
<br />
実際は、複数のエリートたちがごくわずかに限られたポジションを虎視眈々と狙う、血で血を洗う争いが起きてるかもしれないので、調査した上で入社する方がいいかもしれない。<br />
<br />
ちなみにL-1Aビザっていう、経営者、管理職用のもあるらしいですけど、ソフトウェアエンジニアって感じじゃないじゃないですか。知らないですけど。ぶっちゃけ、マネージャとかやりたくないじゃないですか。ねぇ。<br />
<br />
<b>E-2ビザ</b><br />
<br />
<a href="https://travel.state.gov/content/visas/en/employment/treaty.html">https://travel.state.gov/content/visas/en/employment/treaty.html</a><br />
<br />
<blockquote class="tr_bq">
If you are not the principal investor, you must be considered an essential employee, employed in a supervisory, executive, or highly specialized skill capacity. Ordinary skilled and unskilled workers do not qualify.</blockquote>
<br />
「<b>Ordinary skilled and unskilled workers do not qualify</b>」ですからね。実際どのくらいの技術力、ポジションで審査通るのか、それは申請してみてからのお・た・の・し・み!<br />
<br />
ソフトウェアエンジニア一般として、じゃなくて「その会社にとって」がポイント。かといって、全員が全員E-2ビザで渡米しました、なんて会社があったとしたらUSCISはどー思いますかね。アメリカに職を作るのと引き換えにE-2ビザが認められてるようなもんなので、日本から連れてきた人じゃなくて、その仕事ってアメリカ人雇えばいんじゃないの? と突っ込まれるわけです。弁護士の腕の見せどころ、かもしれない。<br />
<br />
<br />
<b>O-1Aビザ</b><br />
<br />
<a href="https://www.uscis.gov/working-united-states/temporary-workers/o-1-visa-individuals-extraordinary-ability-or-achievement">https://www.uscis.gov/working-united-states/temporary-workers/o-1-visa-individuals-extraordinary-ability-or-achievement</a><br />
<br />
<b>Extraordinary ability or achivement </b>ですよ。え、この賞でもいけちゃうの? みたいな話は聞きますが、去年の日本人ビザ発行総数75,700に対して、Oビザ681人だけしか発行されてないですからね。まぁExtraordinaryですよね。<br />
<br />
神明さんのブログが詳しいです <a href="https://www.jinmei.org/blog/2008/10/19/474">https://www.jinmei.org/blog/2008/10/19/474</a><br />
<br />
<br />
<b>Diversity Visa Lottery</b><br />
<br />
<a href="https://www.dvlottery.state.gov/">https://www.dvlottery.state.gov/</a><br />
<br />
年末グリーンカードジャンボ宝くじ。毎年10月に書類申請。当たったらグリーンカード申請に進めます。いやー、こんなの当たんないと思うんですけど、実際当たってる人いますね(生存者バイアス)。ただ条件があって、高卒以上、資産がある程度以上、とかです。移民法改正により、まるっとなくなる可能性もあります。<br />
<br />
ただ、注意してほしいことがあります。他のビザは、それなりの審査を通り抜けて、学校で学習したか、職を手に入れてから就労ビザを手に入れているわけですが、DV Lotteryは単にくじに当たっただけです。そのあと、会社で入社面接をすり抜けて仕事を手に入れないといけないわけです。どうしましょう。起業してもいいですけど。<br />
<br />
アメリカ人との結婚も、ここに分類されるかな。<br />
<br />
<br />
<b>B-1ビザ/J-1ビザ</b><br />
<b><br /></b>
「うちに入社すればサンフランシスコオフィスで働けるよ! 入りなよ! え、ビザ? えっとね、わたしはよく知らないんだけど、入社までには聞いときますね。え? いや、大丈夫だって、平気平気。みんなもそうだよ」<br />
<br />
なんて会話があったら、<b>要警戒</b>。凄腕弁護士が超奥義でUSCISをねじ伏せるかもしれないし、J-1ビザからH-1Bビザなども不可能ではありませんが、まぁ、そうある話ではないんで、疑ってかかっていいかと思います。下手うつと、アメリカから国外追放される可能性もなくはないです。<br />
<br />
<br />
<b>ESTA</b><br />
<br />
「サンフランシスコオフィスの話ですけど」<br />
「あ、あれね。ESTAだったかな」<br />
「えっ」<br />
「えっ」<br />
<br />
<br />
以上。<br />
<br />
<br />
いやー、こんな難関通り抜けたなんてオレすごい、というより、むしろ、平和な日本に生まれたのに戦地に向かった奇行種、と言われるほうが感覚が近い。<br />
<br />
そんじゃーね。<br />
<div>
<br /></div>
sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-82344705029649536862016-12-29T12:07:00.000+09:002016-12-29T15:23:12.895+09:00渡米について最初に、筆者のスタンスを書いておくと<br />
<br />
<ul>
<li>アメリカに来るも来ないもあなた次第</li>
<li>来たい人がいたら応援したい</li>
<li>日本人が増えたら、風が吹けば桶屋が儲かるレベルで得する</li>
<ul>
<li>(日本人向けのお店やサービスが増えるかもしれないから)</li>
</ul>
</ul>
<br />
て感じ。この記事を書いた理由も「年末で暇だったから」。<br />
<br />
<br />
「<span style="font-family: "hiragino mincho pron" , "ヒラギノ明朝 pro w6" , "hiragino mincho pro" , , "ms p明朝" , serif; font-size: small;"><a href="https://note.mu/ruiu/n/n8bf5a3c7fa17">ソフトウェアエンジニアならもっと気軽にアメリカ移住を考えたほうがいいよ</a></span>」<br />
<br />
<blockquote class="tr_bq">
やっぱりアメリカの方が待遇がずっとよくて、物価差を考慮に入れてもやっぱり全然違うと思う。やや大げさかもしれないけど、日本のプロ野球と大リーグみたいな違いがあるように思うんだけど。</blockquote>
<br />
外資系企業の東京勤務 → シリコンバレー勤務、なら、ボーナスやRSU込みで、日本でもらってた全額の1.5倍もらえると思っていいと思う。2倍いくかも。もちろん円→ドル為替状況やポジションによりますが。東京の日本企業で高めにもらってるソフトウェアエンジニアなら、シリコンバレーで働けば3倍以上いけるかもしれない。赤い彗星。高い人はより高く。あ、もちろん人によりますよ。<br />
<br />
ということで、いくらシリコンバレーの物価が高かろうが、金銭的に問題ないことがわかったところで、そこには、ビザの壁が立ちはだかる。<br />
<br />
<br />
(医療費とか子どもの学費とか、金銭的なアメリカの悪いところならいくらでも考えることができると思うんですけど、不安なら行かなければいいんです。まぁ、良い会社入ればなんも問題ないですけどね)<br />
<br />
<br />
アメリカで働くには、なんと就労ビザってのが必要なんです。大雑把に言うとこんな感じ。OビザやL-1Aビザなどもありますが、それがもらえる人はこんなの読む必要ない。<br />
<br />
<ul>
<li>L-1Bビザ</li>
<ul>
<li>赴任で使われるのが一般的</li>
<li>もらえるまで1年間その会社のアメリカ国外オフィスで働く必要あり</li>
<li>転職できない</li>
</ul>
<li>E-2ビザ</li>
<ul>
<li>起業時に使う</li>
<li>か、日系企業の重要人物としてもらう(つまり手練れしか使えないと思っていい)</li>
<li>いつでももらえる。転職直後でも平気。</li>
<li>転職できなくもない</li>
</ul>
<li>H-1Bビザ</li>
<ul>
<li>毎年4月から申請開始、10月から働ける</li>
<li>いまのところ抽選になってて、当選確率30%程度</li>
<li>転職できる</li>
</ul>
</ul>
<br />
<br />
<div>
<br /></div>
<div>
で、その就労ビザ、ここ10年の日本人向け発行数推移ですが(<a href="https://travel.state.gov/content/visas/en/law-and-policy/statistics.html">https://travel.state.gov/content/visas/en/law-and-policy/statistics.html</a>より)</div>
<div>
<br /></div>
<br />
<a href="http://2.bp.blogspot.com/-CrfWrQXWG2Q/WGRT8orxRcI/AAAAAAAD2_o/ixFxsvJf9Dg0S1qDm81Sj9gW_vID3L41gCK4B/s1600/WorkerVISA.png" imageanchor="1"><img border="0" height="476" src="https://2.bp.blogspot.com/-CrfWrQXWG2Q/WGRT8orxRcI/AAAAAAAD2_o/ixFxsvJf9Dg0S1qDm81Sj9gW_vID3L41gCK4B/s640/WorkerVISA.png" width="640" /></a><br />
<br />
<br />
ひと目でわかるように、H-1Bビザ発行数が減ってます(H Classなので、H-2やH-4、更新や再取得も入ってると思いますが、まぁ、この減りっぷりなら新規H-1Bも同じように減ってるでしょう)。日本の労働人口が減っているから、とか、インドの会社が超大量に申請しているので日本人の当選率が減ってるから、など仮説を立てることができますが、それはそれとして。この推移から推定できることは、6、7年でH-1Bビザに当選する人はいなくなるってことです!<br />
<br />
こんな厳しい状況でH-1Bビザを手に入れるには、どうすればいいかって?<br />
<br />
ホントどうすればいいんですかね...<br />
<br />
<br />
博打好きならH-1Bビザでいいんですが、そうでないならばH-1Bビザはなかったことにしたほうがいいかもしれません。となると次のような手段が考えられるかと。<br />
<br />
<ul>
<li>E-2ビザで起業する! → こんなの読んでる場合じゃないよ!</li>
<li>日系企業でE-2ビザを狙う → あなた手練れ?</li>
<li>日系企業でL-1Bビザ使って赴任する → まず間違いなくアメリカで転職できないけど、いい?</li>
<li>外資系企業でL-1Bビザ使って転籍する → おそらくいちばん無難。日本Googleとか。</li>
</ul>
<br />
(追記: 「転職できる」ってのは重要なポイントで。レイオフされるんです。あ、オレは凄いソフトウェアエンジニアだからレイオフされないぜ、とか思ってますか。個人の能力は一切関係ないです。チームごと、部門ごと、オフィスごと切られるから。実際わたしもレイオフされました :) え、じゃあ外資系もあぶないんじゃない? てなりますけど、外資系はアメリカに転籍後、グリーンカードやH-1Bビザ申請をいきなりサポートしてくれる確率が高いんで、日系に比べれば全然安全なわけです。で、H-1Bビザの場合、レイオフ後転職できればビザの転送が可能。E-2ビザも会社の条件が会えば転送可能。L-1Bビザの場合、... えーと、どうしましょうね)<br />
<br />
<br />
面接に受かる自信がない... なんて方は、学生にもどるって方法があります。技術を学習して実力アップできるし、英語も学べるし、修了後OPTという就労許可がもらえるので、なんとH-1Bビザなどなくても働ける! ソフトウェアエンジニアリングなら、その期間も3年間!<br />
<br />
バラ色の未来ですね<br />
<br />
<br />
そこで、このグラフ<br />
<br />
<a href="http://3.bp.blogspot.com/-T-MK8XBv5fk/WGRUEI1Y53I/AAAAAAAD2_w/T_Uld8pxvPUnvm_U-yDF0slY84Y0W758QCK4B/s1600/Screen%2BShot%2B2016-12-28%2Bat%2B3.13.45%2BPM.png" imageanchor="1"><img border="0" height="388" src="https://3.bp.blogspot.com/-T-MK8XBv5fk/WGRUEI1Y53I/AAAAAAAD2_w/T_Uld8pxvPUnvm_U-yDF0slY84Y0W758QCK4B/s640/Screen%2BShot%2B2016-12-28%2Bat%2B3.13.45%2BPM.png" width="640" /></a><br />
<br />
<a href="http://www.iie.org/Research-and-Publications/Open-Doors/Data/International-Students/By-Academic-Level-and-Place-of-Origin">http://www.iie.org/Research-and-Publications/Open-Doors/Data/International-Students/By-Academic-Level-and-Place-of-Origin</a> からプロットした、アメリカの大学に留学してる日本人学生数推移です。<br />
<br />
大学院への留学(Grad)、減少が止まらないです。この傾き、H-1Bビザ同様、あと何年で大学院留学生いなくなるんですかね...<br />
<br />
でも、Gradに引きずられてOPTも同様に減少すると思いきや、ある程度がんばってます。グラフで上昇中のNon-degreeが、Gradの減少分を引き止めてるんでしょうか。たぶんUniversity Extensionじゃないかと思いますが、バークレー大学Extensionとかの、社会人など対象の大学での授業ですね。<br />
<br />
てことで、University Extensionに入ってOPTを狙うのが無難ということになります。<br />
<br />
が、University ExtensionだとOPT STEM Extension(3年間)がもらえないのではないかという情報も。つまり、1年間のOPTでシリコンバレー企業に入社して、そのあとH-1Bビザを申請、30%の確率で当選すれば、そのままシリコンバレーに滞在できる、そうでなければ...<br />
<br />
そこをセキュアにするには、大学院。OPT STEM Extensionに加えて、当然オファーの金額も上がります。<br />
<br />
<br />
問題は、学費。<br />
<br />
<br />
Master of Science in Computer Science: 1年間コースで<b>600万円</b><br />
<br />
<br />
とかみたいですね。うーん。シリコンバレーで働いてたら、投資と思えばなんてことはない金額(たぶん)ですが、悩んでる間に、さらに値段上がりますよ。日本とアメリカでインフレ率が違うので。たとえば最低賃金の推移。<br />
<br />
<ul>
<li>東京 2014年 869円 → 2016年 932円 7.3%上昇</li>
<li>サンフランシスコ 2014年 $10.74 → 2016年 $13.00 <b>21%上昇!</b></li>
</ul>
<br />
<a href="http://youkoseki.tumblr.com/post/115454585310/">http://youkoseki.tumblr.com/post/115454585310/</a><br />
<blockquote class="tr_bq">
<span style="background-color: white; color: #424242;">日本では年収1000万円がいつまでも一つのハードルのように語られるが、1994年の年収1000万円と同じ価値は、2014年の日本では1015万円とほぼ変わらないのに対し、2014年の米国では1600万円が必要になる。</span></blockquote>
これで円安が進行したりすると...<br />
<div>
<br /></div>
<div>
<br /></div>
奨学金狙うしかないですね (あとコースによっては、インターンで月給70万円いけるなんて話も)<br />
<br />
<br />
というわけで、気軽にアメリカ移住を考えたらいいと思います!sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-67478169689710508032016-02-01T09:28:00.001+09:002016-06-21T14:13:18.846+09:00アメリカのクレジットカード<br />
<div>
どのクレジットカードが良いのか、ここに記す。</div>
<div>
<br /></div>
<div>
ANA Card USAで修行を開始して、1年の無料期間のあと、1年会費払って、その後解約。現在クレジットカードだけで9アカウント(close済みANA入れて10)。</div>
<ul>
<li>マイラーでも陸マイラーでもないので、キャッシュバック重視。</li>
<li>クレジットスコアは良いほう。</li>
<li>リボ払いとかありえない。</li>
<li>支払い遅延とかありえない。</li>
<li>入国から2年9ヶ月。</li>
<li>グローサリーはCostcoにほぼ完全依存。</li>
</ul>
<div>
<br />
<br />
<dt><span style="font-size: large;"><a href="https://www.citi.com/credit-cards/creditcards/citi.action?ID=citi-costco-credit-card-conversion">Citi Costco Anywhere Visa Card</a></span>
</dt>
<dd>Costco入場用カード。でもCostcoの支払いには使用しない。レストランとトラベル用(キャッシュバック3%)。</dd><dd><br /></dd>
<dt><a href="https://www.bankofamerica.com/credit-cards/products/cash-back-credit-card.go" style="font-size: x-large;">BankAmericard Cash Rewards Card</a></dt>
<dd><a href="http://info.bankofamerica.com/preferred-rewards/">Bank of Americaの口座(Merrill Edge含む)に$100k</a>入れておけば、Costcoとグローサリーは、キャッシュバック 3.5%。ガソリンはなんと5.25%。</dd><dd><br /></dd>
<dt><span style="font-size: large;">
<a href="http://www.amazon.com/Synchrony-Bank-Amazon-com-Store-Card/dp/B008A0GNA8">Amazon.com Store Card</a></span>
</dt>
<dd>Amazon Primeに年間$99払い続けてる人用。ステートメントクレジットバック 5%。Card Securityは即キャンセルしとくこと。サポートチャットでキャンセルできる。
</dd><dd><br /></dd>
<dt><span style="font-size: large;">
<a href="https://www.bankofamerica.com/credit-cards/products/better-balance-rewards.go">BankAmericard Better Balance Rewards Credit Card</a></span>
</dt>
<dd>毎月1セント以上使って、ステートメントもらったあと遅延なく毎月きちんと支払えば、クォーター毎にお金がもらえる、不思議なクレジットカード。Bank of Americaの口座があれば、<b>年間$120もらえる</b>。Netflixとか、毎月必ず支払いがあるものをコレで払うだけでOK。
</dd><dd><br /></dd>
<dt><span style="font-size: large;">
<a href="https://www.discover.com/credit-cards/cash-back/">Discover it Card</a></span>
</dt>
<dd>BoA Cash RewardsとAmazon Store Cardにより出番が減った、キャッシュバック5%カテゴリローテーション系クレジットカード。1年に3ヶ月だけレストランで使う、とかいうレベル。あとは、Six Flagsでの支払いが全部キャッシュバック 5%な上、優先入場できるので、近くにSix Flagsあって、お子さんいる場合はお得。しかしSix FlagsよりGreat Americaの方がイイですよ。<br />
<br /></dd>
</div>
<dt><span style="font-size: large;"><a href="https://www.citi.com/credit-cards/credit-card-details/citi.action?ID=citi-double-cash-credit-card">Citi Double Cash Card</a></span></dt>
<dd>どこでも使えて、キャッシュバック 2%。Costco/グローサリー/レストラン/トラベル/Amazon/Six Flags以外の支払いは、全部コレ。</dd><dd><br /></dd>あと、<a href="https://creditcards.chase.com/credit-cards/chase-freedom.aspx?CELL=603Z&B7C3=VK0WN8">Chase Freedom card</a>作ってもいいかもな、というところ。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-71871141153096989822015-10-22T13:54:00.000+09:002015-10-22T15:01:01.757+09:00シリコンバレーの採用面接対策<div>
日本人ソフトウェアエンジニアである筆者が、シリコンバレー企業の採用面接をいくつか突破するにあたり、役に立ったなぁ、と思ったものを書き連ねてみました。ソフトウェアエンジニアポジションの採用面接における、一般的な対策として。渡米してシリコンバレーで働きたい! なんて方の参考になれば幸いです。アフィねらいですよね、と聞かれたら、そうではないですと言えない感じではありますけど、まぁそんな感じです。<br />
<br />
シリコンバレーで働きたい、といえば、良い本が出ました。「<a href="http://www.amazon.co.jp/gp/product/4774176567/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4774176567&linkCode=as2&tag=amazonasso0d9-22">エンジニアとして世界の最前線で働く選択肢 ~渡米・面接・転職・キャリアアップ・レイオフ対策までの実践ガイド</a>」。ていうか、まだ第七章「解雇に備える」しか読んでないんですが :) </div>
<br />
<a href="http://www.amazon.co.jp/gp/product/4774176567/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4774176567&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4774176567&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4774176567" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
そうそう、解雇といえば、<a href="http://www.amazon.co.jp/gp/product/1400006627/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1400006627&linkCode=as2&tag=amazonasso0d9-22" rel="nofollow">Getting Ahead in the U.S. (ESL)</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1400006627" height="1" style="border: none !important; margin: 0px !important;" width="1" />もしょっぱなの第一章から解雇の話です。ESLの教材で、COBRAの説明を聞くとは思いませんでした。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/1400006627/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=1400006627&linkCode=as2&tag=amazonasso0d9-22" rel="nofollow"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=1400006627&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1400006627" height="1" style="border: none !important; margin: 0px !important;" width="1" />
<br />
<br />
あと「<a href="http://www.amazon.co.jp/gp/product/1617292397/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1617292397&linkCode=as2&tag=amazonasso0d9-22" target="_blank">SOFT SKILLS</a>」て本が、<a href="http://d.hatena.ne.jp/higepon/20150921/1442843666" target="_blank">すごくいいらしいですよ</a>(丸投げ)。入社時の給与交渉なんて、行き当たりばったりもいいとこだったんで、事前に知っときたかった感じです。とか言いながら実はまだ読んでないんですが、シリコンバレーに来ると、この本タダで読めちゃいます。サンフランシスコ図書館とかサンマテオカウンティ図書館などで図書館カードを作ると、Safari Books Onlineのサブセットに無料でアクセスできるようになりますが、この本そこに入ってるんで、いつでも無料で読めます。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/1617292397/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=1617292397&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=1617292397&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" height="200" width="158" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1617292397" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
あとオンラインでebookやaudio bookを借りれたり、美術館博物館とかの割引が効いたり、いろいろ特典あるんで、採用面接通ってサンフランシスコベイエリアに住むことになったら、図書館のカード作っときましょう。居住地の図書館だけじゃなく、サンフランシスコ図書館とか、サンマテオカウンティ図書館は(そしてたぶん他の図書館も)、カリフォルニア州に住んでさえいれば図書館カード作れます。<br />
<br />
<b><i><span style="font-size: x-large;">本</span></i></b><br />
<div>
<br />
筆者は現地法人に現地採用されてたとはいえ、こっちでの採用面接は初めてだったので、Quoraとかで紹介されてた面接対策本を片っ端から買ってみました。</div>
<ul>
<li><a href="http://www.amazon.co.jp/gp/product/1849967202/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1849967202&linkCode=as2&tag=amazonasso0d9-22">The Algorithm Design Manual</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1849967202" height="1" style="border: none !important; margin: 0px !important;" width="1" /></li>
<li><a href="http://www.amazon.co.jp/gp/product/1479274836/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1479274836&linkCode=as2&tag=amazonasso0d9-22">Elements of Programming Interviews: The Insiders' Guide</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1479274836" height="1" style="border: none !important; margin: 0px !important;" width="1" /></li>
<li><a href="http://www.amazon.co.jp/gp/product/B008SGNJOW/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B008SGNJOW&linkCode=as2&tag=amazonasso0d9-22">Programming Interviews Exposed: Secrets to Landing Your Next Job</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=B008SGNJOW" height="1" style="border: none !important; margin: 0px !important;" width="1" /></li>
<li><a href="http://www.amazon.co.jp/gp/product/1468108867/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1468108867&linkCode=as2&tag=amazonasso0d9-22">Data Structures and Algorithms Made Easy</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1468108867" height="1" style="border: none !important; margin: 0px !important;" width="1" /></li>
<li><a href="http://www.amazon.co.jp/gp/product/0984782850/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=0984782850&linkCode=as2&tag=amazonasso0d9-22">Cracking the Coding Interview: 189 Programming Questions and Solutions</a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=0984782850" height="1" style="border: none !important; margin: 0px !important;" width="1" /></li>
</ul>
一番役に立ったのは、結局のところ、ド定番の「<a href="http://www.amazon.co.jp/gp/product/0984782850/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=0984782850&linkCode=as2&tag=amazonasso0d9-22">Cracking the Coding Interview</a>」でした。<a href="http://www.crackingthecodinginterview.com/uploads/6/5/2/8/6528028/handout_-_cracking_the_coding_skills.png" target="_blank">A Problem-Solving Flowchart</a>とか重要(チャート図自体はサイトからダウンロードできますけど、詳細説明は本にしか載ってません)。ただ黙って問題解けばいいわけじゃないのです。Googleとか有名ドコロは、どういう面接がどうやって行われるか、どのように評価されるか、とかも書かれてます。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/0984782850/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=0984782850&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0984782850&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><br />
<img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=0984782850" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
あ、<a href="http://www.amazon.co.jp/gp/product/4839942390/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4839942390&linkCode=as2&tag=amazonasso0d9-22" target="_blank">日本語版</a>持ってます? 私も持ってるんですけど、<a href="http://www.amazon.co.jp/gp/product/0984782850/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=0984782850&linkCode=as2&tag=amazonasso0d9-22">オリジナルの英語版は6th Edition</a>になってますし、これからシリコンバレー企業受けるわけですよね。当然ながら面接は全部<b>英語</b>ですんで、<a href="http://www.amazon.co.jp/gp/product/0984782850/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=0984782850&linkCode=as2&tag=amazonasso0d9-22">英語版</a>読んだほうがいいと思うんです。ええ。シリコンバレーでは英語ができなくても問題にならない、なんていう記事もありますけど、あれって、「ネイティブと同等な」英語ができなくても問題にならない、だと思うんですよね。たぶん最低でも<a href="http://souspeak.com/cebu/toeic-necessary/">TOEIC 800点</a>とかないとツライんじゃないかなと(TOEICの点数云々に関しては<a href="http://souspeak.com/cebu/toeic-necessary/">リンク先</a>をどぞ)。そういえば、<a href="http://blogger.splhack.org/2014/09/blog-post.html" target="_blank">英語学習についての記事</a>も書いたことがあるんで、読んでみてくださいませ。まぁ「英語△/コーディング◎」は通る可能性ありますが、「英語◎/コーディング△」は通らないんじゃないかなぁと思ったりもします。コーディングできる方は、とりあえず入社してから、一緒に英語で苦労しましょう。<br />
<br />
で、コーディング面接で出されるようなアルゴリズムとデータ構造って、普段の仕事であんまり直接使わないかな、なんて思うわけなので、しっかり復習しといた方がいいわけです。その復習にピッタリだったのが、「<a href="http://www.amazon.co.jp/gp/product/1468108867/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1468108867&linkCode=as2&tag=amazonasso0d9-22">Data Structures and Algorithms Made Easy</a>」。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/1468108867/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=1468108867&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=1468108867&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><br />
<br />
たとえば、リンクリストからのノード削除とか、事細かに図解入りで説明されてます。そんな簡単なの復習しなくてもいいんじゃない? という方もいると思うんですが、<a href="http://www.amazon.co.jp/gp/product/1468108867/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1468108867&linkCode=as2&tag=amazonasso0d9-22">この本</a>、コーディング面接で出るような問題もたくさん載ってまして。しかも、コーディング面接の回答に必須である、実行時計算量(Time Complexity)、メモリ使用量(Space Complexity)もちゃんと解説されてます。<br />
<br />
あと、面接に到達するためには、ちゃんとしたレジュメを書いて書類選考を突破しないといけないわけですが、それは「<a href="http://www.amazon.co.jp/gp/product/B008SGNJOW/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B008SGNJOW&linkCode=as2&tag=amazonasso0d9-22">Programming Interviews Exposed</a>」にレジュメ具体例付きで説明されてたりします。<br />
<br />
<img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1468108867" height="1" style="border: none !important; margin: 0px !important;" width="1" />
<a href="http://www.amazon.co.jp/gp/product/B008SGNJOW/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=B008SGNJOW&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B008SGNJOW&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=B008SGNJOW" height="1" style="border: none !important; margin: 0px !important;" width="1" />
<br />
<i><br /></i>
<i><b><span style="font-size: x-large;">ホワイトボード</span></b></i><br />
<div>
<br />
コーディング面接でPC使うケースもなくはないんですが、基本的にはホワイトボード使いますんで、買っちゃいましょう。練習なしでいきなりホワイトボードにソースコード書け、とか言われても難しいものです。練習あるのみ。ただ書くだけじゃなくて、<b>Think Out Loud</b>ですよ。ホワイトボードで問題解ければ、PCで解くのは造作も無いでしょう(電話面接は、PC使ってコーディングするケースが多い)。<br />
<br />
イケアの子ども用ホワイトボード、$14.99。なかなか良いです。でも、これだけだと書ける面積がちょっと狭い。<br />
<a href="http://www.amazon.co.jp/gp/product/B003915FZC/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=B003915FZC&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B003915FZC&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=B003915FZC" height="1" style="border: none !important; margin: 0px !important;" width="1" />
<br />
私は、このイケアのに加えて、50cmx70cmくらいのホワイトボードを壁に立てかけて練習しました(Expo Dry Erase Markerを5本使いきった)。<br />
<br />
<i><b><span style="font-size: x-large;">ウェブサイト</span></b></i></div>
<div>
<br />
本に載ってる問題をホワイトボードで練習するわけですが、以下のサイトで、お目当ての会社の問題を探して練習するのもいいです。まぁ、本に載ってる問題同様、出るも八卦でないも八卦ですけど。面接体験談なんかも読めます。</div>
<div>
<ul>
<li><a href="http://www.careercup.com/page">http://www.careercup.com/page</a></li>
<li><a href="http://www.glassdoor.com/">http://www.glassdoor.com/</a></li>
</ul>
<div>
<br /></div>
</div>
sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-42445283179557202472015-08-21T14:31:00.000+09:002015-12-12T03:39:19.944+09:00アメリカのグリーンカード先人たちのブログ記事に助けられたので、私もここにグリーンカード取得までの道のりを記録しときます。もっとストーリー仕立てにして、mediumに書かないといけない気がしますけど。シリコンバレーですからね。<br />
<br />
<br />
<b>フローチャート</b><br />
<br />
<a href="http://immigrationroad.com/green-card/immigration-flowchart-roadmap-to-green-card.php">http://immigrationroad.com/green-card/immigration-flowchart-roadmap-to-green-card.php</a><br />
<br />
<br />
<b>タイムライン</b><br />
<br />
<div class="p1">
<span class="s1">2014年2月 準備開始</span></div>
<div class="p1">
<span class="s1">2014年4月 H-1B申請(プレミアムプロセッシング、Non Advanced Degree枠)</span></div>
<div class="p1">
<span class="s1">2014年4月 H-1B当選!</span></div>
<div class="p1">
<span class="s1">2014年5月 H-1B承認!</span></div>
<div class="p1">
<span class="s1">2014年6月 PERM用Ad開始</span></div>
<div class="p1">
<span class="s1">2014年8月 PERM用Ad quiet period終了</span></div>
<div class="p1">
<span class="s1">2014年8月 PERM申請</span></div>
<div class="p1">
<span class="s1">2014年10月 自動的にH-1Bにステータスチェンジ</span></div>
<div class="p1">
<span class="s1">2015年1月 PERM承認</span></div>
<div class="p1">
<span class="s1">2015年2月 Medical Exam</span></div>
<div class="p1">
<span class="s1">2015年2月 I-140/I-485 concurrent+AP+EAD申請</span></div>
<div class="p1">
<span class="s1">2015年3月 Biometrics schedule notice(配送途中で破損! 弁護士にも</span>コピーが届いてたので無事)</div>
<div class="p1">
<span class="s1">2015年4月 Biometrics</span></div>
<div class="p1">
<span class="s1">2015年4月 EAD/APカード到着!</span></div>
<div class="p1">
<span class="s1">2015年7月 I-140承認! </span></div>
<div class="p1">
<span class="s1">2015年7月 I-485承認!</span></div>
<div class="p1">
2015年8月 グリーンカード到着!<br />
2015年9月 レイオフ!<br />
2015年10月 就職!!!</div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1">全行程1年半。入国から2年4ヶ月。</span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1"><b>Medical Exam</b></span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1">USCISのリストから選ぶ。2015年2月だと近所では1人$260が相場でした。ツベルクリン反応注射代込み。保険は効きません。Medical FSAが使えるかどうか不明。</span>母子手帳がない場合の血液検査は、Quest Diagnosticsで$53.14。項目は以下のとおり。</div>
<div class="p1">
</div>
<ul>
<li>HEPATITIS B</li>
<li>VARICELLA</li>
<li>MMR</li>
<li>SYPHILIS</li>
<li>HIV</li>
</ul>
<div>
私の場合、母子手帳はなかったものの、ほとんど予防接種してたので問題なし/抗体ありという結果。足らない分のTdapだけ打ちました。予防接種は、メディカルチェックした病院じゃなくて、別の病院に行けば、Preventive care扱いになるので、医者に会う分の料金($20。去年は$10だった...)だけで済みます。保険によるでしょうけど。</div>
<br />
でもツベルクリン反応陽性出てしまったので、胸部レントゲン必須。夕方あいてたという理由だけで大きめの病院行ってしまって $197.25。これはもっと安いところがたくさんあるはず...<br />
<div class="p1">
<span class="s1">
</span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1">
</span></div>
<div class="p1">
<span class="s1"><b>Biometrics</b></span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1">
</span></div>
<div class="p1">
<span class="s1">サンフランシスコのUSCIS Application Support Centerに</span>朝8時の指定。朝8時オープンて書いてあるのに、7時40分に到着した時にはとっくに開いてて、すでに受付番号30番越え。No cellphone、No food、No drinkと張り紙してあるけど、なんと荷物検査なし! (抜き打ちとかあるかもしれないから、持ってこないに越したことなし)。受付の人みんなやさしい。全部で30分くらいで終了。</div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<br /></div>
<div class="p1">
<b>my USCIS</b></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1"><a href="https://egov.uscis.gov/casestatus/landing.do">https://egov.uscis.gov/casestatus/landing.do</a></span></div>
<div class="p1">
<br /></div>
<div class="p1">
通知機能が素晴らしい。</div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<span class="s1"><b>trackitt</b></span></div>
<div class="p1">
<br /></div>
<div class="p1">
<a href="http://www.trackitt.com/">http://www.trackitt.com/</a></div>
<div class="p1">
<br /></div>
<div class="p1">
ここですべてわかります。</div>
<div class="p1">
<br /></div>
<div class="p1">
<br /></div>
<div class="p1">
<b>英語</b></div>
<div class="p1">
<br /></div>
<div class="p1">
アフィねらい記事はこちら <a href="http://blogger.splhack.org/2014/09/blog-post.html">http://blogger.splhack.org/2014/09/blog-post.html</a></div>
<div class="p1">
<br /></div>
sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-91625338012667288592014-10-03T12:50:00.000+09:002014-10-03T13:38:05.649+09:00カーネル、私の読み方アスキーのハイエンド書籍編集部解散らしいんで、BSDマガジンの記事貼っときますね。
<p>
<script src="https://gist.github.com/splhack/48c5608ba7e1cf6884d6.js"></script>
<p>
買える本はアフィ貼っときますね。しかし、うーん。こんなに絶版になってていいんだろうか。
<p>
<a href="http://www.amazon.co.jp/gp/product/4320026926/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4320026926&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4320026926&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4320026926" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a href="http://www.amazon.co.jp/gp/product/4756116329/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4756116329&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4756116329&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4756116329" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a href="http://www.amazon.co.jp/gp/product/4822284794/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4822284794&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4822284794&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4822284794" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a href="http://www.amazon.co.jp/gp/product/4822284786/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4822284786&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4822284786&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4822284786" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a href="http://www.amazon.co.jp/gp/product/4320025512/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4320025512&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4320025512&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4320025512" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a href="http://www.amazon.co.jp/gp/product/4274064379/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4274064379&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4274064379&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4274064379" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-67942555680957690072014-09-27T08:24:00.000+09:002014-09-27T08:24:17.830+09:00英語金曜日なので、アフィねらいブログを書いてみます。<br />
<br />
英語について。<br />
<br />
常に100%ネイティブの言うことがわかるわけでも、常に100%言いたいことを英語で言えるわけでもないですけど、まがりなりにも現地法人に現地採用されて、仕事では英語だけ、な状況ですんで、ちょっとくらい英語について書いてもいいかなと思ったわけです。というのは裏の理由で、表の理由はアフィねらいですが。<br />
<br />
筆者の英語レベルは、2007年時点のTOEICで675点です。7年前のTOEICの点数かかれても今のレベルを判断しかねますか。判断しかねますね。最近<a href="http://stackoverflow.com/">Stack Overflow</a>でReputation 10,000超えたんですが、Stack Overflowに書かれるような質問と、書くべき答えくらいなら、読み書き不自由ありません。でも、良い感じの(だと勝手に思い込んでいる)言い回しがしたいんで、書きたいフレーズを思い浮かべて、そのフレーズを検索して適切に使われているかどうか確認したりしてます。あとPacktPubの英語で書かれた技術書のテクニカルレビューをやりました。<br />
<br />
読み書きは問題なくても、しゃべるのは、もっとがんばりましょうレベルです。それでも仕事上でのコミュニケーションは、台本ある舞台みたいなもんで、コンテキストも、想定されるセリフも決まってるようなもんなので、なんとかなってしまいます。レストランでの注文とか。<br />
<br />
しかし、それではあらゆる状況には対応できないので、もっと聞き取れて、もっとしゃべれるようになりたいです。<a href="http://www.amazon.co.jp/gp/product/B00AQN09VQ/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00AQN09VQ&linkCode=as2&tag=amazonasso0d9-22">Big Bang Theory</a>を完全に理解するとか。スタートレックなどの知識も必要になりますが。てことで学習するわけですが、ここまでの学習を振り返ると、もっと効率的にできたよなぁ、と思うわけです。<br />
<br />
そこでアフィです。これを使って学習すれば効率的にできたなぁ、と思われるアイテムにアフィリエイトリンクを仕込んで紹介することによって、いくばくかのAmazonポイントが得られるのではないかという淡い期待を抱けるのです。<br />
<br />
<br />
まずは英文法。<br />
<br />
プログラミング言語でも、ひとつひとつの細かいAPIを覚えるより、まず、そのプログラミング言語のSyntaxに注目するかと思います。アルファベットが使われているとか、カッコが多いとか、カッコが多いとか、カッコが多いとかですね。カッコが多いって書きたかっただけです。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/B000DZJKY4/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=B000DZJKY4&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B000DZJKY4&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=B000DZJKY4" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
「<a href="http://www.amazon.co.jp/gp/product/B000DZJKY4/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B000DZJKY4&linkCode=as2&tag=amazonasso0d9-22">3ヶ月トピック英会話 ハートで感じる英文法</a>」NHK教育でやってた番組です。出演者のいとうあいこさんは、アバレンジャーの黄色で、鴻上尚史さんは、最近iOSでも出たドラクエ3の歌を歌っていることで有名ですが、この番組では、いわゆる受験英語で勉強した英文法そのものにも、実はニュアンスが含まれている場合があることに気づけます。過去形にすると丁寧さが出る("Can you" vs "Could you")、とか。聞いたことなければ、このDVD必須です。<br />
<br />
<a href="http://www.amazon.co.jp/s/?_encoding=UTF8&camp=247&creative=7399&keywords=%E5%A4%A7%E8%A5%BF%20%E6%B3%B0%E6%96%97&linkCode=ur2&qid=1411767239&rh=i%3Aaps%2Ck%3A%E5%A4%A7%E8%A5%BF%20%E6%B3%B0%E6%96%97&tag=amazonasso0d9-22" target="_blank">大西泰斗先生の本/DVD</a>なら、どれでもオススメです。どれでもオススメですが、やはりDVDの方がオススメです。アフィポイントが高いのもポイントですが、含まれているニュアンス自体を感じるには文章より映像+音声の方がいいですから。「<a href="http://www.amazon.co.jp/gp/product/B000DZJKY4/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B000DZJKY4&linkCode=as2&tag=amazonasso0d9-22">ハートで感じる英文法</a>」「<a href="http://www.amazon.co.jp/gp/product/B000FEI4YK/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B000FEI4YK&linkCode=as2&tag=amazonasso0d9-22">ハートで感じる英文法 会話編</a>」両方買っちゃいましょう。100歩ゆずっても、「<a href="http://www.amazon.co.jp/gp/product/B000DZJKY4/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B000DZJKY4&linkCode=as2&tag=amazonasso0d9-22">ハートで感じる英文法</a>」はゆずれません。<br />
<br />
<br />
次はシャドーイング。「左を制する者は世界を制す」です。特に脈絡はありませんが。まぁそんな感じです。ネイティブがしゃべるのにかぶせて、そのままの音をだす。それだけです。素材は、アフィにならなくて大変残念ですが、"<a href="http://www.eslpod.com/website/index_new.html">ESL Podcast</a>"がいいです。しゃべってる内容がわからなくても、綴りがわからなくても、まったくかまわず、そっくりそのままの音を出す。自分の声が邪魔にならないようにヘッドホン使っときましょう。ここでノイズキャンセリングヘッドホンでもアフィ紹介すれば、さらにいいはずなのはわかってるのですけど、まぁiPhone付属のイヤホンでいいんじゃないでしょうか。<br />
<br />
どうやって出せばいいかわからない音は、考えて試して、考えて試して、ですね。まぁ答えは「<a href="http://www.amazon.co.jp/gp/product/4872177606/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4872177606&linkCode=as2&tag=amazonasso0d9-22">日本人のための英語発音完全教本</a>」に載ってますけど。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/4872177606/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4872177606&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4872177606&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=4872177606" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
<br />
そしてSkype英会話。シャドーイングで得られた音が通じるかどうか試します。DMM英会話が今年一杯半額なのでいいかもしれません。わたしは<a href="http://langrich.com/">ラングリッチ</a>をずーっと使ってます。<br />
<br />
Skype英会話の重要な点は、いかに先生を楽しませるか笑わせるか、ではないでしょうか。笑われる、じゃなくて、笑わせる。<br />
<br />
あ、Skype英会話には、アフィはる余地がない!<br />
<br />
<br />
アメリカ的なこと。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/0738606766/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=0738606766&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=0738606766&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=0738606766" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
「<a href="http://www.amazon.co.jp/gp/product/0738606766/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=0738606766&linkCode=as2&tag=amazonasso0d9-22">English the American Way: A Fun ESL Guide to Language and Culture in the U.S.</a>」を読むと、どうしてDMV(日本でいうところの陸運局+免許センター)が皆に"好かれて"いるのか、交通違反で捕まった時の具体例、緊急電話のかけかた、などなどがわかります。CDもついているので、シャドーイング素材としても使えます。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/1400006058/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=1400006058&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=1400006058&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=1400006058" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
「<a href="http://www.amazon.co.jp/gp/product/1400006058/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=1400006058&linkCode=as2&tag=amazonasso0d9-22">Fluent English</a>」でも、どうやって交通違反して、どのように捕まるのか、捕まったらどうなるか、わかります。人は如何に自動応答電話でキレるのか、とか。<br />
<br />
このへんは、普通に英語学習しててもわからないところ。<br />
<br />
<br />
英単語。<br />
<br />
ターゲット3000とか見ながら英単語カード作って、地道に覚えました。いや。すみません嘘をつきました。無理。覚えられませんて。単語帳買ったり、英単語記憶アプリ買ったり、語源から覚えてみたり、いろんなのをなんども試しましたが、英単語なんて覚えられません。無理。諦めよう。<br />
<br />
多読がいいと思うんですよね。<br />
<br />
<a href="http://www.amazon.co.jp/gp/product/B00MHFOW78/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=B00MHFOW78&linkCode=as2&tag=amazonasso0d9-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00MHFOW78&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=amazonasso0d9-22" /></a><img alt="" border="0" src="http://ir-jp.amazon-adsystem.com/e/ir?t=amazonasso0d9-22&l=as2&o=9&a=B00MHFOW78" height="1" style="border: none !important; margin: 0px !important;" width="1" /><br />
<br />
多読の方が、単語覚えるより面白くて修行感が少ない。耐えられる。「<a href="http://www.amazon.co.jp/gp/product/B00MHFOW78/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00MHFOW78&linkCode=as2&tag=amazonasso0d9-22">多聴多読マガジン</a>」に、いろいろ載ってます。<br />
<br />
<br />
てな感じにアフィってみました。<br />
<br />sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-37673420228181134082014-08-24T14:25:00.002+09:002014-08-24T14:25:44.690+09:00dispatch_group_enterとdispatch_group_leaveの呼び出し回数が揃ってないとクラッシュ?dispatch_group_enterとdispatch_group_leaveの呼び出し回数が揃ってないとクラッシュするという、えー、それホント?的な質問がstack overflowに上がってました。<br />
<br />
<a href="http://stackoverflow.com/q/25409732/629118">Why is it necessary to call dispatch_group_leave the same number of times as dispatch_group_enter?</a>
<br />
<br />
こんなコードを試してみると、実際クラッシュ (要ARC)。<br />
<br />
<pre>/* test.m */
#include <dispatch/dispatch.h>
int main()
{
{
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
//dispatch_group_leave(group);
}
return 0;
}
</pre>
<br />
dispatch_groupはdispatch_semaphore使ってて、dispatch_semaphoreはsignalとwaitの呼び出し回数が揃ってない状態でdispatch_releaseするのは禁止(実装上そーなってて強制クラッシュされる)。てな感じでした。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-19220084813637112642014-08-24T14:08:00.001+09:002014-08-24T14:08:31.781+09:00Tumblrから帰ってきてみた<a href="https://domains.google.com/about/">Google Domains</a>移転記念に、<a href="http://tumblr.splhack.org/">Tumblr</a>からBloggerに帰ってきてみた。なんかblog投稿とは別にページ作れるようになってたり、いろいろ変わってた。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-7205786921514856162011-07-01T12:26:00.001+09:002011-07-01T12:27:07.567+09:00Tumblrに移転しました<a href="http://tumblr.splhack.org/">http://tumblr.splhack.org/</a>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-25981705083952666192011-05-03T00:06:00.011+09:002011-05-10T23:13:13.000+09:00いまどきの2Dゲームエンジンスクリプト言語でiPhoneやAndroid用ゲームを作れる2Dゲームエンジンをまとめてみる試み。<br /><br /><br /><table border=1 cellspacing=0 cellpadding=2><tbody><tr><th>name </th><th>Corona </th><th>moai </th><th>Imapct </th><th>Kobold2D<br /></th></tr><tr><td>link<br /></td><td><a href="http://www.anscamobile.com/">link</a><br /></td><td><a href="http://getmoai.com/">link</a><br /></td><td><a href="http://impactjs.com/">link</a>/<a href="http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time">iOSImpact</a><br /></td><td><a href="http://www.kobold2d.org/">link</a><br /></td></tr><tr><td>desc<br /></td><td>Corona is the world’s most advanced mobile development platform.<br /></td><td>The mobile platform for pro game developers.<br /></td><td>Impact is a JavaScript Game Engine that allows you to develop HTML5 Games in no time.<br /></td><td>Kobold2D™ is the expert's choice for Cocos2D game development.<br /></td></tr><tr><td>license </td><td>proprietary </td><td>OpenSource<br />(CPAL) </td><td>proprietary </td><td>OpenSource<br />(MIT License)<br /></td></tr><tr><td>language </td><td>Lua </td><td>Lua </td><td>Javascript </td><td>Lua<br /></td></tr><tr><td>native </td><td>?(C++) </td><td>C++ </td><td>?(Objective-C) </td><td>Objective-C<br /></td></tr><tr><td>iOS </td><td>available </td><td>available </td><td>available </td><td>available<br /></td></tr><tr><td>Android </td><td>available </td><td>available </td><td>not yet </td><td>-<br /></td></tr><tr><td>price </td><td>$199/year </td><td>Free </td><td>$99 </td><td>Free<br /></td></tr><tr><td>release </td><td>released </td><td>private beta </td><td>beta </td><td>2011 summer<br /></td></tr></tbody></table>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-24696794506182161022011-03-30T15:56:00.001+09:002011-04-01T14:42:28.596+09:00MacVim-KaoriYa 20110330MacVim-KaoriYa 20110330版をリリースしました。<br /><br /><s>今回はSparkleによる自動更新を設定していません。</s>(2011/04/01 Sparkle情報を更新しました)<br /><br /><a href="http://code.google.com/p/macvim-kaoriya/">http://code.google.com/p/macvim-kaoriya/</a><br /><br /><a href="http://macvim-kaoriya.googlecode.com/files/macvim-kaoriya-20110330.dmg">http://macvim-kaoriya.googlecode.com/files/macvim-kaoriya-20110330.dmg</a><br /><br /><span style="font-weight:bold;">Xcode 4でビルドしています。</span><br /><br />Mac OS X 10.5 Leopardを使用されている方、Intel、PowerPC 問わず、動作確認にご協力いただけますと幸いです。<br /><br />Vim 7.3.146、MacVim Snapshot 57、香り屋パッチ 20110323ベースです。<br /><br /><br />(2011/04/01 追記)<br />実験的レンダラを使用していない場合、半透明設定(set transparency)が効かなくなります。半透明設定を使用している場合は、「環境設定」「詳細」の「実験的レンダラを使用する」「インラインインプットメソッドを使用する」の両方をチェックしてみてくださいませ。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-72374244723901629452011-03-25T22:03:00.002+09:002011-03-25T22:34:44.012+09:00Xcode4でPowerPC<pre><br />$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin<br />$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin<br /></pre><br /><br />Xcode 4.0.1でも治ってませんでした。バグレポート忘れてたんですが。<br /><br />これやっとくと、MacPortsでLeopard用のuniversal buildも可能になります。<br /><br /><pre><br />$ sudo port install ncurses +universal macosx_deployment_target=10.5 configure.cc=/usr/bin/gcc-4.2 configure.cxx=/usr/bin/g++-4.2<br /></pre>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-83156632556536469912011-03-25T21:33:00.003+09:002011-03-25T21:40:47.155+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その8<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="top"><div style="border:0px solid;margin:0px;padding:6px 0px;width:320px;text-align:center;float:left"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d300x300&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d80x80" alt="iOS4プログラミングブック" border="0" style="margin:0px;padding:0px"></a><p style="font-size:12px;line-height:1.4em;text-align:center;margin:0px;padding:2px 6px"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank">iOS4プログラミングブック</a><br></p></div></td></tr></table><br /><br />本屋にも並んでます『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<br /><br />補遺その8、というか、間違いのお知らせです。ごめんなさい。<br /><br />iOS 4プログラミングブック 第5章<br />190ページ 図5-2-5「ヒープからヒープへのコピー」の先頭行に間違いがあります。<br /><pre><br />(誤) block_t block3_on_heap = Block_copy(block_on_stack);<br />(正) block_t block3_on_heap = Block_copy(block_on_heap);<br /></pre><br /><br />@eyesrobe様に発見していただきました。ありがとうございます。<br /><br /><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&bc1=FFFFFF&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=amazonasso0d9-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4844329766" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-38423761442217707542011-03-03T16:24:00.003+09:002011-03-03T16:52:33.006+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その7<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="top"><div style="border:0px solid;margin:0px;padding:6px 0px;width:320px;text-align:center;float:left"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d300x300&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d80x80" alt="iOS4プログラミングブック" border="0" style="margin:0px;padding:0px"></a><p style="font-size:12px;line-height:1.4em;text-align:center;margin:0px;padding:2px 6px"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank">iOS4プログラミングブック</a><br></p></div></td></tr></table><br /><br />そろそろ浸透して話題にも上がらなくなってきた(?)『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<br /><br />補遺その7では、BlocksのObjective-C支援機能に切り込んでみます。<br /><br />191ページに書いてあるとおり、Objective-Cのオブジェクトは、Block_copy時に自動的にretainされます。<br /><br /><pre name="code" class="c"><br />NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];<br /><br />NSString *string = [NSString stringWithFormat:@"score = %d", score];<br /><br />void (^block)() = Block_copy(^{<br /><br /> NSLog(@"%@", string);<br /><br />});<br /><br />[pool drain];<br /><br />/* stringはblockからretainされてるから、まだ生きてる */<br /></pre><br /><br /><br />これどういう仕組みなんでしょう?<br /><br /><br />Objective-Cのオブジェクトは、みなNSObjectの子供。<br /><br />NSObjectは、C言語としては、<code>__attribute__((NSObject))</code>アトリビュートの付いた変数。<br /><br /><br />てことで、Block_copy時に__attribute__((NSObject))のついた変数をretainして、Block_release時にreleaseするコードを、コンパイラは簡単に生成できるわけですね。<br /><br /><pre><br /><a href="http://clang.llvm.org/docs/Block-ABI-Apple.txt">http://clang.llvm.org/docs/Block-ABI-Apple.txt</a><br />2.2.1 Importing __attribute__((NSObject)) variables.<br /></pre><br /><br /><br />しかし、この自動retainする機能。便利なのはいいのですが、実は気づかないうちに、循環参照してdeallocされない状況に陥ることもある諸刃の剣。<br /><br />Blockが、Blockをretainしているクラスのselfを自動retainしちゃう、という落とし穴。<br /><br />詳しくは『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』の193ページに!<br /><br /><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&bc1=FFFFFF&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=amazonasso0d9-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4844329766" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-26943629037079726122011-02-08T22:20:00.008+09:002011-02-09T06:47:46.759+09:00OpenGL ES 開発リソースまとめGPU作ってるとこのOpenGL ES 1.1/2.0開発リソースが、実は大変充実しています。まとめてみました。<br /><dl><br /><dt>■POWERVR Insider <a href="http://www.imgtec.com/powervr/insider/powervr-insider.asp">http://www.imgtec.com/powervr/insider/powervr-insider.asp</a><br /><br /><dd>□主な使用機種: iPhone 3G(MBX),DROID(SGX530),iPhone 4/iPad(SGX535),Nexus S/Galaxy S(SGX540),NGP(SGX543),...<br /><br /><dd>・POWERVR Insider SDK。COLLADAから変換したPOD形式を使って3Dモデルの描画、アニメーション可能。ソースコードのライセンスは非常にゆるい(<a href="http://www.imgtec.com/forum/forum_posts.asp?TID=138">forumのSDK Code Licenseスレッド参照</a>)。<br /><br /><dd>・PowerVR圧縮テクスチャPVR用コンバータ PVRTexToolなどのツールも充実。<br /><br /><dt>■ADRENO GRAPHICS <a href="http://developer.qualcomm.com/dev/gpu">http://developer.qualcomm.com/dev/gpu</a><br /><br /><dd>□主な使用機種: Xperia,Nexus One,Desire,IS03,Regza,Windows Phone 7...<br /><br /><dd>・Adreno™ Profilerが凄い。rootとったNexus OneなどをUSBケーブルで繋ぐだけで、リアルタイムにGPUの負荷やテクスチャ、描画結果を取得可能。<br /><br /><dd>・Adreno向けに最適化されたOpenGL ES 2.0 shader source codeあり。でもOpenGL ES 2.0であればどこででも。<br /><br /><dt>■TEGRA DEVELOPER ZONE <a href="http://tegradeveloper.nvidia.com/tegra/">http://tegradeveloper.nvidia.com/tegra/</a><br /><br /><dd>□主な使用機種: dynabook AZ,各種タブレット,...<br /><br /><dd>・Android NDK用のサンプルコードはApache License 2.0。JNI経由で音を鳴らす方法なども含んでいるので、NDKで開発する場合は必見。<br /><br /><dd>・EclipseでNDKをデバッグするためのNVIDIA Debug Manager for debugging Android NDK applications in Eclipse とかあったりする。<br /><br /><dt>■Mali Developer Center <a href="http://www.malideveloper.com/index.php">http://www.malideveloper.com/index.php</a><br /><br /><dd>□主な使用機種: コンシューマ製品があるかどうか不明<br /><br /><dd>・Mali GPU Shader Development Studio。IDE的に結果をみながらshader開発が可能。<br /></dl><br /><br />また各サイトでWindowsやLinux用のOpenGL ES 1.1/2.0 emulator libraryが配布されてますので、iPhoneやAndroid向けに作ったOpenGL ES 1.1/2.0用のソースコードを、WindowsやLinux用にビルドして実行することが可能です。<br /><br />各GPUごとの開発リソースは大変特色が出ているのですが、OpenGL ES 1.1/2.0経由で使うことになりますので、profilerなど専用なもの以外は、どれででも使えてしまいます。便利に使っちゃいましょう。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-43514702966761168452011-02-03T10:39:00.006+09:002011-02-03T12:02:59.812+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その6<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="top"><div style="border:0px solid;margin:0px;padding:6px 0px;width:320px;text-align:center;float:left"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d300x300&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d80x80" alt="iOS4プログラミングブック" border="0" style="margin:0px;padding:0px"></a><p style="font-size:12px;line-height:1.4em;text-align:center;margin:0px;padding:2px 6px"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank">iOS4プログラミングブック</a><br></p></div></td></tr></table><br /><br />楽天BOOKSで一時売り切れになるも、再度入荷中の『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<a href="http://amzn.to/gyDsy7">Amazon</a>では相変わらず在庫切れ...<br /><br />補遺その6では、ちょっと趣向を変えてサンプルコードを説明してみます。<br /><br />第5章マルチスレッドのサンプルコードは、実はTumblr Image Viewerになっていたり、<a href="http://www.cocos2d-iphone.org/">cocos2d for iPhone</a>を使っていたりする、実戦さながらのサンプルコードとなっております。<br /><br />今回はcocos2dでの非同期テクスチャ読み込みについて掘り下げてみます。<br /><br /><br />cocos2dの非同期テクスチャ読み込みAPIは、読み込み終了時にtargetのselectorを呼ぶコードになっています。これBlocksだと楽になるような気がしませんか? Blockを受け取って呼び出すClassを作ってみます。<br /><br />■TextureCallback.h<br /><pre name="code" class="c"><br />/*<br /> * 「5-1 Blocksの概要」(178ページ)<br /> * TextureCallbackクラスにより、<br /> * cocos2dのイメージ非同期読み込み終了コールバックを、<br /> * Blocksに結びつけることにより、より簡単にコールバックを記述できます。<br /> */<br /><br />#import "cocos2d.h"<br /><br />/*<br /> * 「5-2-2 値としてのBlock」(184ページ) <br /> * typedefを使用したBlocksの宣言。<br /> */<br />typedef void (^textureCallbackBlock_t)(CCTexture2D *texture);<br /><br />@interface TextureCallback : NSObject<br />{<br /> textureCallbackBlock_t block_;<br />}<br /><br />/*<br /> * イメージ非同期読み込み終了コールバックで実行されるBlockを指定。<br /> */<br />+ (id)callbackWithBlock:(textureCallbackBlock_t)block;<br />- (id)initWithBlock:(textureCallbackBlock_t)block;<br />- (void)callback:(CCTexture2D *)texture;<br /><br />@end<br /></pre><br /><br />■TextureCallback.m<br /><pre name="code" class="c"><br />#import "TextureCallback.h"<br /><br />@implementation TextureCallback<br /><br />+ (id)callbackWithBlock:(textureCallbackBlock_t)block<br />{<br /> return [[[self alloc] initWithBlock:block] autorelease];<br />}<br /><br />- (id)initWithBlock:(textureCallbackBlock_t)block<br />{<br /> if ((self=[super init])) {<br /><br /> /*<br /> * 「5-2-4 Block_copy」(188ページ)<br /> * 渡されたBlockをretainするためにObjective-Cのcopyを使用。<br /> */<br /> block_ = [block copy];<br /> }<br /><br /> return self;<br />}<br /><br />- (void)dealloc<br />{<br /><br /> /*<br /> * 「5-2-4 Block_copy」(188ページ)<br /> * retainしたBlockをreleaseするためにObjective-Cのreleaseを使用。<br /> */<br /> [block_ release];<br /> [super dealloc];<br />}<br /><br />- (void)callback:(CCTexture2D *)texture<br />{<br /> /*<br /> * 「5-2-2 値としてのBlock」(184ページ)<br /> * cocos2dのイメージ非同期読み込み終了時Blockを実行。<br /> */<br /> block_(texture);<br />}<br /><br />@end<br /></pre><br /><br />て感じで。使うときは<br /><br /><pre name="code" class="c"><br />#import "TextureCallback.h"<br /><br /> /*<br /> * 非同期イメージ読み込み終了時に<br /> * 実行されるBlockを指定。<br /> */<br /> TextureCallback *textureCallback =<br /> [TextureCallback callbackWithBlock:<br /> ^(CCTexture2D *texture) {<br /><br /> [self addTexture:texture index:index];<br /><br /> }];<br /><br /> /*<br /> * cocos2dの非同期イメージ読み込み<br /> * (要メインスレッド(Main Queue))<br /> */<br /> [[CCTextureCache sharedTextureCache]<br /> addImageAsync:path target:textureCallback<br /> selector:@selector(callback:)];<br /></pre><br /><br /><br />さらに、<br /><br /><pre name="code" class="c"><br />+ (id)addImageAsyncWithBlock:(NSString *)path block:(textureCallbackBlock_t)block<br />{<br /> id textureCallback = [[[self alloc] initWithBlock:block] autorelease];<br /><br /> [[CCTextureCache sharedTextureCache]<br /> addImageAsync:path target:textureCallback<br /> selector:@selector(callback:)];<br /><br /> return textureCallback;<br />}<br /></pre><br /><br />こんな感じのクラスメソッドにすれば、<br /><br /><pre name="code" class="c"><br />#import "TextureCallback.h"<br /><br /> /*<br /> * 非同期イメージ読み込み終了時に<br /> * 実行されるBlockを指定。<br /> */<br /> [TextureCallback addImageAsyncWithBlock:path block:^(CCTexture2D *texture) {<br /><br /> [self addTexture:texture index:index];<br /><br /> }];<br /></pre><br /><br />あらすっきり。<br /><br /><br />CCTextureCacheは渡ってきたtextureCallbackをコールバック終了までretainするので、コールバック終了までちゃんと生存。textureCallbackで持つことになるblockもtextureCallback生存中はretain(copy)されるので、メモリ管理も簡単、安心。<br /><br /><br />iOS 4プログラミングブックのサンプルコードは、<a href="http://www.impressjapan.jp/books/2976">http://www.impressjapan.jp/books/2976</a>のダウンロードよりどうぞー<br /><br /><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&bc1=FFFFFF&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=amazonasso0d9-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4844329766" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-87404891199497741802011-02-02T11:19:00.004+09:002011-03-30T15:58:49.623+09:00MacVim-KaoriYa 20110202MacVim-KaoriYa 20110202版をリリースしました。<br /><br /><a href="http://code.google.com/p/macvim-kaoriya/">http://code.google.com/p/macvim-kaoriya/</a><br /><br /><a href="http://macvim-kaoriya.googlecode.com/files/macvim-kaoriya-20110202.dmg">http://macvim-kaoriya.googlecode.com/files/macvim-kaoriya-20110202.dmg</a>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-27004412038648804152011-01-31T14:26:00.009+09:002011-03-25T21:42:01.464+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 まとめ<table border="0" cellpadding="0" cellspacing="0"><tr><td valign="top"><div style="border:0px solid;margin:0px;padding:6px 0px;width:320px;text-align:center;float:left"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d300x300&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8443%2f84432976.jpg%3f_ex%3d80x80" alt="iOS4プログラミングブック" border="0" style="margin:0px;padding:0px"></a><p style="font-size:12px;line-height:1.4em;text-align:center;margin:0px;padding:2px 6px"><a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f" target="_blank">iOS4プログラミングブック</a><br></p></div></td></tr></table><br /><br />2011年1月27日発売の『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。このうち<br /><dl><br /><dd>■第5章 マルチスレッド - Blocks、Grand Central Dispatch の詳解。57ページ。<br /><dd>■第10章 ユニバーサル対応 - ユニバーサルアプリケーションについて。15ページ。<br /></dl><br />を書かせていただきました。<br /><br />この「第5章 マルチスレッド」にて、ちょっとAdvanced過ぎるかも、と思った内容を補遺として連載しています。<br /><br /><dl><br /><dt>「<b>__block修飾子</b>」について<br /><dd>■<a href="http://blogger.splhack.org/2011/01/ios-4-5-1.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その1</a><br /><dd>■<a href="http://blogger.splhack.org/2011/01/ios-4-5-2.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その2</a><br /><dd>■<a href="http://blogger.splhack.org/2011/01/ios-4-5-3.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その3</a><br /><dd>■<a href="http://blogger.splhack.org/2011/01/ios-4-5-4.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その4</a><br /><dd>■<a href="http://blogger.splhack.org/2011/01/ios-4-5-5.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その5</a><br /></dl><br /><br /><dl><br /><dt>「<b>サンプルコード</b>」について<br /><dd>■<a href="http://blogger.splhack.org/2011/02/ios-4-5-6.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その6</a><br /></dl><br /><br /><dl><br /><dt>「<b>Blocks</b>」について<br /><dd>■<a href="http://blogger.splhack.org/2011/03/ios-4-5-7.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その7</a><br /></dl><br /><br /><dl><br /><dt><b>本の間違いについて</b><br /><dd>■<a href="http://blogger.splhack.org/2011/03/ios-4-5-8.html">『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その8</a><br /></dl><br /><br /><br /><br /><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_top&bc1=FFFFFF&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=amazonasso0d9-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4844329766" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-22638719560353105472011-01-31T14:22:00.006+09:002011-02-03T10:24:36.468+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その5そろそろ皆様のお手元にもあるのではないかと思ったりしております。『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<br /><br />「<b>__block変数の書き換えは、スレッドセーフではない</b>」<br /><br />さて、マルチスレッド下で安全に__block変数を書き換える方法とは。<br /><br />そもそもマルチスレッドにするためにGCDのGlobal Queueを使ってるわけですから、やはりここはDispatch Semaphoreを使っておきましょう。詳しくは<a href="http://a.r10.to/hB0tqf">ワシの226ページ</a>に書いてあーる。<br /><br /><pre name="code" class="c" ><br />#import <dispatch/dispatch.h><br />#import <stdio.h><br /><br />int main()<br />{<br /> __block int total = 0;<br /><br /> dispatch_semaphore_t sema = dispatch_semaphore_create(1);<br /> dispatch_queue_t queue =<br /> dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);<br /> dispatch_apply(10000, queue, ^(size_t index) {<br /><br /> dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);<br /><br /> ++total;<br /><br /> dispatch_semaphore_signal(sema);<br /><br /> });<br /> dispatch_release(sema);<br /><br /> printf("total=%d\n", total);<br /><br /> return 0;<br />}<br /></pre><br /><br />ふつうにセマフォです。<br /><br /><br />あと、今回の場合、Atomic operationsが使えます。<br /><br /><a href="http://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/atomic.3.html">http://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/atomic.3.html</a><br /><br /><pre name="code" class="c" ><br />#import <libkern/OSAtomic.h><br /></pre><br /><br /><pre name="code" class="c" ><br /> dispatch_apply(10000, queue, ^(size_t index) {<br /><br /> OSAtomicIncrement32(&total);<br /><br /> });<br /></pre><br /><br />Barrierあり/なしの使い分けは、<a href="http://stackoverflow.com/questions/2436513/macosx-osatomic-vs-osatomicbarrier">http://stackoverflow.com/questions/2436513/macosx-osatomic-vs-osatomicbarrier</a>にありました。<br /><br /><br />もしくはGCC組み込みAtomic関数(<a href="http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html">http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Atomic-Builtins.html</a>)を使うのも手です。<br /><br /><pre name="code" class="c" ><br /> dispatch_apply(10000, queue, ^(size_t index) {<br /><br /> __sync_fetch_and_add(&total, 1);<br /><br /> });<br /></pre><br /><br />clangでも使えます。Mac OS X、iOS以外の環境でも使える点がメリットでしょうか。また上記のとおり、OSAtomicに対して若干汎用的すぎるところがデメリットと言えるかと(++がないとか)。移植性を取るかどうか、てことですね。GCC拡張使って移植性どうこう言うのもあれだとは思いますが。<br /><br />てことで、__block修飾子に関しては、以上で終りです。補遺はまだ続くかもしれません。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-66955097352190271242011-01-28T09:36:00.005+09:002011-02-03T10:24:58.463+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その4そろそろ皆様のお手元にもあるのではないかと思ったりする『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<br /><br />「しかし、第5章『マルチスレッド』の補遺の割に、ちっともマルチスレッドじゃない」<br /><br />とお嘆きの読者様。朗報です。やっとマルチスレッドの話です。<br /><br /><br /><font color=red><b>__block変数への書き込みってスレッドセーフ??</b></font><br /><br /><br />GCDのdispatch_applyで、Global QueueにBlock突っ込むと、それはもう簡単に複数スレッドから同時に__block変数を書き換えることができます。<br /><br /><br />... あ、もしかして、GCDことGrand Central Dispatch、よくご存知でなかったりしますでしょうか? そういう話でしたら、それはもう詳しく説明している本がありますので、この場を借りてご紹介できればな、と思います。<br /><br /><dl><br /><dt><br />『<a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f">iOS 4プログラミングブック</a>』<br /><dd>■5-3 Grand Central Dispatchの概要<br /><dd>■5-4 Grand Central Dispatchの解説<br /></dl><br /><br /><br />はい、宣伝させていただいてありがとうございます。dispatch_applyでガンガン__blockを書き換えるソースを書いてみます。<br /><br /><pre name="code" class="c" ><br />#import <dispatch/dispatch.h><br />#import <stdio.h><br /><br />int main()<br />{<br /> __block int total = 0;<br /><br /> dispatch_queue_t queue =<br /> dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);<br /> dispatch_apply(10000, queue, ^(size_t index) {<br /><br /> ++total;<br /><br /> });<br /><br /> printf("total=%d\n", total);<br /><br /> return 0;<br />}<br /></pre><br /><br />実行すれば<br /><br /><pre><br />total=10000<br /></pre><br /><br />と出るはずです。実行してみましょう!<br /><br /><pre><br />total=6749<br /></pre><br /><br />あれ。あ、ちなみにCore 2 DuoなMacBook Proで実行してますよ。もう一度。<br /><br /><pre><br />total=10000<br /></pre><br /><br />期待通り。念のためもう一回。<br /><br /><pre><br />total=8664<br /></pre><br /><br />うーん。ということで、すでにお気づきのことと思いますが、<br /><br /><font color=red><b>__block変数はスレッドセーフではありません</b></font><br /><br /><br /><a href="http://blogger.splhack.org/2011/01/ios-4-5-1.html">その1</a>から読んでくださっている読者の方には当然の結果かとおもいます。clang -rewrite-objcで見たとおり、<code>++(total.__forwarding->total);</code>になってるだけですから、スレッドセーフなわけがないのです。<br /><br />マルチスレッド下で、__block変数を安全に更新する方法とははたして!? つづきます。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-15049463680969560112011-01-27T10:43:00.003+09:002011-02-03T10:25:36.217+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その3いよいよ本日、2011年1月27日発売!の『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<br /><br /><a href="http://blogger.splhack.org/2011/01/ios-4-5-1.html">その1</a>、<a href="http://blogger.splhack.org/2011/01/ios-4-5-2.html">その2</a>と「__block修飾子」について深追いしてきましたが、まだ潜ってみます。ぶくぶくぶく。<br /><br /><br />潜る前に、まずは地図を見ておきましょう。<br /><br />179ページにあるとおり、Blocksのことが知りたかったらLLVMのドキュメントを参照します。<br /><br /><dl><br /><dt>■<a href="http://clang.llvm.org/docs/BlockLanguageSpec.txt">http://clang.llvm.org/docs/BlockLanguageSpec.txt</a><br /><dt>■<a href="http://clang.llvm.org/docs/Block-ABI-Apple.txt">http://clang.llvm.org/docs/Block-ABI-Apple.txt</a><br /></dl><br /><br />... しかしまぁ、言うは易く行うは難し。英語読むくらいならソースコード読むほうが楽ですね。地図なしで。<br /><br /><br />てことで、ソースを読んでみます。ぶくぶくぶく。<br /><br />Block_copyとかBlock_releaseとかは、C言語のランタイムライブラリの一部としてLLVMのソースツリーに入ってます。<br /><br /><a href="https://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/Block_private.h">https://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/Block_private.h</a><br /><a href="https://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.c">https://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.c</a><br /><br />このへん。<br /><br /><a href="http://blogger.splhack.org/2011/01/ios-4-5-2.html">その2</a>で出てきた<code>flags: 0x1000002</code>のbit定義がありますね。<br /><br /><pre name="code" class="c" ><br />enum {<br /> BLOCK_REFCOUNT_MASK = (0xffff),<br /> BLOCK_NEEDS_FREE = (1 << 24),<br /> BLOCK_HAS_COPY_DISPOSE = (1 << 25),<br /> BLOCK_HAS_CTOR = (1 << 26), /* Helpers have C++ code. */<br /> BLOCK_IS_GC = (1 << 27),<br /> BLOCK_IS_GLOBAL = (1 << 28),<br /> BLOCK_HAS_DESCRIPTOR = (1 << 29)<br />};<br /></pre><br /><br />BLOCK_REFCOUNT_MASK = 0xffff... 65536回Block_copyするとやばそうですね!<br /><br /><br />それはさておきBlock_copyすると、__block変数は_Block_byref_assign_copy()でcopyされます。<br /><br /><pre name="code" class="c" ><br />/*<br /> * Runtime entry points for maintaining the sharing knowledge of byref data blocks.<br /> *<br /> * A closure has been copied and its fixup routine is asking us to fix up the reference to the shared byref data<br /> * Closures that aren't copied must still work, so everyone always accesses variables after dereferencing the forwarding ptr.<br /> * We ask if the byref pointer that we know about has already been copied to the heap, and if so, increment it.<br /> * Otherwise we need to copy it and update the stack forwarding pointer<br /> * XXX We need to account for weak/nonretained read-write barriers.<br /> */<br /><br />static void _Block_byref_assign_copy(void *dest, const void *arg, const int flags) {<br /></pre><br /><br /><br /><code>forwarding</code>ポインタに代入しているところを見ると<br /><br /><pre name="code" class="c" ><br /> copy->forwarding = copy; // patch heap copy to point to itself (skip write-barrier)<br /> src->forwarding = copy; // patch stack to point to heap copy<br /></pre><br /><br />heap上構造体のforwardingも、stack上構造体のforwardingも、heap上の構造体を示すように書き換えられてます。安心して__block変数を操作できますね。<br /><br /><br /><a href="http://blogger.splhack.org/2011/01/ios-4-5-2.html">その2</a>で使った秘密の_Block_byref_dump()もありますよ。<br /><br /><br />ちなみに、Mac OS X 10.5/iOS 3.1.3以前でもBlocksを使えるようにする<a href="http://code.google.com/p/plblocks/">plblocks</a>てのがあります。<br /><br /><a href="http://code.google.com/p/plblocks/source/browse/Runtime/trunk/Source/Runtime/Block.m">http://code.google.com/p/plblocks/source/browse/Runtime/trunk/Source/Runtime/Block.m</a><br /><br />たとえばiOS SDK 4.2に入っているtoolchain(gcc, llvm-gcc, clang)は、Block構文をコンパイルすることが可能です。ということで実は、Deployment Targetを3.1.3にしても(Deployment Targetについては、<a href="http://hb.afl.rakuten.co.jp/hgc/0ce821a8.f59e4619.0ce821a9.a6958d40/?pc=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f6934971%2f%3fscid%3daf_ich_link_tbl&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f14327076%2f">iOS 4プログラミングブック 第10章ユニバーサル対応</a>で詳しく説明してますよ!)、stack上でだけならBlocksを使うことができます。ただしBlocks用ランタイムがないため、Block_copy/Block_releaseなどはできません。そこで、plblocks runtimeのヘッダをインクルードして、plblocks runtimeのソースとともにコンパイルすると、plblocksのBlock_copy/Block_release実装を使えるようになるわけです。<br /><br />ついでにlibdispatchを使えば、iOS3.1.3とかでもGrand Central Dispatchまで使えるわけですが、それはまた別の講釈で...<br /><br />__block修飾子については語りつくした感がありますが、まだつづくよsakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.comtag:blogger.com,1999:blog-23040416.post-80085694200476304542011-01-26T13:12:00.006+09:002011-02-03T10:26:28.340+09:00『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その2『iOS 4プログラミングブック』 第5章マルチスレッド 補遺 その2 <br /><br />2011年1月27日発売でも、すでに書店に並びつつある『<a href="http://amzn.to/gyDsy7">iOS 4プログラミングブック</a>』。<br /><br />今回も引き続き第5章マルチスレッドの補遺として、「__block修飾子」を深追いしてみます。<br /><br /><a href="http://blogger.splhack.org/2011/01/ios-4-5-1.html">その1</a>で書いたとおり、__block変数の実態は「total.__forwarding->total」て感じです。Block生成直後はstackに居るので、この<code>__forwarding</code>ポインタは自分が含まれる構造体を示し、Block_copyでstackからheapに移動されると(189ページ参照)、<code>__forwarding</code>ポインタが移動後のアドレスを示すわけですね。「total.__forwarding->total」は、stackにあるか、heapにあるか、気にせずにアクセスできるわけです。<br /><br /><br />確かめてみましょう!<br /><br /><pre name="code" class="c" ><br />#import <Foundation/Foundation.h><br />#import <stdio.h><br /><br />extern const char *_Block_byref_dump(void *);<br /><br />void dump(int line, int *p)<br />{<br /> p -= 4;<br /> printf("\ndump line:%d\n", line);<br /> puts(_Block_byref_dump(p));<br />}<br /><br />int *test()<br />{<br /> __block int total = 11;<br /><br /> dump(__LINE__, &total);<br /><br /> void (^block_on_stack)() = ^{<br /><br /> ++total;<br /><br /> dump(__LINE__, &total);<br /> };<br /><br /> block_on_stack();<br /><br /> printf("\n___ Block_copy ___\n");<br /> void (^block_on_heap)() = Block_copy(block_on_stack);<br /><br /> dump(__LINE__, &total);<br /><br /> block_on_stack();<br /><br /> block_on_heap();<br /><br /> printf("\n___ Block_release ___\n");<br /> Block_release(block_on_heap);<br /><br /> dump(__LINE__, &total);<br /><br /> block_on_stack();<br /><br /> return &total;<br />}<br /><br />int main()<br />{<br /> dump(__LINE__, test());<br />}<br /></pre><br /><br />__block変数をダンプするための秘密の関数 _Block_byref_dump を使って、それぞれの状況で__block変数の状態を表示してみます。このソースコードに埋めてみましょう。<br /><br /><pre><br />int *test()<br />{<br /> __block int total = 11;<br /><br /> dump(__LINE__, &total);<br /> <b><br /> dump line:17<br /> byref data block 0xbffffa70 contents:<br /> forwarding: 0xbffffa70 <font color=red>← stackに生成されてる</font><br /> flags: 0x0<br /> size: 20<br /> </b><br /><br /> void (^block_on_stack)() = ^{<br /><br /> ++total;<br /><br /> dump(__LINE__, &total);<br /> };<br /><br /> block_on_stack();<br /> <b><br /> dump line:23<br /> byref data block 0xbffffa70 contents:<br /> forwarding: 0xbffffa70 <font color=red>← stack上のBlockからstack上の__block変数を使用</font><br /> flags: 0x0<br /> size: 20<br /> </b><br /><br /> printf("\n___ Block_copy ___\n");<br /> void (^block_on_heap)() = Block_copy(block_on_stack);<br /><br /> dump(__LINE__, &total);<br /> <b><br /> dump line:31<br /> byref data block 0x100150 contents:<br /> forwarding: 0x100150 <font color=red>← heapにコピーされた!</font><br /> flags: 0x1000002 <font color=red>← 要Block_releaseフラグと、参照カウンタ(2)</font><br /> size: 20<br /> </b><br /><br /> block_on_stack();<br /> <b><br /> dump line:23<br /> byref data block 0x100150 contents:<br /> forwarding: 0x100150 <font color=red>← stack上のBlockからheap上の__block変数を参照している</font><br /> flags: 0x1000002<br /> size: 20<br /> </b><br /><br /> block_on_heap();<br /> <b><br /> dump line:23<br /> byref data block 0x100150 contents:<br /> forwarding: 0x100150 <font color=red>← heap上のBlockからheap上の__block変数を使用している</font><br /> flags: 0x1000002<br /> size: 20<br /> </b><br /><br /><br /> printf("\n___ Block_release ___\n");<br /> Block_release(block_on_heap);<br /><br /> dump(__LINE__, &total);<br /> <b><br /> dump line:40<br /> byref data block 0x100150 contents:<br /> forwarding: 0x100150<br /> flags: 0x1000001 <font color=red>← Block_releaseしたので参照カウンタが減少(2→1)</font><br /> size: 20<br /> </b><br /><br /> block_on_stack();<br /> <b><br /> dump line:23<br /> byref data block 0x100150 contents:<br /> forwarding: 0x100150 <font color=red>← stack上のBlockからheap上の__block変数を使用。まだ参照カウンタが1なのでheap上に残存</font><br /> flags: 0x1000001<br /> size: 20<br /> </b><br /><br /> return &total;<br />}<br /><br />int main()<br />{<br /> dump(__LINE__, test());<br /> <b><br /> dump line:49<br /> byref data block 0x100150 contents:<br /> forwarding: 0x100150<br /> flags: 0x1000000 <font color=red>← 参照カウンタが0なのでheap上に残ってないはず!</font><br /> size: 20<br /> </b><br />}<br /><br />(Mac OS X 10.6、clang -m32で確認)<br /></pre><br /><br />てことで、Block_copy使うと、本当にstackからheapに移動してることがわかりました。<br /><br />ついでに、Block_releaseしても、heapからstackに戻すわけじゃなさそうなこともわかりました。<br /><br />あ、dump関数が、「total.__forwarding->total」からのアクセスなので、Block_copy以降全部heapに存在しているように見えますが、stack上のtotal.__forwardingがちゃんとheap上のものをさしているので、stack上のtotal構造体を触っても平気です。<br /><br />もはや誰得の情報なのか混迷を極めて来ましたが、つづきます。sakamotohttp://www.blogger.com/profile/09541707424326009982noreply@blogger.com