技術者プロフィール

はじめに

ここでは、私の技術についてのプロフィールを書いていきます。

少し長い記事ですが、興味を持っていただければ幸いです^^

IT技術に興味を持ったきっかけ

技術ではないですが、私がIT技術者を目指すきっかけを書いておきます。

私がパソコンを使い出したのは6歳ぐらい、とにかくiMacでタイピングの練習をしていました^^「特打」というソフトが面白くてww。8歳ぐらいでブラインドタッチはできるようになっていましたね。あの頃のマウスは子供にもちょうどよかったですww

初めて私がIT技術と出会ったのは14歳の時…好きなMacでたまたま「スクリプトエディタ」を開いた時がきっかけです。AppleScriptを書くためのアプリだったことは知らなかったのですが、インターネット検索で出てきたテストコードを貼り付けると「Hello World!」の文字列がダイアログで現れました。

私は、その時とても感動したんです。プログラミングでパソコンに命令を与えるなんてまだまだ自分には無理だ…と思っていたのに自分の入力した文字が画面に現れている!しかもたった1行で…

私はとにかく夢中でAppleScriptを検索して覚えていきました。今から思うとよくこんなマイナーな言語から始めたなぁ…と思いますが、for文、if文など基本的なことはAppleScriptで覚えたんです。

その後、Excel.VBA、C言語、C++言語…とどんどんプログラミングを必死で勉強していったのがきっかけです。

プログラミング技術

大体経験しているプログラミング言語を習熟度(5段階評価)とともに挙げておきます。

C言語 ☆☆☆☆

C言語の習熟度は大学で習う程度のことは完璧なつもりです。ただ、組込システムやC言語でUIを作った経験などはあまりないです。あくまでプログラミングを勉強する通過点でした。

C++言語 ☆☆☆☆

初めて出会ったオブジェクト指向…難しいというより、感動ものでした。

「まさにこれ、こんな感じで書きたかった~」オブジェクト指向がとても好きになりました。簡単なUIなら作ったこともあります。特に大学では画像処理を専攻していて、OpenCVを使う時には重宝しました。

ただ、現在も好きかどうかというと微妙…実行速度が速いのは良いのですが、注意しないとオブジェクト指向もどきになりがちなような。あとシングルパスコンパイラはやはり使いにくいなぁ…

Java言語 ☆☆☆

WindowsでもMacでも動くゲームを作りたいなぁ…と思った時に使ってみた言語。基本的な構文などは全然大丈夫です。Androidアプリ開発として使った経験はありません(後に書きますがKotlinならあります)。

ただ、現在も好きかどうかというと微妙…特にゲッターとセッターが面倒だな~ww

C#言語 ☆☆☆☆☆

現在最もメインで使っている言語です。とにかく最高^^。C#9.0の構文も使えます!(…というかいつもC#言語のバージョンアップが楽しみでしょうがないww)Linq作った人最強です!とても便利(中毒性あるけど^^;)。

WPF(UWP)・Xamarin.Forms・Xamarin.iOS・Xamarin.Androidを使って、MVVM開発でいうところのModel・ViewModelを共通化する開発は、私がアプリを作成する時の第一選択です。Xamarin.Macはまだ使ったことはないですが(案件がない^^)。

個人的にC#の嫌いなところはNull安全じゃない事ぐらいですかね~(Null安全もどきは導入され始めてますが、まだまだ微妙…)

Excel及びExcelVBA ☆☆☆☆☆

「IT技術に興味を持ったきっかけ」でも少し触れましたが、Excel.VBAは私が14歳の頃から使っている言語!Excelにも自信ありです(というか複雑な処理をすぐVBAで解決しようとする人多いですね…)。「Excelができる人=VBA(マクロ)ができる人」みたいな勘違い?をしている人が多い気がします^^

UI(フォーム)の開発もできます。Excelは結構IT技術者が見落としがちな技術では?と個人的には思っています。案外Excelでアプリレベルのこともできるのに…

仕様書を自動整形するシートや、データをHTMLに変換するシート、勤怠管理(15分単位)シートを作った経験もあります。

とにかくExcelならなんでもお任せあれww(←調子のり)

Kotlin ☆☆☆

実務でAndroidアプリ作成のために半年ほど使ったことがあります。ただ少し忘れてそう…1~2週間あれば一通りは思い出すかな?

Kotlinは個人的にすごく便利な言語だと思いました。スコープ関数(let, also, with, run)は好きですね!あとやはり欠かせないのはNull安全言語であること!

はやくC#にNull安全の整備を~ww

Swift ☆☆☆

こちらも実務でiOSアプリ開発のために半年ほど使ったことがあります。ただ、少し忘れてそう…Kotlinと習熟度は全く同じ感じです。自分が使っていたViewがdeplicatedになっていないか?などは改めて勉強しておかないと!(確かUIWebViewがWKWebView推奨に変わった?あたりで他の開発に移っています。)

これもNull安全言語ですね!StoryBoardやAutoLayoutも便利!…ですがGitで管理するときなどに差分が見づらい(…というかほぼ見れない)のが難点ですね。

まぁ…好きな部類の言語です^^

Objective-C ☆☆

まぁ…一応使ったことはあるし、書けないことはないですが、とても長い…こんなややこしい言語よく作ったなぁ~と思うレベルですww。MRCとARCが混在できてしまうのも気持ち悪い…

あえて長所を挙げるなら、C言語、C++言語のライブラリと適正があることでしょうか?

需要があるなら使いますが、iOSネイティブの新規案件ならSwiftがいいなぁ^^(もちろんXamarin.iOSでも!)

Web関係技術

ここではWeb関係の技術を習熟度(5段階評価)とともに挙げておきます。

HTML ☆☆☆

基本的なタグは一通り覚えたつもりです。HTML5になると少し自信がないかも(今でもdiv多用してます…)

HTML5も時間があれば勉強したいなぁ…

CSS ☆☆

調べながらとりあえず書けます。ただレスポンシブCSSなどはまだ未熟。横幅などによってCSSを変更するのはわかるけど、どうしてスマホ対応にできるんだ?という感じの習熟度です。

もっと上手くなりたいなぁ…

PHP ☆☆☆☆

プログラミング技術とも言えますが一応Web関係に^^

PHPでの動的HTML出力、DBとの連携、リダイレクトなど、初歩的な事は一通り書けます。関数も参考文献は多いのでそこまでストレスなく開発はできてます。

言語としては、スクリプトならではの曖昧な解釈をされるので好きではありませんが、Web関係をやるならこれが一番モダンですしね…暇があったらPerlとかPysonとか試してみよ~^^

JavaScript ☆☆☆

こちらもプログラミング技術といえますがWeb関係に^^

簡単なイベント処理やスタイルをいじるぐらいならできます。jQueryライブラリも使った経験もあります。

ただ、まだまだ自分的には知識足りないと思っています。「こんなエフェクトどうやってJavaScriptで書いたんだろう?」というサイトを見かけることが時たまあるので^^

WordPress ☆☆☆☆

基本、サイト作りはWordPressで作ることが今のところ多いですね。このサイトもWordPressを使用してます。(子)テーマファイルをいじって見た目を変えることもとりあえずできるレベルです。一からテーマを作れと言われるとまだまだですが^^

スマートタグを作ってみた経験などはありますが、WordPressの編集画面にボタンとして表示するなど、顧客が使いやすい様な開発はまだやったことがないなぁ…

SQL(MySQL) ☆☆☆☆

SQLite、MySQLの経験ならあります。基本構文はもちろんですが、設計もプライマリーキー、インデックス、型、ビューぐらいならわかります。ただ、トリガーなどの知識はまだ経験したことがないですね(多分トリガーに相当する処理をPHPで書いてしまっているんでしょう)。

開発手法

ここでは開発手法(環境)の技術を習熟度(5段階評価)とともに挙げておきます。

VisualStudio ☆☆☆☆☆

C#好きならこれが使えないとまずいですよねww

もちろんVisualStudioForMacも大丈夫です(…というかこちらの方が好き^^)。

Xcode ☆☆☆

大昔、Xcode3.0とかの時は頻繁に使っていたんですけどね(C++使っていた時など)。

最近ではSwiftを半年担当した時に少し使ったぐらいです。

Git ☆☆☆☆☆

Gitは最低限開発者として使えないと…とか言いながらCUIは少ししかいじれませんがww

Web関係でGit使っていない人がまだまだ多い気がしますがもったいないなぁと思います。WordPressならまだ少しはわかりますが、特にHTML+CSSでコーディングしている人はGit使うと世界が変わると思います。

Git管理はいいですよ~!

SourceTree ☆☆☆☆☆

Git開発では基本的にSourceTreeを使って開発しています。

Atrassian ~Confuluence~ ☆☆☆

ページの作成は普通にできます。技術とはいえないかもしれないですがww

Atrassian ~JIRA~ ☆☆☆☆

基本一人の開発でもJIRAはよく使っています。テキストやExcel形式でやることを記述するよりもチケットとして管理した方が自分でも整理しやすいし、Bitbucketと連携してくれるのもありがたい。

そして、発注者などに進捗状況を把握してもらう手段としても使えますよね^^

Atrassian ~Bitbucket~ ☆☆☆☆☆

Gitでリモートリポジトリを使うにはこれ!無料でプライベートリポジトリが使えるのはありがたい。

もうわかったと思いますが、基本的に特に要望がない限りプロジェクト管理する時はAtrassianを使っています。

DreamWeaver ☆☆☆

基本的にHTMLやCSSをいじる時はDreamWeaver使っています。

まぁテキストエディタとFTPがくっついた様な感じですね…処理が遅い時も多いのでもっと良い環境があれば乗り換えたいなぁ~とも思います。

少しWordPressとの連携が悪いのがたまにキズ…

Filezilla ☆☆☆☆

少しサーバをいじるだけならFilezillaを使っています。

簡単なソフトなので技術と言えるほどではないですが^^

Emacs 

CUIでテキストいじるならまずEmacsを使う派ですww

普段パソコンをいじる時でも、「下矢印はCtrl+n」「上矢印はCtrl+p」「行頭移動はCtrl+a」などなどEmacsの動かし方で動かしていることが多いので、Emacsのショートカットに対応していないテキストエディタは環境設定で無理矢理置き換えてでもEmacsのショートカットにしているぐらいですww

Macは結構対応してくれているのがありがたいんですが、Windowsは対応していないことが多いですね…「1ページ下はCtrl+v」ですが、「Ctrl+v」といえば貼り付けと被る。CapsLockなんていらないから、Ctrlとは別の名前でもいいからショートカットキーを増やしてくれ~ww

現状、開発環境もUNIX環境が一番!Windowsでももちろん開発できますけどね…

デザイン関係

ここではデザイン関係の技術を習熟度(5段階評価)とともに挙げておきます。

Illustrator ☆☆☆

あんまり創造的なイラストはかけませんが、作図やトレースなどは大丈夫です。

仕様書などのPDFの作成も最近Illustratorで描くのが好きです。

PhotoShop ☆☆

簡単な画像の補正や部分補正、トリミング、テキスト挿入などは大丈夫です。

アプリ開発などで写真の加工を頼まれることはあまりないので趣味程度です^^

研究

[高校時代] 数学(数列・離散数学)

高校生の時に数列の自由研究を行っていました。「1~100まで足したら何になるか?」という疑問から始まり、総和公式(Σの公式)という公式があることを知りましたが、高校では「1^3~100^3」までの公式しか教えてくれません。

  • 「1^4~100^4の合計」はどうやって求めるのか?
  • 「1^2.5~100^2.5合計」はどうやって求めるのか?
  • そもそも公式はどのようにして作れば良いのか?
  • 簡単に公式を作る方法はないのか?
  • 数列の簡単な導出方法(一般項の求め方)はないのか?

など、いろいろな観点から研究を行い、JSECと呼ばれる全国高校生研究発表大会で「文部科学大臣賞」を受賞することができました^^

その後、ISEFと呼ばれる世界高校生研究発表大会に出場しました。

[高校時代] 情報の研究(統計)

昔から情報分野にも興味を持っていたので、情報分野の研究も高校生の時にしています。

迷路をプログラミングでランダムに作らして、その迷路がどれだけ難しい迷路なのか?というテーマで研究を進めました。

情報の技術も必要でしたが、統計学の技術も学べたと思います。

この研究は日本学生科学賞呼ばれる全国高校生研究発表会に出場!…またまた「文部科学大臣賞」を受賞することができました^^

ISEF(世界高校生研究発表大会)への出場権も得たのですが、上述の数学の研究での出場が確定していたため、この研究でISEFへの出場はしていません(出場したかった…T_T)。

[大学時代] 画像処理の研究

当時本当に研究が好きで、「大学教授になりたい!」という夢を持っていました。そこで、大学1年生の頃に研究室に頼み込んで早速研究開始!

選んだテーマは、趣味の囲碁が好きだった事もあり、カメラを用いて囲碁の棋譜(新聞などに載っている番号が振られた表)を自動作成するというものです。さらに、「残り10秒」などの秒読みの機能もつけました。

カメラは碁盤の真上に限定せず、斜めからでも記録できるようにしました。しかし、あまりにも角度が浅いと碁石の厚みで奥の方の碁石が隠れてしまって上手くいかない事も多かったですね。

でも、理想的な環境なら棋譜を記録できるシステムは出来ましたし、1年生の時から自発的に画像処理を学べたという心構えは今でも大事にしている事です^^

大学教授の夢は経済的な理由で断念せざるを得ませんでしたが…本気で夢に向かって頑張った自分の経験は私の貴重な財産だと思っています^^

終わりに

大体書いたつもりですが、書き抜けている技術もあるかもしれないです^^

いろいろなことに挑戦するのが好きなので、新しい技術も積極的に取り入れていくタイプです!

とにかくパソコンでの作業は好きなので、知識0の技術でも大体なんとかなるもんですww。基本的に独学で勉強してきたので、本などを買わなくても検索だけで覚えていってしまうことが多いです。

というより…それが技術者の勉強法なのでは?とか思ってます。本はまだわかりますが、セミナーなどに参加しても、実際に開発する時は調べることになるのだから、調べる技術を育てた方が技術が向上するのでは?と思っています。

特に初心者ほど有料の動画セミナーなどに参加して技術を覚えたがる傾向が見受けられますが結構無駄金になると思います^^。初心者向けの文献なんてそこらへんに転がってます。「3ヶ月でWebデザイナーに!たった10万円!」なんて売り文句はほぼ詐欺だと思ってますww。そんな簡単な世界じゃないし「正社員」とは一言も書いていない…時給数百円のWebデザイナーだって存在しますしね^^。…というより、自発的にWebデザイナーの知識を会得しようとしない時点でWebデザイナー半分失格だと思います。本当のWebデザイナーは、分からない事が合ったら瞬時に検索画面を開いて、自分から技術を学んでますよ^^

上級者になって学ぶべき事が分からなくなってきてから、IT技術者が集まる勉強会などに参加するのはありだと思います。

本も選び方によっては主観が入った技術を覚えてしまったり、著者が全ての使い方を書いていない、そもそも情報が古いこともあるので、公式ドキュメントを見るのが一番だと思ってます。でもパソコンから離れている時に関数辞典とかHTMLタグ辞典みたいなものを流し読みするのはいい勉強法だと思います^^

なんだか最後は勉強法の話に逸れてしまいましたww

長文になってしまいましたが、最後まで読んでいただきありがとうございました。