å€ãã®å Žåãæ¢åã®ã¢ããªã±ãŒã·ã§ã³ãä»ã®ãã©ãããã©ãŒã ã«ç§»æ€ããããæåã«äžåºŠã«è€æ°ã®ãã©ãããã©ãŒã çšã«äœæããå¿
èŠããããŸãã ãã®èšäºã§ã¯ãç¹ã«3ã€ã®ãã©ãããã©ãŒã ã§ã®ã³ãŒãå
±æã®åºæ¬ãæ€èšããŸããã説æããååã¯ãXamarinã䜿çšãããªã©ãä»ã®ãã©ãããã©ãŒã ã§ã®ã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ã®éçºã«ãé©çšã§ããŸãã
çŽ æã¯ããªãããªã¥ãŒã ããã£ãã®ã§ãèšäºã2ã€ã®éšåã«åå²ããããšã«ããŸããã ä»æ¥ã¯åå¿è
åãã®å
±æã®åºæ¬ã«ã€ããŠèª¬æããŸããæ¢ã«åºæ¬çãªã¹ãã«ãããå Žåã¯ããã®èšäºãå®å
šã«ã¹ãããããŠæ¬¡ã®èšäºãåŸ
ã€ããšãã§ããŸããå®éã«ã¯ãããè€éãªã³ãŒãå
±æã·ããªãªãæ€èšããŸãã
次ã«ãã³ãŒããå
±æãã2ã€ã®äž»ãªæ¹æ³ã«ã€ããŠèª¬æããŸãããã¡ã€ã«ãšã©ã€ãã©ãªãå
±éã®ã³ãŒãã«ãªã³ã¯ããæ¹æ³ã§ãã äž¡æ¹ã®ã¢ãããŒããããããã®äž»ãªé·æãšçæãäžè²«ããŠæ€èšããŸãã
0.ã³ããŒãã¡ãããã³ãŒãããå
±æãããå¥ã®äžè¬çãªæ¹æ³-ã³ããŒã«ã€ããŠããã€ãã®èšèãèšããã«ãªã³ã¯ããå§ããããšã¯ã§ããŸããã ç¹å®ã®ãã©ãããã©ãŒã ã®ã³ãŒããã³ããŒããŠå€æŽããã®ãæãç°¡åãªãå
±æãæ¹æ³ã§ãããã»ãšãã©ã®å Žåããã®ã¢ãããŒããéšåçã«äœ¿çšããŸãã ãã ãããã©ã¹ãããã€ãã¹ã®æ¹ãå€ããããå
±æã®äž»ãªååãšã¯èŠãªããŸããã ãã®ã¢ãããŒãã®å©ç¹ïŒå¥ã®ãã©ãããã©ãŒã çšã®äœæ¥ã³ãŒããè¿
éã«ååŸãããšåæã«ãå€æŽãã¡ã€ã³ãã©ãããã©ãŒã ã«åœ±é¿ãäžããããšã¯ãããŸããã çæïŒåãã©ãããã©ãŒã ã®åã³ããŒã§æ¢ã«åãã¿ã€ãã®å€æŽãè¡ãå¿
èŠããããããã¡ã³ããã³ã¹ã¯é«äŸ¡ã§ãã
1.ãªã³ã¯ã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ãèšè¿°ããæãç°¡åã§ãããããæãäžè¬çãªæ¹æ³ã¯ããã¡ã€ã«ããªã³ã¯ããããšã§ãã å€ãã®å Žåãæ¢ã«WP7çšã®æ¢è£œã®ã¢ããªã±ãŒã·ã§ã³ããããWP8çšã®åãã¢ããªã±ãŒã·ã§ã³ïŒãŸãã¯ãã®éïŒãååŸãããå Žåãæ¢åã®ã³ãŒããåçŽã«åå©çšããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£ã«å€æŽãå ããªãããã«èªæãããŸãïŒã¢ãŒããã¯ãã£ããã®ããã«èª¿æŽãããŠããªãå ŽåïŒ ïŒ
ãã®ã¢ãããŒãã段éçã«èŠãŠã¿ãŸãããã
ããšãã°ãéåžžã«ã·ã³ãã«ãªWP8ã¢ããªã±ãŒã·ã§ã³ãäœæããã¡ã€ã³ããŒãžïŒMainPage.XamlïŒã«å€å
žçãªãèšç®æ©ããè¿œå ããŸããããæ°åãå
¥åãã2ã€ã®ããã¹ããã£ãŒã«ããè¿œå ãã¿ã³ãçµæã衚瀺ãããã£ãŒã«ãã§ãã
<StackPanel> <TextBlock Text="A" Style="{StaticResource PhoneTextLargeStyle}"></TextBlock> <TextBox x:Name="TextBoxA" Text=""></TextBox> <TextBlock Text="B" Style="{StaticResource PhoneTextLargeStyle}"></TextBlock> <TextBox x:Name="TextBoxB" Text=""></TextBox> <Button Content="Summ" Click="ButtonBase_OnClick"></Button> <TextBlock x:Name="TextBlockResult" Text="" Style="{StaticResource PhoneTextLargeStyle}"></TextBlock> </StackPanel>
CïŒã³ãŒã
private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { var valueA = Int32.Parse(TextBoxA.Text); var valueB = Int32.Parse(TextBoxB.Text); TextBlockResult.Text = (valueA + valueB).ToString(); }
次ã«ãWP7ã®æ°ãããããžã§ã¯ããSolultionã«è¿œå ããå¿
èŠããããŸãïŒãã¡ã€ã«-è¿œå -æ°ãããããžã§ã¯ã-Windows Phoneã¢ããª-Windows Phone 7ïŒã
ãã®åŸãWP7ãããžã§ã¯ãããMainPage.xamlãåé€ããWP8ãããžã§ã¯ãããMainPage.xamlãžã®ãªã³ã¯ãè¿œå ããå¿
èŠããããŸãã
WP7ãããžã§ã¯ãã®ã³ã³ããã¹ãã¡ãã¥ãŒïŒå³ã¯ãªãã¯ïŒã§ã[è¿œå ]-[æ¢åã®ã¢ã€ãã ]ãéžæããŸãã
次ã«ãWP8ã®ãããžã§ã¯ããã©ã«ããŒã§MainPage.xamlãã¡ã€ã«ïŒãã®ãã¡ã€ã«ã®ã¿ã.csãã¡ã€ã«ãèªåçã«è¿œå ãããŸãïŒãèŠã€ãã[ãªã³ã¯ãšããŠè¿œå ]ãéžæããŸãã
æçµçã«ããããžã§ã¯ãã§æ¬¡ã®ãããªãã®ãååŸããå¿
èŠããããŸãã
æŠããŠãå
±éã®ã³ãŒããæã€ãããžã§ã¯ããååŸããŸãããåãæ¹æ³ã§ãå¿
èŠã«å¿ããŠç»åãapp.xamlããªã³ã¯ã§ããŸãã ããã§ããããžã§ã¯ãã«å€æŽãå ãïŒããšãã°ãæ°å€å
¥åæ€èšŒãè¿œå ïŒãäž¡æ¹ã®ãããžã§ã¯ãã§ãããã®å€æŽãäžåºŠã«ååŸã§ããŸãã
ãŸããããããã£ã§äž¡æ¹ã®ãããžã§ã¯ãã«åãåå空éãæå®ããããšããå§ãããŸãã
é
ããæ©ãããåãã©ãããã©ãŒã ã®æ©èœã«çŽé¢ããŸãã #If / #else / #endifãã£ã¬ã¯ãã£ãã䜿çšããŠãã³ã³ãã€ã«ã·ã³ãã«ã䜿çšããŠãããã®æ©èœãåé¢ã§ããŸãã ããšãã°ãWP8ããã³Win8ãããžã§ã¯ãã§ã¯ApplicationDataã䜿çšããWP7ã§ã¯IsolatedStorageã䜿çšããŠããŒã¿ãä¿åãããšããŸãã
ããšãã°ãWP8ãããžã§ã¯ãã®å Žåã次ã®ã¡ãœããããããŸãã
public async Task SaveText(string text) { var fileBytes = System.Text.Encoding.UTF8.GetBytes(text); var local = ApplicationData.Current.LocalFolder; var dataFolder = await local.CreateFolderAsync("DataFolder", CreationCollisionOption.OpenIfExists); var file = await dataFolder.CreateFileAsync("DataFile.txt", CreationCollisionOption.ReplaceExisting); using (var s = await file.OpenStreamForWriteAsync()) { s.Write(fileBytes, 0, fileBytes.Length); } }
ãããã£ãŠãWP7ã®å Žåãæååãä¿åãã次ã®ã³ãŒãããããŸãã
public void SaveText(string text) { using (var local = IsolatedStorageFile.GetUserStoreForApplication()) { using (var stream = local.CreateFile("DataFile.txt")) { using (var streamWriter = new StreamWriter(stream)) { streamWriter.Write(text); } } } }
ã©ãããã°ã³ãŒããå¯èœãªéãçµã¿åãããããšãã§ããŸããïŒ
ãŸããã¡ãœããã·ã°ããã£ãçµ±äžããå¿
èŠããããŸãã WP8 / Win8ã§éåæ/åŸ
æ©ãæŸæ£ããããWP7ã§éåæããµããŒãããŸãã
ãã¡ãããã°ããºãæåŠããããªãã®ã§ãæåã«éåæããµããŒããããããžã§ã¯ãã§ããWP7ã«Microsoft.Bclãã€ã³ã¹ããŒã«ããŸãã Nugetããã±ãŒãžãããŒãžã£ãŒïŒWP7ã§ãããžã§ã¯ããã¯ãªãã¯ããããã®ã³ã³ããã¹ãã¡ãã¥ãŒ-NuGetããã±ãŒãžã®ç®¡çïŒãŸãã¯æ¬¡ã®ã³ãã³ãã䜿çšããŠNugetã³ã³ãœãŒã«ããã€ã³ã¹ããŒã«ã§ããŸãïŒTools -Nuget Package Manager-Package Manager Consolããã¹ã¿ãžãªã§ã³ã³ãœãŒã«ãéãããšãã§ããŸãïŒïŒ
ã€ã³ã¹ããŒã«ããã±ãŒãžmicrosoft.Bcl
ïŒæ¢å®ã®ãããžã§ã¯ããWP7çšã«éžæããããããžã§ã¯ãã§ããããšã確èªããŠãã ããïŒã
ããã§ãWP7ã§ããã¹ããä¿åããããã®æ¬¡ã®ã³ãŒããäœæã§ããŸãã
public async Task SaveText(string text) { using (var local = IsolatedStorageFile.GetUserStoreForApplication()) { using (var stream = local.CreateFile("DataFile.txt")) { using (var streamWriter = new StreamWriter(stream)) { streamWriter.Write(text); } } } }
WP7ããã³WP8ãã¡ã€ã«ã§ãåãæ¹æ³ãããããŸãã åé¡ã¯ãWP7ãWP8ãWin8ã§ãããžã§ã¯ãã®ã¡ãœããæ¬äœãã©ã®ããã«çµã¿åããããã§ãã
ããã¯ãã³ã³ãã€ã«æåã䜿çšããŠå®è¡ã§ããŸãã ãããããããžã§ã¯ãã«è¿œå ããã®ã¯éåžžã«ç°¡åã§ãã [ãã«ã]ã¿ãã®ãããžã§ã¯ãããããã£ã§ãå¿
èŠãªã³ã³ãã€ã«ã·ã³ãã«ãè¿œå ã§ããŸãïŒããšãã°ãWP7 / WP8 / WIN8ã·ã³ãã«ã奜ãïŒã
ã芧ã®ãšãããæ¢å®ã§æ¢ã«ç»é²ãããŠããWINDOWS_PHONEã·ã³ãã«ã«åŸã£ãŠãWindows 8ãã©ãããã©ãŒã ãšWindows Phoneãã©ãããã©ãŒã ãåé¢ããããšãã§ããŸãã
ã³ã³ãã€ã«ã·ã³ãã«ãã§ããã®ã§ã次ã®ããã«ç°ãªããã©ãããã©ãŒã çšã«ã³ãŒããåå²ã§ããŸãã
public async Task SaveText(string text) { #if WP7 using (var local = IsolatedStorageFile.GetUserStoreForApplication()) { using (var stream = local.CreateFile("DataFile.txt")) { using (var streamWriter = new StreamWriter(stream)) { streamWriter.Write(text); } } } #else var fileBytes = System.Text.Encoding.UTF8.GetBytes(text); var local = ApplicationData.Current.LocalFolder; var file = await local.CreateFileAsync("DataFile.txt", CreationCollisionOption.ReplaceExisting); using (var s = await file.OpenStreamForWriteAsync()) { s.Write(fileBytes, 0, fileBytes.Length); } #endif }
ãã®ãããžã§ã¯ãã§ã³ã³ãã€ã«ãããªãã³ãŒãã«ã¯ç°è²ã®äžç·ãåŒãããŠãããããç°ãªããããžã§ã¯ãã§ã¯ãã¡ãœããã®éžæãç°ãªãããšã«æ³šæããŠãã ããã ãã®å Žåããã¡ã€ã«ã¯WP7ãããžã§ã¯ãã§éãããŠãããWP8ã§ãããžã§ã¯ãå
ã®ãã¡ã€ã«ãéããŠéããšãéžæãå転ããŸãã ã³ã³ãã€ã©ãŒã¯WP8ã®ã³ãŒãããèŠãã
2.å
±æã³ãŒãã®ããã©ã€ãã©ãª2.1ã WP7å
±æã©ã€ãã©ãªWP7ããã³WP8ã®ã¿ã®ãããžã§ã¯ããããå Žåãå¥ã®Windows Phone 7ã©ã€ãã©ãªã§å
±éã³ãŒããéžæãããã®ã©ã€ãã©ãªã2ã€ã®ãããžã§ã¯ãã«äœ¿çšã§ããŸãã ãããè¡ãã«ã¯ãæ°ãããããžã§ã¯ãïŒ[ãã¡ã€ã«]-[è¿œå ]-[æ°ãããããžã§ã¯ã]ïŒWindows Phoneã¯ã©ã¹ã©ã€ãã©ãªãè¿œå ããWindows Phone 7ãã©ãããã©ãŒã ãéžæãããã®äŸã§é»åïŒCalculatorCoreãªã©ïŒã䜿çšããŠååãä»ããŸãã
ãã®ãããžã§ã¯ãã«ããŒãžãè¿œå ããã«ã¯ãMicrosoft.Phoneã©ã€ãã©ãªãžã®ãªã³ã¯ãæ¿å
¥ããå¿
èŠããããŸãã
[ã¢ã»ã³ããª-ãã¬ãŒã ã¯ãŒã¯]ã¿ãã§ïŒ
次ã®ã¹ãããã¯ãWP7ããã³WP8ãããžã§ã¯ãã®Calculator Coreãããžã§ã¯ããžã®ãªã³ã¯ãè¿œå ããããšã§ãã
Referencesã®åãããžã§ã¯ãã«å¯ŸããŠãåæ§ã«ãããžã§ã¯ããžã®ãªã³ã¯ãè¿œå ããŸããããã¯[ãœãªã¥ãŒã·ã§ã³]ã¿ãã«ãããŸãã
ããã§ãMainPageããŒãžããã®å
±æã©ã€ãã©ãªã«è»¢éã§ããŸãã
ãã¹ãŠãæ£ããè¡ãããå Žåããããžã§ã¯ãã®æ§é ã¯æ¬¡ã®ããã«ãªããŸãã
åæ§ã«ãã³ã³ãã³ããããŒã«ã©ã€ãºãUserControlãªã©ãå
±æã©ã€ãã©ãªã«è»¢éã§ããŸãã
ãããžã§ã¯ããæ©èœããããã«ã¯ãæåŸã®æé ãæ®ããŸãããããžã§ã¯ããå¥ã®ã¢ã»ã³ããªã§ãã®ããŒãžãèŠã€ããããã«ã¯ããããã§ã¹ããã¡ã€ã«ïŒWMAppManifest.xmlãã¡ã€ã«ïŒã®åãããžã§ã¯ãã«ãã®ããŒãžãžã®å®å
šãªãªã³ã¯ãè¿œå ããå¿
èŠããããŸãã
ã€ãŸã ãªã³ã¯ã®ä»£ããã«ïŒ
/>
å®å
šãªãã¹ãç»é²ããå¿
èŠããããŸãã
/>
ããã§ããããžã§ã¯ããå®è¡ãããšãããŒãžã衚瀺ãããŸãã ãããã£ãŠã2ã€ã®ç°ãªããããžã§ã¯ããããã1ã€ã®å
±éã®äœæ¥ã³ãŒãããããŸãã 次ã®èšäºã§ã¯ãåãã©ãããã©ãŒã ã®æ©èœã®äœ¿çšæ¹æ³ã«ã€ããŠèª¬æããŸãã
2.2ã ããŒã¿ãã«ã©ã€ãã©ãªå€ãã®å Žåãããã€ãã®WP7 / WP8 / Win8ãã©ãããã©ãŒã éã§ã³ãŒãããããããå¿
èŠããããŸãããããã®ãã©ãããã©ãŒã ã¯ãç°ãªãUIãåããŠããŸãããå
±éã®ããžãã¯ãåããŠããŸãã
ãã®å Žåããã¡ãããäžè¬çãªWP7ã©ã€ãã©ãªã¯æ©èœããŸããã 代ããã«ãããŒã¿ãã«ã©ã€ãã©ãªã®ãããªãããžã§ã¯ãã䜿çšã§ããŸãïŒãã®ã¿ã€ãã®ãããžã§ã¯ãã¯ãWindows Phoneã§ã¯ãªãWindowsãã³ãã¬ãŒãã«ãããŸãïŒã
ã芧ã®ãšãããXamarinã䜿çšããå Žåã¯ãAndroidãšiOSã§ãå
±éã®ã³ãŒãã䜿çšã§ããŸãïŒãçŽç²ãªã圢åŒã§ã¯ãã¹ã¿ãžãªã¯ãã€ã³ãã®ãªãAndroidãšiOSãæäŸããŸãïŒ
ããã§ã¯ã䜿çšãããããžã§ã¯ãã®çš®é¡ãéžæã§ããåæã«ãéžæãããã¹ãŠã®çš®é¡ã®ãããžã§ã¯ãã«ãããã©ãããã©ãŒã æ©èœã®ã¿ã䜿çšããŸãã
ãµããŒããããæ©èœã®ãã詳现ãªãªã¹ãã¯ã
msdn Webãµã€ãã§èŠã€ããããšãã§ããŸãã ãŸãã¯ã
Xamarinã䜿çšããå Žåã
ããã§ã¯ããã®ã©ã€ãã©ãªã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸããã次ã®ããŒãã§ã¯ãã»ãšãã©ã®äŸãããŒã¿ãã«ã©ã€ãã©ãªã«é¢é£ããŠããããã§ãã
ãããã«å®éã«ã¯ãéåžžã«å€ãã®äººã
ãšããŒã ãã³ãŒãå
±æã«é¢ããã¢ããã€ã¹ãæ±ããŠããããããããã®éžæã¯æ瀺å¯èœã§ã¯ãããŸããããã»ãšãã©ã®åå¿è
éçºè
ã¯ãã¡ã€ã«ã®ãªã³ã¯ã奜ãããšãããããŸããã
äžè¬ã«ããã¡ã€ã«ããªã³ã¯ããããšã«ããå
±æã®äººæ°ã¯ããã®ã¢ãããŒãã®å®è£
ã®åçŽããšé床ã«ãããã®ã§ãã ã»ãšãã©ã®å Žåãã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããå¿
èŠã¯ãªããæ¢åã®ã³ãŒãã䜿çšããŠãã³ã³ãã€ã«ã·ã³ãã«ã®å°ããªæ¿å
¥ãè¡ãããã©ãããã©ãŒã ã®æ©èœããã°ãã䜿çšã§ããŸãã ããã©ããããå
±éã®ã³ãŒããæã€ã©ã€ãã©ãªã§ã¯ããã©ãããã©ãŒã æ©èœãç°¡åã«åé¢ã§ããªãããšããããããŸãã次ã®éšåã§ã¯ããã®ç¹ã«ã€ããŠè©³ãã説æããŸãã
ãã¡ã€ã«ãªã³ã¯ã®ã¢ãããŒãã«ã¯2ã€ã®é倧ãªæ¬ ç¹ããããŸãããã®ããã䜿çšããªãããã«ããŠããŸãã
- 倧èŠæš¡ãããžã§ã¯ãã§ã¯ãã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ãšã¡ã³ããã³ã¹ã¯éåžžã«è€éã§ããããã¯ãã³ã³ãã€ã©ãšã¹ã¿ãžãªããã³ã³ãã€ã«ã·ã³ãã«ã§åºåãããã³ãŒããèŠãªãããã§ãã
- æ°ãããã©ãããã©ãŒã ãŸãã¯æ°ãããœãããŠã§ã¢ãè¿œå ããå Žåããã®ã³ãŒãã䜿çšããã«ã¯ãããããã¹ãŠã®å€æŽãç¹°ãè¿ãè¡ãå¿
èŠããããå€ãã®å Žåããã¹ãŠã®ã³ã³ãã€ã«ã·ã³ãã«ã«å€æŽãå ããŸãã ã³ãŒãã®ã¡ã³ããã³ã¹ã¯æã
è€éã§ãã
å
±æã©ã€ãã©ãªã®ã¢ãããŒãã®äž»ãªæ¬ ç¹ã¯ãããå€ãã®ã³ãŒããå¿
èŠãªããšã§ãïŒãã ããããã¯ã¡ã³ããã³ã¹ã®å®¹æãã«ãã£ãŠçžæ®ºãããŸãïŒã ãŸããã³ãŒãã®å質ãäœããããžã§ã¯ãã§ã¯ããã®æ¹æ³ã¯é©ããŠããŸããã ããŸããŸãªããŒã ã®åè°ã®äžã§ãç§ã¯ãå
±éã®ã©ã€ãã©ãªã䜿çšããããã«ãããŒã ããããžã§ã¯ããããããã«ãããããã«ããªã倧ãããŠèšå€§ãªäœæ¥ãè¡ããªããã°ãªããªããšããäºå®ã«ç¹°ãè¿ãééããŸããã ãããäžæ¹ã§ãã³ãŒããå
±æããå¿
èŠããããšèããå¿
èŠãããããã®ããã«äžè¬çãªããžãã¯ãéæ¥çã«åŒ·èª¿ããå¿
èŠããããããã³ãŒãã®å質ãåäžããŸããã
æŽæ°ããŸãããã«ãäŒè°ã§ã¯ãæ°ããã¿ã€ãã®UniversalAppsãããžã§ã¯ãã瀺ãããŸãããããã«ãããW8.1ããã³WP8.1çšã®åäžã®ã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããã 詳现ã«ã€ããŠã¯ãçŽ æŽãããèè
shwarsãæžãã
èšäºã ã芧ãã ããã