Month: February 2016

便利にMac:HotspotShieldが接続できない。

今朝、HotspotShieldを3.40にアップデートしたら接続できなくなりました。

デフォルトのブラウザをSafariからFirefoxにしたり、uBlockを停止したり、いろいろやったのですが、つながりません。

ネットワーク関係は再起動する。ダメなら、電源を切ってから起動する。これもやってみました。それでもダメです。

Troubleshootingを読んでもよくわかりません。これは困ったぞと思い、ヘルプデスクに問い合わせて使えなかった分の期限延長をしてもらうしかないかな、と考え込んでしまいました。

それでもヒントとしてアンチウイルスとの整合というのがあったので、念のためESETを調べました。アプリをフィルタする箇所がすぐに見つからなかったので、ためしにNetwork trafic filteringをoffにしたら、うまく接続できました。Screenshot 2016-02-28 09.47.20

そのあと、Network trafic filteringをonにし、フィルタリング対象をhomeにしました。sign inできたので、これでOK。

Screenshot 2016-02-28 10.08.47

 

徒然:英語?自分はどうなんだ?

それで、自分の英語力はどうなのですか。

確かにいい質問です。自分のことは棚に上げられません。

結論から言うと、完璧です。読み書き、話す、聞く、全部できます。しかし、本当のことを言えば、残念ながら「完璧にいい加減に終わってしまった」というのが結論です。

15年くらい英語が必須の仕事をしました。シリコンバレーの企業と東海岸の大手企業が相手先でした。新商品リリースをする仕事では、、ソフトウェア/ハードウェアの設計・開発、生産、品質管理、パーツ供給、販売、サポート、教育、プロモーション等、新商品にまつわるすべての工程をマネージして、所定の売上高と利益を達成することが求められます。やる気だけでなく、高い能力があるに越したことはありません。あちこちで英語は必須でした。

もちろん、自分にはそうしたすべてをカバーできる専門的知識がないので、ほかの専門家や部門に多くを依存しました。企業規模が小さいと自己完結できるのでそうした役割は必要ないのですが、企業規模が大きくなるとそれぞれの部署が特定の役割に特化・細分化されていますから、全体のマネージが重要になります。

マネージを管理(control)だと勘違いされる方のために一言申し上げるなら、マネージは問題点を見出し、課題に落とし、課題を解決するための対策を立案/進捗フォローをすることと、全工程をリソース(ヒト・モノ・カネ)を投じて動かすことです。そのためには、経営に対して提案をし、承認してもらい、承認事項をもって業務命令として実施するプロセスを踏みます。学校と違うところは、こんな良い案があるのですが、「やってもいいですか?」でなく、想定される「成果を引き出すには、これだけのリソースを投じて実施する必要がある」という点です。賛成・反対、好き・嫌いに関係なく、「経営として実施命令を出す」ということですから、承認されたらmust doになります。

そういうこともあり、仕事に国境はなく、米国だけでなく、オーストラリアを含む東南アジア諸国にある子会社ともTV会議やミーティングがしょっちゅうありました。英語は必要条件であり、それ以上でもそれ以下でもありません。業務ですから、自分が通訳をしないといけないことはあっても、通訳がつくことはありません。それに、相手はいつも何人もいて、一人だけということはありません。したがって、中身はどうであれ、すぐに度胸だけはついてしまいます。

英語が必要だとわかり、40過ぎてから4年間、猛烈に英語の勉強をしました。いわゆる自学習。会話は実戦で鍛えられるので、読み・書き、リスニングを中心に勉強しました。そして、ある日、はじめて見る英語の文字ばかりのプレゼンが一目見ただけで何を言いたいのか、わかったのです。もうそのときには、相手が何を言っているかもわかるし、自分がいいたいことも事前に何も準備しなくても喋れるようになっていました。

英語は、喋る能力よりはリーディングとリスニングが重要なのです。それは、自分が喋る間、相手は話し終わるのを待ってくれますが、リーディングとリスニングは私のことなど構わず先へ先へと進むからです。

それで、私も完璧になったものだ、と思ったのですが、よくよく考えてみると、仕事の段取りを覚え、仕事の内容をわかるようになったことで勘が働くようになっただけでした。想定されるテーマと課題の総体に想定外のものはほとんど入る余地がないですから、英語を読むまでもないでしょう。

英語を使う機会がないと勉強に身が入らないのは本当です。しかし、若い人、特に学生さんと30歳前の方には、ぜひ継続的に英語の勉強をするようにお勧めします。大学を卒業してから20年も経ってから勉強するようでは、ダメです。年をとってからの勉強は決して無益、ゼロではないのですが、私の場合、今一歩、完璧に近づけませんでした。20代、30代でせめて1,000冊くらい読んでおけば、きっともっと違ったのではないかと思うのです。後悔先に立たずです。

徒然:Mac OS Xのアプリ開発

Twitterで大学受験に失敗した方が、OS Xのアプリを開発したい、と書き込まれているのが目にとまりました。

それで思い出したことがあります。

少し前にMac OS Xの保守・開発を担当していました。Windows OS分も含めるとかなり大規模な開発でした。

私自身は29歳のときからコードを書いたことがなかったので、エンジニアとしては全く何の役に立ちません。しかし、なんの巡り合わせか知りませんが、事業部長として開発チームと営業チームの面倒をみることになりました。

規模が大きかったので、即戦力で使える方を新規採用し、既存メンバーを補強して対応することにしました。そのためには、人材を集めやすい場所にオフィスを構える必要があり、地下鉄の近くに広いスペースを借りました。

やってみてわかったことは、Windows OSの方は、全く問題がありませんでした。しかし、Mac OSの方は大きな問題を抱え込みました。そうなると泥縄で、さらに陣容を拡充するしかありません。

担当技術者は、当然、まじめで体力もあり、いやがらずに新しいことにチャレンジしてくれました。それは本当にチャレンジでした。おそらく世界広しといえども、まだその仕様に対応したソフトウェアは存在していなかったからです。

しかし、どうしてもうまく行きません。

そして、自分で実際にObjective-CやSwiftでアプリを書くようになってわかったことがあります。調べ物をするのに英語が必要だということです。XcodeもAPI Referenceも全部英語です。それに、OS Xの場合、web検索も日本語よりも英語のほうが豊富です。つまり、新しいことをするつもりなら、英語は相応にできないとすぐに行き詰まります。

このことは、以前、どこかで書いたのですが、その大学受験生のTwitterでまた思い出してしまいました。私のように趣味としてでなく、プログラム開発を仕事としてやるつもりなら、甚だ余計な一言になりますが、ぜひ英語の勉強も同時にされた方がいいと思います。

Swift:MethodAnalyzerバージョンアップ中

先週の土曜日からバージョンアップ作業をしています。

次に何をするか、まだ決まっていません。それで、身近なところで、あれをやっておきたいというものが出てきたので、その機能アップをしています。

もうほぼ修正の最終段階です。コード修正はあと1日か、2日で終わります。逐一、修正箇所が正しく動くかチェックしながら進めています。そうしないと、不整合が出ておかしなことに巻き込まれると、厄介だからです。

修正自体は大きな修正です。機能アップ自体はたいしたことがありません。しかし、重要なことなので着手しました。

3月末までにバージョンアップの登録ができるようにしたいと考えています。

Swift:配列の連結

文字列は+=で簡単に連結できます。配列はどうなのでしょう?

NSMutableArrayを連結する必要が出てきました。

NSMutableArrayの返り値wXをwArrayに溜め込んでいくには、addObjectsFromArrayを使えばいいです。addObjectだと一階層下に配列が入ります。

let wArray:NSMutableArray   = []
var wX:NSMutableArray       = []
var wText:String  = “” 
for var inx = 0; inx < cm.rcPhotoURLArray.count; inx++ {//1ファイルずつ取り出し
wText   = ExecAnalyzeClassFuncComment(cm.rcPhotoURLArray[inx], pIndex:inx) //読み込む
wX = ExecAnalyzeAfterPicupFuncName(wText)//解析

wArray.addObjectsFromArray(wX as [AnyObject]) //マージ
 } 

Swift:文字抽出とブランク

キーワード抽出などのとき、連続する文字列の中からブランクを呼び飛ばします。

ここで気をつけないといけないのが、”  “と” “。なんのことやらわからないと思いますが、2バイト文字の空白とタブをどう扱うか決める必要があります。

そうしないと、たいへんな目にあってしまいます。スペースを除去しているはずなのに、ノイズが入ってくるため”=”や”:”を検出できないことになります。二日間、すっかりこの問題にはまってしまいました。

今回の場合、悪いことに読み込んでいたファイルが違っていたため、状況はさらに悪いでした。あるべき文字列が入ってこないからです。

情けない。疲労困憊しました。スペースを除去するNSStringがどうなっているか、あとで調べる必要があります。ここで躓くと元も子もありません。

Swift:MesaMethodAnalyzerが承認されました。

今朝、AppleからMesaMethodAnalyzerが承認されました。

MesaMethodAnalyzerはソースコードを解析して、メソッド構造をツリー化します。class内部だけで使われている内部メソッド、class外にある外部メソッドを判別するほか、リカーシブ・メソッド(再帰呼び出しメソッド)を認識します。

メソッドには簡単なコメントをつけられ、これをピックアップしたり、無表示にすることができます。また、内部・外部にExec / Callといったプリフィックスをつけることでコードを読みやすくすることも可能です。

このほか、色付け、文字列検索もできます。

このツールは、自分が必要になったので開発しました。元々、何十年もプログラムを書いていませんでしたから、Macプログラムを書くに従い、モジュール構造図を手書きでやっていたら追いつかなくなってしまいました。

最初はコーディングルールを統一することでメソッド名の抽出をエイヤーで行っていました。しかし、もう少し頑張れば少しは役立つものができるかもしれないと思い、自動的に内部・外部・その他メソッドを抽出/解析できるツールまでもってこれました。

そうは言っても、まだまだ初歩的で基本的なところまでしかカバーできていません。今後、機能追加・強化することで少しずつより良いものにする所存です。

Screenshot 2016-02-19 12.40.50

Swift:一時ファイル

アプリで使える一時ファイルについて調べています。

今こそ復習したい、iOSアプリのディレクトリ構成 – Qiitaが参考になります。

iOSとOS Xでは違いがあるのでFile System Programming GuideTable 1-2  Commonly used directories in OS Xを参照しないといけません。

選択肢はつぎのいずれか。

Library

  • Read / Write
  • iOSはiTunesでバックアップされる。OS Xは削除( ?)
    ➡️調べた範囲では、OSXは削除されます。
  • アプリ固有データのみ可(ユーザーデータは不可)。

tmp

  • iOSのみ
  • Read / Write
  • バックアップされない。
  • システムから自動削除されないのでアプリでちゃんと削除する必要がある。

また、OS Xでは、Applications、Library、Network、System、Usersのディレクトリに関して次のように規定しています。

The preceding directories are for storing user documents and media only. Apps must not write files to the preceding directories unless explicitly directed to do so by the user. The sole exception to this rule is the Library directory, which apps may use to store data files needed to support the current user. 

Of the subdirectories, only the Public directory is accessible by other users on the system. Access to the other directories is restricted by default.